|
| ActiveSetSolver (const PROBLEM &problem) |
| Constructor.
|
|
std::pair< VectorValues, VectorValues > | optimize (const VectorValues &initialValues, const VectorValues &duals=VectorValues(), bool useWarmStart=false) const |
|
std::pair< VectorValues, VectorValues > | optimize () const |
|
GaussianFactorGraph | buildDualGraph (const InequalityFactorGraph &workingSet, const VectorValues &delta) const |
| Just for testing... More...
|
|
GaussianFactorGraph | buildWorkingGraph (const InequalityFactorGraph &workingSet, const VectorValues &xk=VectorValues()) const |
|
State | iterate (const State &state) const |
| Iterate 1 step, return a new state with a new workingSet and values.
|
|
InequalityFactorGraph | identifyActiveConstraints (const InequalityFactorGraph &inequalities, const VectorValues &initialValues, const VectorValues &duals=VectorValues(), bool useWarmStart=false) const |
| Identify active constraints based on initial values.
|
|
int | identifyLeavingConstraint (const InequalityFactorGraph &workingSet, const VectorValues &lambdas) const |
| Identifies active constraints that shouldn't be active anymore.
|
|
template<class PROBLEM, class POLICY, class INITSOLVER>
class gtsam::ActiveSetSolver< PROBLEM, POLICY, INITSOLVER >
This class implements the active set algorithm for solving convex Programming problems.
- Template Parameters
-
PROBLEM | Type of the problem to solve, e.g. LP (linear program) or QP (quadratic program). |
POLICY | specific detail policy tailored for the particular program |
INITSOLVER | Solver for an initial feasible solution of this problem. |
template<class PROBLEM , class POLICY , class INITSOLVER >
Compute minimum step size alpha to move from the current point xk
to the next feasible point along a direction p:
x' = xk + alpha*p, where alpha \(\in\) [0,maxAlpha].
For QP, maxAlpha = 1. For LP: maxAlpha = Inf.
- Returns
- a tuple of (minAlpha, closestFactorIndex) where closestFactorIndex is the closest inactive inequality constraint that blocks xk to move further and that has the minimum alpha, or (-1, maxAlpha) if there is no such inactive blocking constraint.
If there is a blocking constraint, the closest one will be added to the working set and become active in the next iteration.