Class PenaltyMethodMinimizer

  • All Implemented Interfaces:
    Minimizer<ConstrainedOptimProblem,​IterativeSolution<Vector>>, ConstrainedMinimizer<ConstrainedOptimProblem,​IterativeSolution<Vector>>, Optimizer<ConstrainedOptimProblem,​IterativeSolution<Vector>>

    public class PenaltyMethodMinimizer
    extends Object
    implements ConstrainedMinimizer<ConstrainedOptimProblem,​IterativeSolution<Vector>>
    The penalty method is an algorithm for solving a constrained minimization problem with general constraints. It replaces a constrained optimization problem by a series of unconstrained problems whose solutions ideally converge to the solution of the original constrained problem. The unconstrained problems are formed by adding a term to the objective function that consists of a penalty parameter and a measure of violation of the constraints. The measure of violation is zero in the feasible region and is positive when the constraints are violated.

    In this implementation, we use only one iteration. In this iteration, we multiply the penalties by ɣ, which is a very big number, to penalize a solution outside the feasible region. This is to mimic when ɣ approaches infinity. A classical unconstrained minimization algorithm is then applied to the modified problem. It can be shown that if the penalty is large enough, the original and modified problems have the same solution.

    See Also:
    • @see Wikipedia: Penalty method
    • "R. Fletcher, "Section 22.4, Penalty Methods, Chapter 22, Non-differentiable Optimization," Practical Methods of Optimization. 2nd ed. Wiley. May 2000."
    • Constructor Detail

      • PenaltyMethodMinimizer

        public PenaltyMethodMinimizer​(PenaltyMethodMinimizer.PenaltyFunctionFactory penaltyFunctionFactory,
                                      double gamma,
                                      IterativeC2Minimizer minimizer)
        Construct a constrained minimizer using the penalty method.
        Parameters:
        penaltyFunctionFactory - a factory to construct a penalty function from a constrained optimization problem
        gamma - the ɣ as in R. Fletcher
        minimizer - an unconstrained minimization solver
      • PenaltyMethodMinimizer

        public PenaltyMethodMinimizer​(double gamma)
        Construct a constrained minimizer using the penalty method. ɣ should be big enough to reflect the penalty, but it cannot be too big to overflow the computations (to produce NaNs). It is recommended to experiment different ɣ's to get better results.
        Parameters:
        gamma - the ɣ as in R. Fletcher
      • PenaltyMethodMinimizer

        public PenaltyMethodMinimizer()
        Construct a constrained minimizer using the penalty method.