Package de.labathome.trustconstr
Class CombinedConstraint
java.lang.Object
de.labathome.trustconstr.CombinedConstraint
- All Implemented Interfaces:
Constraint,Jacobian
Concatenation of several
LinearConstraint / NonlinearConstraint
objects into a single Constraint + Jacobian that the
orchestrator can pass straight to
EqualityConstrainedSQP.eqSQP(de.labathome.trustconstr.interfaces.IFunctionAndConstraint, de.labathome.trustconstr.interfaces.IGradientAndJacobian, de.labathome.trustconstr.interfaces.LagrangeHessian, de.labathome.trustconstr.matrix.Matrix, double, de.labathome.trustconstr.matrix.Matrix, de.labathome.trustconstr.matrix.Matrix, de.labathome.trustconstr.matrix.Matrix, de.labathome.trustconstr.interfaces.StoppingCriterion, de.labathome.trustconstr.records.State, double, double, de.labathome.trustconstr.enums.ProjectionMethod, de.labathome.trustconstr.matrix.Matrix, de.labathome.trustconstr.matrix.Matrix, de.labathome.trustconstr.interfaces.LinearOperator) or
TrustRegionInteriorPoint.trustRegionInteriorPoint(java.util.function.ToDoubleBiFunction<de.labathome.trustconstr.matrix.Matrix, java.lang.Object>, java.util.function.BiFunction<de.labathome.trustconstr.matrix.Matrix, java.lang.Object, de.labathome.trustconstr.matrix.Matrix>, de.labathome.trustconstr.interfaces.LagrangeHessian, int, int, int, de.labathome.trustconstr.interfaces.Constraint, de.labathome.trustconstr.interfaces.Jacobian, de.labathome.trustconstr.matrix.Matrix, double, de.labathome.trustconstr.matrix.Matrix, de.labathome.trustconstr.matrix.Matrix, de.labathome.trustconstr.matrix.Matrix, de.labathome.trustconstr.matrix.Matrix, de.labathome.trustconstr.matrix.Matrix, de.labathome.trustconstr.interfaces.GlobalStoppingCriteria, boolean[], double, de.labathome.trustconstr.records.State, double, double, double, double, de.labathome.trustconstr.enums.ProjectionMethod).
The combined constraint stacks all equality rows from all sources, then
all inequality rows from all sources. This mirrors scipy's
CanonicalConstraint.concatenate on a smaller scale (without the
Hessian-of-Lagrangian aggregation, which the orchestrator currently doesn't
use for nonlinear constraints).
Each input must implement both Constraint and Jacobian
and expose its nEq() / nIneq() via the value-class types
LinearConstraint or NonlinearConstraint.
-
Constructor Summary
ConstructorsConstructorDescriptionCombinedConstraint(Object[] sources, int nVars) CombinedConstraint(List<C> sources, int nVars) Convenience constructor accepting aListof source constraints. -
Method Summary
Modifier and TypeMethodDescriptionconstrIneq(Matrix x) boolean[]Concatenated per-canonical-inequality-rowenforceFeasibilityflags across all sources, in the same order they appear inconstrIneq(Matrix).lagrangianContribution(Matrix x, double[] vEq, double[] vIneq) Sum of constraint-Hessian-of-Lagrangian contributions across all sources.intnEq()intnIneq()voidWalk all sources and validate that any row markedkeep_feasible=Trueis satisfied atx0.
-
Constructor Details
-
CombinedConstraint
Convenience constructor accepting aListof source constraints.- Type Parameters:
C- element type ofsources- Parameters:
sources- element type must beLinearConstraintorNonlinearConstraintnVars- number of decision variables
-
CombinedConstraint
- Parameters:
sources- mix ofLinearConstraintandNonlinearConstraintinstances; rows are concatenated in declaration ordernVars- number of decision variables
-
-
Method Details
-
nEq
public int nEq()- Returns:
- total number of equality rows across all sources
-
nIneq
public int nIneq()- Returns:
- total number of canonical inequality rows across all sources
-
enforceFeasibilityIneq
public boolean[] enforceFeasibilityIneq()Concatenated per-canonical-inequality-rowenforceFeasibilityflags across all sources, in the same order they appear inconstrIneq(Matrix). Length matchesnIneq().- Returns:
- per-row strict-feasibility flags, length
nIneq()
-
validateKeepFeasibleAtStart
Walk all sources and validate that any row markedkeep_feasible=Trueis satisfied atx0. ThrowsIllegalArgumentExceptionon the first violation.- Parameters:
x0- starting iterate (n x 1)
-
constrEq
- Specified by:
constrEqin interfaceConstraint- Parameters:
x- current iterate (n × 1)- Returns:
- equality-constraint residual (
nEq × 1)
-
constrIneq
- Specified by:
constrIneqin interfaceConstraint- Parameters:
x- current iterate (n × 1)- Returns:
- inequality-constraint residual (
nIneq × 1); feasible iff every entry is≤ 0
-
jacEq
-
lagrangianContribution
Sum of constraint-Hessian-of-Lagrangian contributions across all sources. Walks the constraint list, slicesvEq/vIneqinto the portions that belong to each source (in declaration order), and sums the resulting Hessians.- Parameters:
x- iterate (n x 1)vEq- equality multipliers, lengthnEq()vIneq- inequality multipliers, lengthnIneq()- Returns:
- summed
n x nconstraint Hessian, ornullif no source contributes (e.g. every source is aLinearConstraint, which has zero Hessian)
-
jacIneq
-