Class SQPASEVariation1
- java.lang.Object
-
- dev.nm.solver.multivariate.constrained.general.sqp.activeset.equalityconstraint.SQPASEVariation1
-
- All Implemented Interfaces:
SQPASEVariation
- Direct Known Subclasses:
SQPASEVariation2
public class SQPASEVariation1 extends Object implements SQPASEVariation
This implementation is a modified version of the algorithm in the reference to solve a general constrained minimization problem using Sequential Quadratic Programming.
-
-
Field Summary
Fields Modifier and Type Field Description protected List<RealScalarFunction>
a
protected int
discretization
protected double
epsilon
protected RealScalarFunction
f
protected boolean
foundPositiveDefiniteHessian
protected double
lower
protected int
p
protected double
r
-
Constructor Summary
Constructors Constructor Description SQPASEVariation1()
Construct a variation.SQPASEVariation1(double r, double lower, int discretization)
Construct a variation.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description double
alpha(Vector x, Vector d, Vector v)
Get the percentage increment along the minimizer increment direction.Matrix
getInitialHessian(Vector x0, Vector v0)
Get the initial Hessian matrix.void
set(RealScalarFunction f, EqualityConstraints equal)
Associate this variation to a particular general constrained minimization problem with only equality constraints.Matrix
updateHessian(Vector x1, Vector v1, Vector d, Vector g0, Matrix A0, Matrix W0)
Update the Hessian matrix using the latest iterates.protected Matrix
W(Vector x, Vector u)
Compute W.
-
-
-
Field Detail
-
f
protected RealScalarFunction f
-
a
protected List<RealScalarFunction> a
-
p
protected int p
-
r
protected final double r
-
lower
protected final double lower
-
discretization
protected final int discretization
-
foundPositiveDefiniteHessian
protected boolean foundPositiveDefiniteHessian
-
epsilon
protected final double epsilon
-
-
Constructor Detail
-
SQPASEVariation1
public SQPASEVariation1(double r, double lower, int discretization)
Construct a variation.- Parameters:
r
- Han's exact penalty function coefficient, the bigger the better, e.g., eq. 15.20lower
- the lower bound of alpha; the smaller the better but cannot be zerodiscretization
- the number of points between [lower, 1] to search for alpha; the bigger the better
-
SQPASEVariation1
public SQPASEVariation1()
Construct a variation.
-
-
Method Detail
-
set
public void set(RealScalarFunction f, EqualityConstraints equal)
Associate this variation to a particular general constrained minimization problem with only equality constraints.- Parameters:
f
- the objective function to be minimizedequal
- the equality constraints
-
getInitialHessian
public Matrix getInitialHessian(Vector x0, Vector v0)
Description copied from interface:SQPASEVariation
Get the initial Hessian matrix.- Specified by:
getInitialHessian
in interfaceSQPASEVariation
- Parameters:
x0
- the initial minimizerv0
- the initial Lagrange multipliers for inequality constraints (mu)- Returns:
- the initial Hessian matrix, e.g., identity
-
W
protected Matrix W(Vector x, Vector u)
Compute W.- Parameters:
x
- the current minimizeru
- the Lagrange multipliers for inequality constraints (mu)- Returns:
- W
- See Also:
- "15.4b"
-
updateHessian
public Matrix updateHessian(Vector x1, Vector v1, Vector d, Vector g0, Matrix A0, Matrix W0)
Description copied from interface:SQPASEVariation
Update the Hessian matrix using the latest iterates.- Specified by:
updateHessian
in interfaceSQPASEVariation
- Parameters:
x1
- the next minimizerv1
- the next Lagrange multipliers for inequality constraints (mu)d
- the minimizer incrementg0
- the gradientA0
- the set of active equality constraintsW0
- the current Hessian matrix- Returns:
- the next Hessian matrix
-
alpha
public double alpha(Vector x, Vector d, Vector v)
Description copied from interface:SQPASEVariation
Get the percentage increment along the minimizer increment direction.- Specified by:
alpha
in interfaceSQPASEVariation
- Parameters:
x
- the current minimizerd
- the minimizer incrementv
- the Lagrange multipliers for inequality constraints (mu)- Returns:
- the percentage increment
-
-