Public Member Functions | Public Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
eiquadprog::solvers::EiquadprogFast Class Reference

#include <eiquadprog-fast.hpp>

Public Member Functions

EIGEN_MAKE_ALIGNED_OPERATOR_NEW EiquadprogFast ()
 
const VectorXigetActiveSet () const
 
size_t getActiveSetSize () const
 
int getIteratios () const
 
const VectorXdgetLagrangeMultipliers () const
 
int getMaxIter () const
 
double getObjValue () const
 
void reset (size_t dim_qp, size_t num_eq, size_t num_ineq)
 
bool setMaxIter (int maxIter)
 
EiquadprogFast_status solve_quadprog (const MatrixXd &Hess, const VectorXd &g0, const MatrixXd &CE, const VectorXd &ce0, const MatrixXd &CI, const VectorXd &ci0, VectorXd &x)
 
virtual ~EiquadprogFast ()
 

Public Attributes

bool is_inverse_provided_
 
MatrixXd m_J
 

Private Types

typedef Eigen::MatrixXd MatrixXd
 
typedef Eigen::VectorXd VectorXd
 
typedef Eigen::VectorXi VectorXi
 

Private Member Functions

bool add_constraint (MatrixXd &R, MatrixXd &J, VectorXd &d, size_t &iq, double &R_norm)
 
void compute_d (VectorXd &d, const MatrixXd &J, const VectorXd &np)
 
void delete_constraint (MatrixXd &R, MatrixXd &J, VectorXi &A, VectorXd &u, size_t nEqCon, size_t &iq, size_t l)
 
void update_r (const MatrixXd &R, VectorXd &r, const VectorXd &d, size_t iq)
 
void update_z (VectorXd &z, const MatrixXd &J, const VectorXd &d, size_t iq)
 

Private Attributes

VectorXi A
 
VectorXi A_old
 
Eigen::LLT< MatrixXd, Eigen::Lower > chol_
 current value of cost function More...
 
VectorXd d
 J' np. More...
 
double f_value
 max number of active-set iterations More...
 
VectorXi iaexcl
 
VectorXi iai
 
int iter
 number of active-set iterations More...
 
int m_maxIter
 
size_t m_nEqCon
 
size_t m_nIneqCon
 
size_t m_nVars
 
VectorXd np
 current constraint normal More...
 
size_t q
 
MatrixXd R
 
VectorXd r
 infeasibility multipliers, i.e. negative step direction in dual space More...
 
VectorXd s
 CI*x+ci0. More...
 
VectorXd u
 Lagrange multipliers. More...
 
VectorXd u_old
 
VectorXd x_old
 
VectorXd z
 step direction in primal space More...
 

Detailed Description

Definition at line 78 of file eiquadprog-fast.hpp.

Member Typedef Documentation

◆ MatrixXd

typedef Eigen::MatrixXd eiquadprog::solvers::EiquadprogFast::MatrixXd
private

Definition at line 79 of file eiquadprog-fast.hpp.

◆ VectorXd

typedef Eigen::VectorXd eiquadprog::solvers::EiquadprogFast::VectorXd
private

Definition at line 80 of file eiquadprog-fast.hpp.

◆ VectorXi

typedef Eigen::VectorXi eiquadprog::solvers::EiquadprogFast::VectorXi
private

Definition at line 81 of file eiquadprog-fast.hpp.

Constructor & Destructor Documentation

◆ EiquadprogFast()

eiquadprog::solvers::EiquadprogFast::EiquadprogFast ( )

Definition at line 8 of file src/eiquadprog-fast.cpp.

◆ ~EiquadprogFast()

eiquadprog::solvers::EiquadprogFast::~EiquadprogFast ( )
virtual

Definition at line 18 of file src/eiquadprog-fast.cpp.

Member Function Documentation

◆ add_constraint()

bool eiquadprog::solvers::EiquadprogFast::add_constraint ( MatrixXd R,
MatrixXd J,
VectorXd d,
size_t &  iq,
double &  R_norm 
)
inlineprivate

Definition at line 45 of file src/eiquadprog-fast.cpp.

◆ compute_d()

void eiquadprog::solvers::EiquadprogFast::compute_d ( VectorXd d,
const MatrixXd J,
const VectorXd np 
)
inlineprivate

