Function GMP::Solution::GetPenalizedObjective(GMP, solution1, solution2, skipObj)


The function GMP::Solution::GetPenalizedObjective calculates the penalized objective for a generated mathematical program by using the level values of the columns in a first solution and the shadow prices in a second solution as the penalty multipliers for the rows. To avoid a very large value, the penalized objective value is divided by the square of the number of rows.

     GMP,            ! (input) a generated mathematical program
     solution1,      ! (input) a solution
     solution2,      ! (input) a solution
     [skipObj]       ! (optional, default 0) a scalar value



An element in AllGeneratedMathematicalPrograms.


An integer scalar reference to a solution.


An integer scalar reference to a solution.


A scalar binary value to indicate whether the objective defining constraint should be skipped (value 1) or not (value 0).

Return Value

In case of success, the penalized objective function value of the GMP associated with both solutions. Otherwise it returns -1e80 for a maximization problem, and 1e80 for a minimization problem (or a feasibility problem).


Assume that \(x\) denotes the level values of the columns in solution1 and \(w\) the shadow prices of the rows in solution2. Then the penalized objective function \(P(x,w)\) is defined as

\[P(x,w) = \frac{f(x) + dirval * \sum_{i=1}^m \big( w_i * viol(g_i(x)) \big)}{m^2} ,\]

where \(f(x)\) denotes the objective function value, \(m\) is the number of rows and the function \(viol(g_i(x))\) equals the absolute amount by which the \(i\)th row is violated at the point \(x\). Here \(dirval\) is 1 in case of minization and -1 in case of maximization.

See also

The procedure GMP::Solution::UpdatePenaltyWeights.