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

# GMP::Solution::GetPenalizedObjective

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::Solution::GetPenalizedObjective(
GMP,            ! (input) a generated mathematical program
solution1,      ! (input) a solution
solution2,      ! (input) a solution
[skipObj]       ! (optional, default 0) a scalar value
)


## Arguments

GMP

An element in AllGeneratedMathematicalPrograms.

solution1

An integer scalar reference to a solution.

solution2

An integer scalar reference to a solution.

skipObj

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).

Note

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.