Definition at line 208 of file eiquadprog-fast.hpp.

◆ delete_constraint()

void eiquadprog::solvers::EiquadprogFast::delete_constraint ( MatrixXd R,
MatrixXd J,
VectorXi A,
VectorXd u,
size_t  nEqCon,
size_t &  iq,
size_t  l 
)
inlineprivate

Definition at line 120 of file src/eiquadprog-fast.cpp.

◆ getActiveSet()

const VectorXi& eiquadprog::solvers::EiquadprogFast::getActiveSet ( ) const
inline

Return the active set, namely the indeces of active constraints. The first nEqCon indexes are for the equalities and are negative. The last nIneqCon indexes are for the inequalities and start from 0. Only the first q elements of the return vector are valid, where q is the size of the active set.

Returns
The set of indexes of the active constraints.

Definition at line 128 of file eiquadprog-fast.hpp.

◆ getActiveSetSize()

size_t eiquadprog::solvers::EiquadprogFast::getActiveSetSize ( ) const
inline
Returns
The size of the active set, namely the number of active constraints (including the equalities).

Definition at line 103 of file eiquadprog-fast.hpp.

◆ getIteratios()

int eiquadprog::solvers::EiquadprogFast::getIteratios ( ) const
inline
Returns
The number of active-set iteratios.

Definition at line 108 of file eiquadprog-fast.hpp.

◆ getLagrangeMultipliers()

const VectorXd& eiquadprog::solvers::EiquadprogFast::getLagrangeMultipliers ( ) const
inline
Returns
The Lagrange multipliers

Definition at line 118 of file eiquadprog-fast.hpp.

◆ getMaxIter()

int eiquadprog::solvers::EiquadprogFast::getMaxIter ( ) const
inline

Definition at line 91 of file eiquadprog-fast.hpp.

◆ getObjValue()

double eiquadprog::solvers::EiquadprogFast::getObjValue ( ) const
inline
Returns
The value of the objective function.

Definition at line 113 of file eiquadprog-fast.hpp.

◆ reset()

void eiquadprog::solvers::EiquadprogFast::reset ( size_t  dim_qp,
size_t  num_eq,
size_t  num_ineq 
)

Definition at line 20 of file src/eiquadprog-fast.cpp.

◆ setMaxIter()

bool eiquadprog::solvers::EiquadprogFast::setMaxIter ( int  maxIter)
inline

Definition at line 93 of file eiquadprog-fast.hpp.

◆ solve_quadprog()

EiquadprogFast_status eiquadprog::solvers::EiquadprogFast::solve_quadprog ( const MatrixXd Hess,
const VectorXd g0,
const MatrixXd CE,
const VectorXd ce0,
const MatrixXd CI,
const VectorXd ci0,
VectorXd x 
)

solves the problem min. x' Hess x + 2 g0' x s.t. CE x + ce0 = 0 CI x + ci0 >= 0

Definition at line 189 of file src/eiquadprog-fast.cpp.

◆ update_r()

void eiquadprog::solvers::EiquadprogFast::update_r ( const MatrixXd R,
VectorXd r,
const VectorXd d,
size_t  iq 
)
inlineprivate

Definition at line 225 of file eiquadprog-fast.hpp.

◆ update_z()

void eiquadprog::solvers::EiquadprogFast::update_z ( VectorXd z,
const MatrixXd J,
const VectorXd d,
size_t  iq 
)
inlineprivate

Definition at line 216 of file eiquadprog-fast.hpp.

Member Data Documentation

◆ A

VectorXi eiquadprog::solvers::EiquadprogFast::A
private

active set (indeces of active constraints) the first nEqCon indeces are for the equalities and are negative the last nIneqCon indeces are for the inequalities are start from 0

Definition at line 179 of file eiquadprog-fast.hpp.

◆ A_old

VectorXi eiquadprog::solvers::EiquadprogFast::A_old
private

Definition at line 195 of file eiquadprog-fast.hpp.

◆ chol_

Eigen::LLT<MatrixXd, Eigen::Lower> eiquadprog::solvers::EiquadprogFast::chol_
private

current value of cost function

Definition at line 152 of file eiquadprog-fast.hpp.

