Two Variable Goal Programming Model with Priorities
The example we are looking at is a two variable problem where goals are listed according to priority (i.e. no penalties) and no prior solution is given (more information here).
We are looking at a problem modified from Ignizio (1976)[1].
Problem
A small paint company manufactures two types of paint, latex and enamel. In production, the company uses 10 hours of labor to produce 100 gallons of latex and 15 hours of labor to produce 100 gallons of enamel. The company has 40 hours of daily labor and 30 hours of overtime labour available each week. Furthermore, if enamel paint is produced, latex paint must also be produced. Each paint generates a profit at the rate of $1.00 per gallon. The company has the following objectives listed in decreasing priority:
· avoid the use of overtime
· achieve a weekly profit of $1000
· produce at least 700 gallons of enamel paint each week
a) Formulate the linear goal programming model
b) Solve the goal programming model using a graphical method
c) Using the solution to the model, determine the deviation from the goal
Solution to the formulation of goal programming model
Note: You can skip Steps 13 if you are proficient in formulating goal programming models
Step 1: Rewrite information in a table format
You may skip this step if you can easily find the information in the problem, but it helps in organizing your thoughts.

Latex 
Enamel 
Labour for 100 gallons (hours) 
10 
15 
Profit for 1 gallon 
$1 
$1 
Step 2: State your (functional) constraints
Remember these are your constraints not your goals. Goals do not have to be met (i.e they can go over or under the required amount) but constraints must always be met. These constraints are sometimes call functional constraints or hard constraints.
Constraint 1: Labour ≤ 70 hours/ wk (i.e. daily labour/ wk + overtime labour / wk)
Constraint 2: Latex paint ≥ Enamel paint (i.e. this ensures that if enamel paint is produced, latex paint is also produced)
Step 3: Rewrite your goals as constraints if not given in that form
We know the priorities (i.e. the importance of each goal) of the goals because the problem states the objectives with decreasing priority.
Note: In goal programming we are required to meet the objective/ goal with the highest priority first i.e. in this case Goal 1.
P_{1}: Goal 1  Avoid using overtime i.e. labour has to be ≤ 40 hrs/wk
P_{2}: Goal 2  Achieve a weekly profit of $1000 i.e. profit ≥ $1000
P_{3}: Goal 3  Produce at least 700 gallons/wk of enamel paint i.e. enamel paint ≥ 700 gallons/wk
Where P_{1}, P_{2}, P_{3} are the priorities of the goals, where P_{1} ≥ P_{2} ≥ P_{3}
Step 4: Decide decision variables
The decision variables we choose must be used to formulate all goals. In this case, we goals related to labour, profit and production. All of these goals are determined by the number of latex and enamel paint we produce each week. Therefore:
L = no. of 100 gallons of latex paint produced per week
E = no. of 100 gallons of enamel paint produced per week
Note: we could have used L = no. of gallons of latex paint produced per week, which will require us to divide the labour hours by 100
Step 5: Rewrite your functional constraints using your decision variables
Constraint 1: 10 L + 15 E ≤ 70 (Labour constraint)
Constraint 2: L ≥ E
Rewriting:
Constraint 2: L – E ≥ 0 (Production Constraint)
Note: You must always rewrite your constraints such that all decision variables are on the LHS and all constants are on the RHS.
Step 6: Rewrite your goal constraints using your decision variables
Goal 1: 10 L + 15 E ≤ 40 (Avoid Overtime)
Goal 2: 100 L + 100 E ≥ 1000 (Profit)
Note: Remember L is the no. of 100 gallons of latex paint produced per week, therefore since the profit is $1 per gallon, then the profit for 100 gallons of latex paint is $100
Goal 3: E ≥ 7 (Enamel Paint Production)
Note: Remember E is the no. of 100 gallons of enamel paint produced per week, therefore 7 batches of 100 gallons of enamel has to be produced to get 700 gallons
Step 7: Add deviation variables to the goal constraints
In formulating a goal programming model, the goal constraints are always converted to “equality constraints” i.e. and equal sign is used. If you recall, we did a similar step when solving LP problems using the simplex algorithm, where we incorporated slack and excess variables into the constraints (see Step 1 of Simplex Algorithm)
Let us look at Goal 1
10 L + 15 E ≤ 40
To make this an equality constraint:
10 L + 15 E + Y_{1}^{}_{ }– Y_{1}^{+} = 40
where Y_{1}^{} is the slack deviation variable and Y_{1}^{+} is the excess deviation variable for Goal 1
Y_{i}^{} : represents how much we must add to make up the goal i.e. the slack (we use the negative sign to represent we have fallen short of the goal)
Y_{i}^{+} : represents how much we must subtract to make up the goal i.e. the excess (we use the positive sign to represent we have exceeded the goal)
Note: We added both deviation variables to the goal constraints unlike what we would have done for the functional (hard) constraints. This is because, goal constraints are allowed to go over and go under their constraint value.
Note: The deviation variables have the same units as E and L, that is they are measured in 100 gallons of paint.
This means if the final RHS of Goal 1 was 60 hours i.e.
10 L + 15 E = 60
Then
10 L + 15 E + Y_{1}^{} – Y_{1}^{+} = 60 – 20 = 40
This means we would have exceeded the goal by 20 hours (60 – 40 = 20 hrs), i.e. we would be in excess of the goal. Therefore, we have no slack which means our slack deviation variable, Y_{1}^{} = 0. Our excess deviation variable would be Y_{1}^{+} = 60 – 40 = 20.
Therefore, adding deviation variables to all goal constraints we would have
Goal 1: 
10 L 
+ 15 E 
+ Y_{1}^{} 
– Y_{1}^{+} 
= 40 
(Overtime) 
Goal 2: 
100 L 
+ 100 E 
+ Y_{2}^{} 
– Y_{2}^{+} 
= 1000 
(Profit) 
Goal 3: 

