Using Goal Programming to Assist With
Planning a Housing Development
Unlike typical Linear Programming problems involving only hard constraints, Goal Programming involves both hard
and soft constraints. Soft constraints allow us to be a bit more flexible in our decision making.
Typically, we would start out with a statement of our desired goals. But after some preliminary analysis we
might discover that our "ideal" goals cannot be achieved, and that we need to adjust them. So we
can make small, repeated adjustments to our goals until we are satisfied with the outcome. Thus, goal
programming might involve going through several iterations of modeling until we reach an acceptable solution.
Here is a hypothetical example that uses Goal Programming to help plan a housing development. We have a
parcel of land that will allow a given total amount of square footage for housing. The town wants us to build
a residential development that will include a range of home sizes, including a relatively large number of
smaller homes, somewhat fewer medium size homes, and even fewer large homes.
We will define "small" as 2,500 square feet, "medium" as 3,600 sq. ft. and "large" as 4,800 sq. ft.
We estimate that a small home will cost about $312,500 to build; a medium home will cost about $442,500; and a
large home will cost about $580,800. We have a total project budget of $32 million and enough land to allow a
total of 275,000 square feet for housing. If possible, we would like to build about 60 smaller homes, about
25 medium homes and about 15 large homes.
The initial setup of the problem is shown in the table below. Numbers for the goals are shown in red;
numbers for the decision variables are shown in green:
There are several things shown in the table above that are different from standard Linear
Programming model setups. Note that we specify some flexibility in our goals, allowing us possibly to
build either more ("over goal") or fewer ("under goal") houses of a given type, and to use somewhat more or less
total square footage and budget than initially specified.
After the first iteration of modeling, the zero cells will be filled in with nonzero amounts.
The weights near the bottom of the table specify the penalties we assign for going under or over our initially
stated goals for each key variable. This will help us remain flexible while keeping some control over
how far the model can deviate from the initial goals. For example, we assign small penalties for building
fewer of each type of house; a small penalty for going over our total budget; and equal penalties for going over or
under our square footage goal.
Unlike Linear Programming models that use only hard constraints, we are less concerned with
optimizing our objective function (shown at the bottom of the table), and more interested in achieving acceptable
multiple goals. Here are the results of the first iteration of modeling:
This initial solution allows us to build 46 small, 25 medium and 15 large homes. But we are
unfortunately over budget by 6.74% ($2,157,000) and we have used 0.73% more land (2,000 sq. ft.) than originally
estimated. The town is also disappointed that we would be able to build only 46 of the 60 originally planned
smaller homes, because it is desirable to have many "starter" homes available for first-time home buyers.
So we go back to the drawing board and run a second model, shown below:
First, note that near the bottom of the table we have adjusted our weights so that building too few
small homes gives us a larger penalty than before; and to offset this, we have removed the penalty for
building too few large homes. We have also substantially increased the penalty for going over the total
project budget so that we don't get "sticker shock."
This second model allows us to build all 60 smaller homes and 27 medium homes, but only 2 large
homes. And now we are 18,200 square feet below our planned total square footage.
But at least we are now $132,800 under budget instead of a whopping $2,157,000 over budget.
After a bit more trial-and-error adjusting of the weights, we finally come up with a solution that
is acceptable to both the town and the builder:
After a lot of fine-tuning of the weights (near the bottom of the table), we are able to build all
60 of the small homes, 22 of the planned 25 medium homes, and six of the 15 planned large homes. This gives
us a good mix of different home sizes as well as all the desired "starter homes." We are also just
0.07% under budget, although we are 6.18% below our initial plan of 275,000 total square feet.
After more discussion between the builder and the town, it is decided to include a large playground on
the unused 17,000 sq. ft. The unused $23,600 budget will be enough to add a variety of attractive playground
equipment. This should please the prospective home buyers, and it will thus probably make home sales go more
quickly, which in turn will reduce the builder's carrying costs.
Return to Optimization Programming main page