◆ d

VectorXd eiquadprog::solvers::EiquadprogFast::d
private

J' np.

Definition at line 171 of file eiquadprog-fast.hpp.

◆ f_value

double eiquadprog::solvers::EiquadprogFast::f_value
private

max number of active-set iterations

Definition at line 150 of file eiquadprog-fast.hpp.

◆ iaexcl

VectorXi eiquadprog::solvers::EiquadprogFast::iaexcl
private

initialized as [1, ..., 1, .] if iaexcl(i)!=1 inequality constraint i cannot be added to the active set if adding ineq constraint i fails => iaexcl(i)=0 iaexcl(i)=0 iff ineq constraint i is linearly dependent to other active constraints iaexcl(i)=1 otherwise

Definition at line 191 of file eiquadprog-fast.hpp.

◆ iai

VectorXi eiquadprog::solvers::EiquadprogFast::iai
private

initialized as K \ A iai(i)=-1 iff inequality constraint i is in the active set iai(i)=i otherwise

Definition at line 184 of file eiquadprog-fast.hpp.

◆ is_inverse_provided_

bool eiquadprog::solvers::EiquadprogFast::is_inverse_provided_

Definition at line 142 of file eiquadprog-fast.hpp.

◆ iter

int eiquadprog::solvers::EiquadprogFast::iter
private

number of active-set iterations

Definition at line 206 of file eiquadprog-fast.hpp.

◆ m_J

MatrixXd eiquadprog::solvers::EiquadprogFast::m_J

Definition at line 141 of file eiquadprog-fast.hpp.

◆ m_maxIter

int eiquadprog::solvers::EiquadprogFast::m_maxIter
private

Definition at line 149 of file eiquadprog-fast.hpp.

◆ m_nEqCon

size_t eiquadprog::solvers::EiquadprogFast::m_nEqCon
private

Definition at line 146 of file eiquadprog-fast.hpp.

◆ m_nIneqCon

size_t eiquadprog::solvers::EiquadprogFast::m_nIneqCon
private

Definition at line 147 of file eiquadprog-fast.hpp.

◆ m_nVars

size_t eiquadprog::solvers::EiquadprogFast::m_nVars
private

Definition at line 145 of file eiquadprog-fast.hpp.

◆ np

VectorXd eiquadprog::solvers::EiquadprogFast::np
private

current constraint normal

Definition at line 174 of file eiquadprog-fast.hpp.

◆ q

size_t eiquadprog::solvers::EiquadprogFast::q
private

size of the active set A (containing the indices of the active constraints)

Definition at line 203 of file eiquadprog-fast.hpp.

◆ R

MatrixXd eiquadprog::solvers::EiquadprogFast::R
private

from QR of L' N, where L is Cholewsky factor of Hessian, and N is the matrix of active constraints

Definition at line 156 of file eiquadprog-fast.hpp.

◆ r

VectorXd eiquadprog::solvers::EiquadprogFast::r
private

infeasibility multipliers, i.e. negative step direction in dual space

Definition at line 162 of file eiquadprog-fast.hpp.

◆ s

VectorXd eiquadprog::solvers::EiquadprogFast::s
private

CI*x+ci0.

Definition at line 159 of file eiquadprog-fast.hpp.

◆ u

VectorXd eiquadprog::solvers::EiquadprogFast::u
private

Lagrange multipliers.

Definition at line 165 of file eiquadprog-fast.hpp.

◆ u_old

VectorXd eiquadprog::solvers::EiquadprogFast::u_old
private

Definition at line 194 of file eiquadprog-fast.hpp.

◆ x_old

VectorXd eiquadprog::solvers::EiquadprogFast::x_old
private

Definition at line 193 of file eiquadprog-fast.hpp.

◆ z

VectorXd eiquadprog::solvers::EiquadprogFast::z
private

step direction in primal space

Definition at line 168 of file eiquadprog-fast.hpp.


The documentation for this class was generated from the following files:


eiquadprog
Author(s): Gabriele Buondonno, Andrea Del Prete, Luca Di Gaspero, Angelo Furfaro, Benjamin Stephens, Gael Guennebaud
autogenerated on Wed May 28 2025 02:55:57