Você está na página 1de 5

Goal Programming

Goal Programming is a fancy name for a very simple


idea: the line between objectives and constraints is
not completely solid. In particular, when there are a
number of objectives, it is normally a good idea to
treat some or all of them as constraints instead of
objectives.
Again, a particular example will illustrate this best.
Suppose we are developing an advertising campaign.
We would like to reach three groups of people: High
Income Women (HIW), Teenage Boys (TB), and
Retired Men (RM) (the product is obvious).
We can advertise on TV and/or in a magazine. An
ad in each of these gives the following audience:
HIW TB RM Cost
TV 7 Million 10 Million 5 Million $100,000

Magazine 3 Million 5 Million 4 Million $ 60,000

Our budget is $600,000.


Now, if we did not need to worry about TB and
RM, then we would have a simple linear program
to optimize the number or HIW reached:
Maximize 7x+3y
Subject to 100 x  60 y  600
with solution x=6, y=0, reaching 42 million HIW.
Similar calculations show that the maximum
number of TB is 60 million, and the maximum
number of RM is 40 million. We could take each of
the values as ``goals'' and try to find a solution that
comes close to all of the goals. Since it is impossible
to reach all of the goals simultaneously, we would
penalize ourselves for not reaching a goal. This
penalty (probably an artificial value) would depend
on the importance of reaching a particular group.
So, if we value HIW more than TB more than RM,
we could end up with penalties of 200, 100 and 50
respectively. We create new variables s1 , s2 , s3
to represent our failure in meeting a goal, and
create a new linear program
Minimize 200 s1  100 s 2  50 s3
Subject to 7 x  3 y  s1  42
10 x  5 y  s2  60
5x  4 y  s3  40
100 x  60 y  600

The solution to this is:


x  6, y  0, s1  0, s 2  0, s3  5
We meet the first two goals, and fall short on the
third. We could experiment with other weights to
see if we can find a ``better'' solution.
That is really all there is to goal programming:
change some objectives into constraints by adding
slack and/or surplus variables to represent
deviation from a goal. There are some algorithmic
changes possible to allow a more effective
solution, but for the majority of applications,
simply using a linear programming package like
Solver is completely adequate.

Você também pode gostar