WebCab Optimization for COM v2.6

LinearProgramming.SolutionSlack Method 

Provides information about the `tightness' of each inequality with respect to the results provided by the MultiLinearSimplex, or MultiLinearSimplex multi simplex methods.

public double[] SolutionSlack(
   double[,] inequalities,
   double[] multiSimplexSolution
);

Parameters

inequalities
The same two-dimensional array of inequalities used with the MultiLinearSimplex.
multiSimplexSolution
The array returned by the multi simplex method.

Return Value

An array of values, one value for every inequality, containing the distances of every inequality from zero.

Remarks

For this method to be able to return the `tightness' of the inequality constraints it requires to know the location of the extremum (i.e. minimum or maximum) found and the inequalities for the corresponding linear programming problem. Once this information is provided (via parameters) this method will return an array of the the distances from the `boundary' defined by each inequality to the point where the extremum was found.

Further Explanation and Description of possible applications

All inequalities take the following form:

c1 * x1 + c2 * x2 + ... + cN * xN + b >= 0

Let's assume that this inequality is a constraint of a linear programming problem for which the solution is xi = ai for all i. Now for this particular inequality there will exist some real number say d such that:

c1 * a1 + c2 * a2 + ... + cN * aN + b + d = 0

In the language used above the constant d is the distance from the `boundary' for the considered inequality. If this inequality is the ith inequality within the set of inequalities then the constant d will be the ith element of the array returned by this method.

The value of knowing whether a given parameter is tight or not, and moreover being able to measure the exact `distance' from the boundary (in the above sense), is that we are able to move the boundaries which are not tight in and still ensure that for the resulting linear programming problem will have an extremum (i.e. maximum or minimum) at the same point and of the same value. To given a precise meaning to the term `move in the boundaries'; for the problem described above we are able to replace the original inequality with the condition that:

c1 * a1 + c2 * a2 + ... + cN * aN + b + d >= 0

By performing such analysis for each of the inequalities we are able to see which constraints can be varied (i.e. moved in) and by how much.

Remark: It is a general property of all linear programming problems that the extremum (i.e. maximum or minimum) will always lie on the boundary. Therefore, at least one of the constraints will be tight.

Application to the Factory Example

If us consider the Factory Example (see Factory Example description) where the Linear programming problem represents the production procedure of a factory with a certain product mix. In this instance the boundaries represent the restrictions on the means of production (such as the amount of a given material available etc), and the object function represents the profit from a given product mix. In this instance, by knowing the explicit amount the means of production (represented by a boundary) can be cut back without effecting the over-all profitability of the factory will allow the factory management to tie up less capital in the means of production whilst still achieving the same level of profitability. By cutting an these excess costs within the production procedure will increasing the factory's return on capital employed whilst keeping the profitability at the same level.

See Also

LinearProgramming Class | WebCab.COM.Math.Optimization.LinearProgramming Namespace