|
Save Restart Basics |
Top Previous Next |
|
Suppose we have a program like transml.gms and divide it into three parts trandata.gms the red part below, tranmodl.gms the blue part below and tranrept.gms the magenta part below.
SETS PLANT PLANT LOCATIONS /NEWYORK , CHICAGO , LOSANGLS / MARKET DEMAND MARKETS /MIAMI, HOUSTON, MINEPLIS, PORTLAND/ PARAMETERS SUPPLY(PLANT) QUANTITY AVAILABLE AT EACH PLANT /NEWYORK 100, CHICAGO 275, LOSANGLS 90/ DEMAND(MARKET) QUANTITY REQUIRED BY DEMAND MARKET /MIAMI 100,HOUSTON 90,MINEPLIS 120,PORTLAND 90/; TABLE DISTANCE(PLANT,MARKET) DISTANCE FROM EACH PLANT TO EACH MARKET MIAMI HOUSTON MINEPLIS PORTLAND NEWYORK 1300 1800 1100 3600 CHICAGO 2200 1300 700 2900 LOSANGLS 3700 2400 2500 1100 ; PARAMETER COST(PLANT,MARKET) CALCULATED COST OF MOVING GOODS; COST(PLANT,MARKET) = 50 + 1 * DISTANCE(PLANT,MARKET); POSITIVE VARIABLES SHIPMENTS(PLANT,MARKET) AMOUNT SHIPPED OVER A TRANSPORT ROUTE; VARIABLES TCOST TOTAL COST OF SHIPPING OVER ALL ROUTES; EQUATIONS TCOSTEQ TOTAL COST ACCOUNTING EQUATION SUPPLYEQ(PLANT) LIMIT ON SUPPLY AVAILABLE AT A PLANT DEMANDEQ(MARKET) MINIMUM REQUIREMENT AT A DEMAND MARKET; TCOSTEQ.. TCOST =E=SUM((PLANT,MARKET), SHIPMENTS(PLANT,MARKET)* COST(PLANT,MARKET)); SUPPLYEQ(PLANT).. SUM(MARKET,SHIPMENTS(PLANT,MARKET))=L=SUPPLY(PLANT); DEMANDEQ(MARKET)..SUM(PLANT,SHIPMENTS(PLANT,MARKET))=G=DEMAND(MARKET); MODEL TRANSPORT /ALL/; SOLVE TRANSPORT USING LP MINIMIZING TCOST; ParAMETER MOVEMENT(*,*) COMMODITY MOVEMENT; MOVEMENT(PLANT,MARKET)=SHIPMENTS.L(PLANT,MARKET); MOVEMENT("TOTAL",MARKET)=SUM(PLANT,SHIPMENTS.L(PLANT,MARKET)); MOVEMENT(PLANT,"TOTAL")=SUM(MARKET,SHIPMENTS.L(PLANT,MARKET)); MOVEMENT("TOTAL","TOTAL")=SUM(MARKET,MOVEMENT("TOTAL",MARKET)); OPTION DECIMALS=0; DISPLAY MOVEMENT;
We could execute this using an include file sequence such as in tranint.gms. We can also use save and restart files. First let me introduce the needed commands.
|