You can easily translate the symbolic formulation of a problem into the OPTMODEL procedure. Consider the transportation problem, which is mathematically modeled as the following linear programming problem:
|
where is the set of origins, is the set of destinations, is the cost to transport one unit from to , is the supply of origin , is the demand of destination , and is the decision variable for the amount of shipment from to .
Here is a very simple example. The cities in the set of origins are Detroit and Pittsburgh. The cities in the set of destinations are Boston and New York. The cost matrix, supply, and demand are shown in Table 5.2.
Table 5.2: A Transportation Problem
Boston |
New York |
Supply |
|
Detroit |
30 |
20 |
200 |
Pittsburgh |
40 |
10 |
100 |
Demand |
150 |
150 |
The problem is compactly and clearly formulated and solved by using the OPTMODEL procedure with the following statements:
proc optmodel; /* specify parameters */ set O={'Detroit','Pittsburgh'}; set D={'Boston','New York'}; number c{O,D}=[30 20 40 10]; number a{O}=[200 100]; number b{D}=[150 150]; /* model description */ var x{O,D} >= 0; min total_cost = sum{i in O, j in D}c[i,j]*x[i,j]; constraint supply{i in O}: sum{j in D}x[i,j]=a[i]; constraint demand{j in D}: sum{i in O}x[i,j]=b[j]; /* solve and output */ solve; print x;
The output is shown in Figure 5.4.
Figure 5.4: Solution to the Transportation Problem
Problem Summary | |
---|---|
Objective Sense | Minimization |
Objective Function | total_cost |
Objective Type | Linear |
Number of Variables | 4 |
Bounded Above | 0 |
Bounded Below | 4 |
Bounded Below and Above | 0 |
Free | 0 |
Fixed | 0 |
Number of Constraints | 4 |
Linear LE (<=) | 0 |
Linear EQ (=) | 4 |
Linear GE (>=) | 0 |
Linear Range | 0 |
Constraint Coefficients | 8 |
Performance Information | |
---|---|
Execution Mode | On Client |
Number of Threads | 1 |
Solution Summary | |
---|---|
Solver | LP |
Algorithm | Dual Simplex |
Objective Function | total_cost |
Solution Status | Optimal |
Objective Value | 6500 |
Iterations | 0 |
Primal Infeasibility | 0 |
Dual Infeasibility | 0 |
Bound Infeasibility | 0 |
x | ||
---|---|---|
Boston | New York | |
Detroit | 150 | 50 |
Pittsburgh | 0 | 100 |