File NonSymmetricIPM.h

template<class T>
class Instance

Public Members

Constraints<T> constraints
LHSCB<T> *barrier
template<class T>
class DirectionDecomposition

Public Functions

inline DirectionDecomposition(Vector<T> v, unsigned const n, unsigned const m)

Public Members

Vector<T> y
Vector<T> x
Vector<T> s
T kappa
T tau

Friends

friend std::ostream &operator<<(std::ostream &os, const DirectionDecomposition<T> &dir)
template<class T>
class ErrorConstants

Public Functions

inline ErrorConstants()
template<class U>
inline ErrorConstants(const ErrorConstants<U> other)
inline void set(Matrix<T> A, Vector<T> b, Vector<T> c)

Public Members

T primal
T dual
T complementary
template<typename IPMDouble>
class NonSymmetricIPM

Public Types

enum Termination

Values:

enumerator SUCCESS
enumerator FAILURE

Public Functions

NonSymmetricIPM(Matrix &A_, Vector &b_, Vector &c_, LHSCB<IPMDouble> *barrier_)
inline NonSymmetricIPM(Instance<IPMDouble> &instance)
NonSymmetricIPM(Instance<IPMDouble>&, std::string)
template<typename T>
inline void cast_members_from(const NonSymmetricIPM<T> &other)
template<typename T>
inline NonSymmetricIPM<T> *cast_with_product_barrier()
inline IPMDouble calc_step_length_predictor()
int run_solver()
inline IPMDouble primal_error()
inline IPMDouble dual_error()
inline IPMDouble primal_error_rescaled()
inline IPMDouble dual_error_rescaled()
inline IPMDouble duality_gap()
inline IPMDouble complementarity()
inline bool verify_solution(IPMDouble precision = 10e-5)
inline Solution<IPMDouble> get_solution()
void initialize()

Public Members

std::shared_ptr<spdlog::logger> _logger
std::shared_ptr<spdlog::logger> _benchmark_logger
Matrix A
Vector b
Vector c
Eigen::SparseMatrix<IPMDouble> A_sparse
Matrix _basis_ker_A
Vector x
Vector y
Vector s
pt::ptree _config
unsigned _num_predictor_steps = 500
unsigned _num_corrector_steps
IPMDouble _param_step_length_predictor = 0.02
IPMDouble _step_length_predictor
IPMDouble _step_length_corrector
IPMDouble _epsilon = 10e-5
unsigned _total_num_line_steps
IPMDouble _large_neighborhood
IPMDouble _small_neighborhood
bool _check_centrality_in_every_segment = true
bool _type_cast_if_unsuccessful = true
bool _use_line_search = true
IPMDouble kappa
IPMDouble tau
Vector _last_predictor_direction
ErrorConstants<IPMDouble> _err_consts

Private Types

typedef Matrix<IPMDouble> Matrix
typedef Vector<IPMDouble> Vector

Private Functions

void set_configuration_variables()
bool terminate()
bool terminate_successfully_wrapper()
bool terminate_successfully()
bool terminate_infeasible_wrapper()
bool terminate_infeasible()
IPMDouble mu()
Vector psi(IPMDouble t)
std::vector<std::pair<Vector, Vector>> solve_andersen_andersen_subsystem(std::vector<std::pair<Vector, Vector>>&)
Vector andersen_andersen_solve(Vector const)
Vector solve(Matrix&, Vector const)
Vector create_predictor_RHS()
Vector create_corrector_RHS()
Vector solve_predictor_system()
Vector solve_corrector_system()
IPMDouble centrality()
void print_status()
void apply_update(Vector concat)
Vector build_update_vector()
void test_gradient()
void test_hessian()

Private Members

cxxtimer::Timer _predictor_timer
cxxtimer::Timer _corrector_timer
cxxtimer::Timer _andersen_sys_timer
cxxtimer::Timer _centrality_timer
std::vector<cxxtimer::Timer> _custom_timers
cxxtimer::Timer _general_method_timer
cxxtimer::Timer _total_runtime_timer
Vector _stored_x_centrality
Vector _stored_s_centrality
IPMDouble _stored_centrality_error
LHSCB<IPMDouble> *_barrier