Loading...
Searching...
No Matches
transport5.m
1function transport5(varargin)
2
3 % check workspace info from arguments
4 if nargin > 0
5 wsInfo = gams.control.WorkspaceInfo();
6 wsInfo.systemDirectory = varargin{1};
7 ws = gams.control.Workspace(wsInfo);
8 else
9 ws = gams.control.Workspace();
10 end
11
12 model = {
13 ' Sets '
14 ' i canning plants / seattle, san-diego / '
15 ' j markets / new-york, chicago, topeka / ; '
16 ' '
17 'Parameters '
18 ' a(i) capacity of plant i in cases '
19 ' / seattle 350 '
20 ' san-diego 600 / '
21 ' '
22 ' b(j) demand at market j in cases '
23 ' / new-york 325 '
24 ' chicago 300 '
25 ' topeka 275 / ; '
26 ' '
27 'Table d(i,j) distance in thousands of miles '
28 ' new-york chicago topeka '
29 ' seattle 2.5 1.7 1.8 '
30 ' san-diego 2.5 1.8 1.4 ; '
31 ' '
32 'Scalar f freight in dollars per case per thousand miles /90/ ;'
33 'Scalar bmult demand multiplier /1/; '
34 ' '
35 'Parameter c(i,j) transport cost in thousands of dollars per case ; '
36 ' '
37 ' c(i,j) = f * d(i,j) / 1000 ; '
38 ' '
39 'Variables '
40 ' x(i,j) shipment quantities in cases '
41 ' z total transportation costs in thousands of dollars ; '
42 ' '
43 'Positive Variable x ; '
44 ' '
45 'Equations '
46 ' cost define objective function '
47 ' supply(i) observe supply limit at plant i '
48 ' demand(j) satisfy demand at market j ; '
49 ' '
50 'cost .. z =e= sum((i,j), c(i,j)*x(i,j)) ; '
51 ' '
52 'supply(i) .. sum(j, x(i,j)) =l= a(i) ; '
53 ' '
54 'demand(j) .. sum(i, x(i,j)) =g= bmult*b(j) ; '
55 ' '
56 'Model transport /all/ ; '
57 'Scalar ms ''model status'', ss ''solve status''; '};
58 model = sprintf('%s\n', model{:});
59
60 % create a checkpoint
61 cp = ws.addCheckpoint();
62
63 % initialize a checkpoint by running a job
64 t5 = ws.addJobFromString(model);
65 t5.run(cp);
66
67 % clear database
68 t5.outDB.dispose();
69
70 bmultlist = [0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3];
71
72 % create a new Job that is initialized from the Checkpoint
73 for i = 1:numel(bmultlist)
74 job = sprintf('bmult=%f; solve transport min z use lp; ms=transport.modelstat; ss=transport.solvestat;', bmultlist(i));
75 t5 = ws.addJobFromString(job, cp);
76 t5.run();
77
78 fprintf('Scenario bmult=%f:\n', bmultlist(i));
79 fprintf(' Modelstatus: %s\n', gams.control.globals.ModelStat(t5.outDB.getParameter('ms').record.value).select);
80 fprintf(' Solvestatus: %s\n', gams.control.globals.SolveStat(t5.outDB.getParameter('ss').record.value).select);
81 fprintf(' Obj: %f\n', t5.outDB.getVariable('z').record.level);
82
83 % clear database
84 t5.outDB.dispose();
85 end
86
87 % remove working directory
88 rmdir(ws.workingDirectory, 's');
89end