Goal Programming

Goal programming models are very similar to linear programming models, but whereas linear programs have one objective, goal programs can have several objectives. Consider the following example.

Suppose that a company manufactures two products ( x1 and x2 ). The resource requirements and profit are in the table below

Product 1 ( x1 )	Product 2 ( x2 )	Available
profit per unit
labor hours per unit
material per unit	16
3
2	12
6
1
72
30
In addition, the company has the following goals.

1.	The total profit should be at least 250.

2.	It takes time to set up production for product 2, so we like to produce in batches of at least 5.

3.	The current demand for product 1 is 14. Therefore, we would like to produce exactly 14.

This problem appears similar to a linear program but now we have three goals rather than one objective.

Data

Any goal program is defined by the number of variables and the number of constraints or goals. Do not count the non-negativity restrictions as constraints. Thus in this example, we have two variables and five constraint/goals (two constraints and three goals). The information is entered as shown in the following screen.

Some of the information is identical to linear programming, but there are some differences. First note that there is no objective function. Second, notice that there are four extra columns at the beginning (left) of the table before the decision variables. These extra columns are used for the goals and not for the constraints (where you can see that they are zero).

Goals/constraints. In each line of the table we enter either a constraint or a goal. The first two lines represent constraints. Since these are constraints, the first four columns are not used ( 0s are entered). The constraints are entered in the usual fashion.

The next three lines represent goals and there are two aspects to these goals. Since these are goals, notice that the sign in the row is '='. The values under x1 and x2 serve to create the goal in conjunction with the variables d+ and d-, indicating by how much we overachieve or underachieve the goal. For example, line 3 in the table stands for

x1 - ( d1 +) + ( d1 -) = 14.

If x1 is below 14, d1 - represents the amount below, while if x1 is above 14, d1 + represents the amount by which we go over.

Similarly, the next line (goal 4) represents

16x1 + 12x2 - ( d2 +) + ( d2 -) = 270

Thus d2 + and d2 - represent the amount of profit beyond 270 and below 270 respectively.

Mathematically, the goals are d1 +, d1 -, d2 +, d2 -, d3 +, d3 -. The question is: How do we want to order or weight these goals? That is, how do we contrast the importance of each of these six goals?

We do this using the priorities and weights on the line.

Priorities and weights: First, there are six goals ( d1 +, d1 -, d2 +, d2 -, d3 +, d3 -) in this example, but we do not care if we overachieve our profit goal of 270, nor do we care if we produce more than five units of product 2. Therefore, both the weights and priorities of these two goals have been set to 0. The priorities for the other four goals range from 1 to 3. The meaning of different priorities is the order in which the goals are satisfied. In other words, goals with priority 1 must be satisfied before goals with priority 2, which must be satisfied before goals with priority 3, and so on. In this example we first want to make exactly 14 units of product 1, then we want to guarantee our minimum profit level of 270, then we want to try to guarantee our minimum batch level of five for product 2.

Within each priority it is possible to assign different weights to the goals. This is shown in the next example.

The constraint sign. This is a drop-down box that can be used to change the constraint type from "less than or equal to," to "equal to" to "greater than or equal to." As stated above, goals must have the sign '='.

Right hand side coefficients. The values on the right hand side of the constraints are entered here. For constraints, these are the usual coefficients, while for goals, these are the goals that are set.

The Solution

The following screen displays the summary solution (the simplex goal tableau is also available for display, as is a graph for two-dimensional problems).

The optimal solution is to produce 14 units of product 1 and 2 units of product 2. Priority 1 will be achieved (the nonachievement is 0), while we have failed to achieve priorities 2 and 3. Remember, d+ is the amount by which we have exceeded the goal and d- is the amount by which we have come up short. The constraint analysis indicates that we used 18 fewer hours than we had available, exactly the amount of material that we had, reached goal 3 exactly, underachieved profit (goal/constraint 4) by 22 and batch size 3 (goal/constraint 5) by 3.

A graph (not shown) is also available if the number of variables is two.

Example with weights

We have revised our goal priorities as shown in the following example. This time we make meeting the profit level our highest goal and everything else is secondary. However, we have given twice the weight to underachieving our five units of product 2, compared with missing our goal of 14 for product 1.

The results follow. We should produce 12.5 units of product 1 and 5 units of product 2. We will achieve our first priority but miss our second priority. (The 1.5 represents 14 - 12.5). Notice that we had only two priorities.

The goal/constraint analysis shows us that we have 4.5 labor hours left over, used exactly the 30 pounds of material that we had, underachieved our product 1 demand by 1.5, overachieved our profit goal by 10, and met the goal of making at least 5 units of product 2 exactly.