 the best possible selection of all the system parameters that satisfies all the constraints. These decision support systems are typically large and complex computer programs embedded in even larger and more complex data systems. There are several methods for finding the best solution to constrained optimization problems. Many of these are iterative schemes where the decision support system works its way from worse to better. Let us look at the framework of an iterative scheme for constrained optimization without going into the details of any one particular method. We create thought experiments for the system, hypothetical mathematical so- lutions that we try and keep trying until we find our optimal solution. Step 1: Start by finding some feasible solution. Sometimes there is a good starting point, which can be from previous experience with a similar problem, but often the starting point is some zero point known to be feasible. Step 2: Look around for something better, some direction we can move, some change we can make, so that the solution stays feasible and gets better. Usually such improvement is a mixed blessing, a tradeoff where something good is given up to get something more or something better. Step 3: If no possible change within the feasible region makes things better, then we con- clude that we have found the optimal point, and we can stop. Step 4: We make the improvement from one feasible point to a better one. Step 5: Go back to step Two. This iterative scheme is not the only solution technique for constrained optimiza- tion problems, but it is a common theme underlying many optimization algorithms. For continuous problems, the feasible point changes in step 4 go in some improve- ment direction as far as they can go while the solution improves or as far as they can go and stay feasible. For discrete problems, the feasible point changes are typically some rearrangement or permutation. The case of a linear objective function with linear constraints is called a linear program. The traditional solution