Dynamic Polynomial Penalty
A dynamic polynomial penalty that scales with both the magnitude of the constraint violation and the current iteration of the solver:
P(v, k) = basePenalty * k^iterationExponent * v^violationExponentWith the default violationExponent = 1.0 this is the "naive penalty" of Park and Kim (2015): an increasing sequence M_k = basePenalty * k^iterationExponent multiplying the (raw) violation. It applies uniformly to deterministic (linear, functional) and stochastic (response) constraints; the violation is obtained from the bound constraint.
Parameters
The scaling coefficient (M_0). Default is 100.0. Must be > 0.
The power applied to the iteration counter. Default is 1.0.
The power applied to the violation magnitude. Default is 1.0 (linear). Linear is preferred: squaring a sub-unit violation (such as a fill-rate gap) collapses the penalty toward zero.
The bound constraint, or null for an unbound default template.
Constructors
Functions
Returns a copy of this penalty bound to the supplied constraint. Used to resolve a default template into a per-constraint instance.
The penalty contribution for this penalty's constraint at the supplied solution. Must be a pure function of the solution (and this penalty's own state) so that the penalized objective is a stable, Solver-free property of an immutable solution. Called only on bound instances.