Goal programming is a branch of multiobjective optimization, which in turn is a branch of multi-criteria decision analysis (MCDA). This is an optimization programme. It can be thought of as an extension or generalisation of linear programming to handle multiple, normally conflicting objective measures. Each of these measures is given a goal or target value to be achieved. Unwanted deviations from this set of target values are then minimised in an achievement function. This can be a vector or a weighted sum dependent on the goal programming variant used. As satisfaction of the target is deemed to satisfy the decision maker(s), an underlying satisficing philosophy is assumed. Goal programming is used to perform three types of analysis:
- Determine the required resources to achieve a desired set of objectives.
- Determine the degree of attainment of the goals with the available resources.
- Providing the best satisfying solution under a varying amount of resources and priorities of the goals.
Goal programming was first used by Charnes, Cooper and Ferguson in 1955, although the actual name first appear in a 1961 text by Charnes and Cooper. Seminal works by Lee, Ignizio, Ignizio and Cavalier, and Romero followed. Schniederjans gives in a bibliography of a large number of pre-1995 articles relating to goal programming, and Jones and Tamiz give an annotated bibliography of the period 1990-2000. A recent textbook by Jones and Tamiz . gives a comprehensive overview of the state-of-the-art in goal programming.
The first engineering application of goal programming, due to Ignizio in 1962, was the design and placement of the antennas employed on the second stage of the Saturn V. This was used to launch the Apollo space capsule that landed the first men on the moon.
The initial goal programming formulations ordered the unwanted deviations into a number of priority levels, with the minimisation of a deviation in a higher priority level being infinitely more important than any deviations in lower priority levels. This is known as lexicographic or pre-emptive goal programming. Ignizio gives an algorithm showing how a lexicographic goal programme can be solved as a series of linear programmes. Lexicographic goal programming should be used when there exists a clear priority ordering amongst the goals to be achieved.
If the decision maker is more interested in direct comparisons of the objectives then Weighted or non pre-emptive goal programming should be used. In this case all the unwanted deviations are multiplied by weights, reflecting their relative importance, and added together as a single sum to form the achievement function. It is important to recognise that deviations measured in different units cannot be summed directly due to the phenomenon of incommensurability.
Hence each unwanted deviation is multiplied by a normalisation constant to allow direct comparison. Popular choices for normalisation constants are the goal target value of the corresponding objective (hence turning all deviations into percentages) or the range of the corresponding objective (between the best and the worst possible values, hence mapping all deviations onto a zero-one range). For decision makers more interested in obtaining a balance between the competing objectives, Chebyshev goal programming should be used. Introduced by Flavell in 1976, this variant seeks to minimise the maximum unwanted deviation, rather than the sum of deviations. This utilises the Chebyshev distance metric, which emphasizes justice and balance rather than ruthless optimisation.
Strengths and weaknesses
A major strength of goal programming is its simplicity and ease of use. This accounts for the large number of goal programming applications in many and diverse fields. Linear Goal programmes can be solved using linear programming software as either a single linear programme, or in the case of the lexicographic variant, a series of connected linear programmes.
Goal programming can hence handle relatively large numbers of variables, constraints and objectives. A debated weakness is the ability of goal programming to produce solutions that are not Pareto efficient. This violates a fundamental concept of decision theory, that is no rational decision maker will knowingly choose a solution that is not Pareto efficient. However, techniques are available  to detect when this occurs and project the solution onto the Pareto efficient solution in an appropriate manner.
The setting of appropriate weights in the goal programming model is another area that has caused debate, with some authors  suggesting the use of the Analytic Hierarchy Process or interactive methods  for this purpose.
- LiPS — Free easy-to-use GUI program intended for solving linear, integer and goal programming problems.
- LINSOLVE - Free Windows command-line window linear programming and linear goal programming]
- A Charnes, WW Cooper, R Ferguson (1955) Optimal estimation of executive compensation by linear programming, Management Science, 1, 138-151.
- A Charnes, WW Cooper (1961) Management models and industrial applications of linear programming, Wiley, New York
- SM Lee (1972) Goal programming for decision analysis, Auerback, Philadelphia
- JP Ignizio (1976) Goal programming and extensions, Lexington Books, Lexington, MA.
- JP Ignizio, TM Cavalier (1994) Linear programming, Prentice Hall.
- C Romero (1991) Handbook of critical issues in goal programming, Pergamon Press, Oxford.
- MJ Scniederjans (1995) Goal programming methodology and applications, Kluwer publishers, Boston.
- DF Jones, M Tamiz (2002) Goal programming in the period 1990-2000, in Multiple Criteria Optimization: State of the art annotated bibliographic surveys, M. Ehrgott and X.Gandibleux (Eds.), 129-170. Kluwer
- Jones DF, Tamiz M (2010) Practical Goal Programming, Springer Books.
- RB Flavell (1976) A new goal programming formulation, Omega, 4, 731-732.
- EL Hannan (1980) Non-dominance in goal programming, INFOR, 18, 300-309
- M Tamiz, SK Mirrazavi, DF Jones (1999) Extensions of Pareto efficiency analysis to integer goal programming, Omega, 27, 179-188.
- SI Gass (1987) A process for determining priorities and weights for large scale linear goal programmes, Journal of the Operational Research Society, 37, 779-785.
- BJ White (1996) Developing Products and Their Rhetoric from a Single Hierarchical Model, 1996 Proceedings of the Annual Conference of the Society for Technical Communication, 43, 223-224.