E 
+ Y_{3}^{} 
– Y_{3}^{+} 
= 7 
(Enamel Prod.) 
Step 8: Determine the variables need to be minimized in the objective function
The objective function of a goal programming model requires us to always minimize the variables.
We need now to determine which variables we are required to minimize. The variables we are required to minimize are always located in the goals.
Let us again look at Goal 1
10 L + 15 E + Y_{1}^{}_{ }– Y_{1}^{+} = 40
From this goal, if you recall we do not want to go over the 40 daily labour hours available per week i.e.
10 L + 15 E ≤ 40
Therefore, we want to ensure that there is no excess. Since the corresponding excess deviation variable for this goal is Y_{1}^{+}, we want to make this as small as possible, i.e. minimize this variable.
For Goal 2 (Profit)
100 L + 100 E ≥ 1000
100 L + 100 E + Y_{2}^{} – Y_{2}^{+} = 1000
We require the profit to be more than $1000, in other words, we do want it to fall under $1000. The variable that corresponds to us fallen under our goal, is our slack deviation variable, Y_{2}^{}. We thus want to make this as small as possible, i.e. minimize Y_{2}^{}.
For Goal 3 (Enamel Paint Production)
E ≥ 7
E + Y_{3}^{} – Y_{3}^{+} = 7
We require that enamel paint production be always above 700 gallons. We thus have to ensure that our slack deviation variable, Y_{3}^{}, is as small as possible, i.e. minimized.
Note: Remember Y_{3}^{} and Y_{3}^{+} are both measured in 100 gallons of paint.
Step 9: Write the objective function with priorities
Thus we are required to minimize Y_{1}^{+}, Y_{2}^{}, Y_{3}^{}. By minimizing these variables we will be able to possibly satisfy our goals.
Now we are almost near to writing our objective function. If you recall from Step 3, we said that P_{1} ≥ P_{2} ≥ P_{3}, where P_{i} represented the goal priorities. When we write the objective function, we use P_{1}, P_{2}, and P_{3} as the objective variables coefficients, to denote which variable has the highest priority (these will have actual meaning/ values when we deal with goal penalties).
Thus the objective function is
Min P_{1}Y_{1}^{+} + P_{2}Y_{2}^{} + P_{3}Y_{3}^{ }
Step 10. Write the Goal Programming Model
We need to combine all parts i.e. the functional constraints, goal constraints and the objective function for producing the goal programming model.
Min 


_{ } 
P_{1}Y_{1}^{+} 
+ P_{2}Y_{2}^{} 

+ P_{3}Y_{3}^{} 














s.t. 











10 L 
+ 15 E 






≤ 70 
(Labour) 

L 
– E 






≥ 0 
(Production) 
Goal 1: 
10 L 
+ 15 E 
+ Y_{1}^{} 
– Y_{1}^{+} 




= 40 
(Overtime) 
Goal 2: 
100 L 
+ 100 E 


+ Y_{2}^{} 
– Y_{2}^{+} 


= 1000 
(Profit) 
Goal 3: 

E 




+ Y_{3}^{} 
– Y_{3}^{+} 
= 7 
(Enamel Prod.) 



All variables ≥ 0 




Next: Solve with Lindo
[1] Ignizio, J.P. (1976), Goal Programming and Extensions, D.C. Heath and Company, Lexington, Massachusetts.