Overview
Note that the Goal Programming functionality of the Optimizer will be dropped in a future release. This functionality will be replaced by an example program, available with this release (see goal_example.c in the examples/optimizer/c folder of the installation), that provides the same functionality as the original library function XPRSgoal(GOAL) but is implemented using the Optimizer library interface.
Goal programming is an extension of linear programming in which targets are specified for a set of constraints. In goal programming there are two basic models: the pre–emptive (lexicographic) model and the Archimedean model. In the pre–emptive model, goals are ordered according to priorities. The goals at a certain priority level are considered to be infinitely more important than the goals at the next level. With the Archimedean model, weights or penalties for not achieving targets must be specified and one attempts to minimize the weighted sum of goal under–achievement.
In the Optimizer, goals can be constructed either from constraints or from objective functions (N rows). If constraints are used to construct the goals, then the goals are to minimize the violation of the constraints. The goals are met when the constraints are satisfied. In the pre–emptive case we try to meet as many goals as possible, taking them in priority order. In the Archimedean case, we minimize a weighted sum of penalties for not meeting each of the goals. If the goals are constructed from N rows, then, in the pre–emptive case, a target for each N row is calculated from the optimal value for the N row. This may be done by specifying either a percentage or absolute deviation that may be allowed from the optimal value for the N rows. In the Archimedean case, the problem becomes a multi–objective linear programming problem in which a weighted sum of the objective functions is to be minimized.
In this section four examples will be provided of the four different types of goal programming available. Goal programming itself is performed using the XPRSgoal (GOAL) command, whose syntax is described in full in the reference section of this manual.