KrisLibrary
1.0.0
|
Same as MinimizationProblem but with nonlinear constraints C(x)=0 and D(x)<=0, bound constraints bmin/bmax. More...
#include <Minimization.h>
Public Member Functions | |
ConstrainedMinimizationProblem (ScalarFieldFunction *f, VectorFieldFunction *C, VectorFieldFunction *D) | |
ConvergenceResult | SolveGD (int &maxIters) |
Gradient descent. | |
ConvergenceResult | StepGD () |
Returns MaxItersReached on normal exit. | |
ConvergenceResult | SolveNewton (int &maxIters) |
Newton iteration. | |
ConvergenceResult | StepNewton () |
Returns MaxItersReached on normal exit. | |
ConvergenceResult | StepTR (Real R) |
void | NullspaceProjection (const Vector &x, Vector &dx) |
Helper to project grad onto the constraint nullspace. | |
ConvergenceResult | LineMinimizationStep (const Vector &dx, Real &alpha0) |
Helper for line minimzation – like above, but on the manifold surface. | |
bool | CheckPoint (const Vector &x) const |
Helper to check point feasibility. | |
bool | SolveFeasiblePoint (Vector &x, int maxIters, ConvergenceResult *res=NULL) |
Helper to solve for a feasible point. | |
Public Attributes | |
ScalarFieldFunction * | f |
VectorFieldFunction * | C |
VectorFieldFunction * | D |
Vector | bmin |
Vector | bmax |
Vector | x |
Real | tolx |
Real | tolf |
Real | tolgrad |
Real | tolc |
bool | sparse |
int | verbose |
std::vector< Vector > * | S |
Real | fx |
Vector | grad |
Matrix | H |
ConstrainedNewtonRoot | rootSolver |
Same as MinimizationProblem but with nonlinear constraints C(x)=0 and D(x)<=0, bound constraints bmin/bmax.
Performs the line search while maintaining feasibility on the constraint manifold. The initial point must lie in the feasibility set. This isn't really a well established minimization technique and hasn't been tested thoroughly.
StepTR performs a sequential linear programming step with a given trust region. We could implement SQP, but other libraries would probably be better.
If sparse is set to true, C and D are assumed to be subclasses of SparseVectorFunction. Undefined behavior if this does not hold!
ConvergenceResult Optimization::ConstrainedMinimizationProblem::StepTR | ( | Real | R | ) |
Gradient-based trust-region method Returns MaxItersReached on normal exit, LocalMinimum if R should be increased, Divergence if it should be reduced