Loading...
Searching...
No Matches
transport13.m
1function transport13(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 % prepare input data
13 plants = {'Seattle', 'San-Diego'};
14 markets = {'New-York', 'Chicago', 'Topeka'};
15 capacity = containers.Map();
16 capacity('Seattle') = 350;
17 capacity('San-Diego') = 600;
18 demand = containers.Map();
19 demand('New-York') = 325;
20 demand('Chicago') = 300;
21 demand('Topeka') = 275;
22 distance = containers.Map();
23 distance('Seattle.New-York') = 2.5;
24 distance('Seattle.Chicago') = 1.7;
25 distance('Seattle.Topeka') = 1.8;
26 distance('San-Diego.New-York') = 2.5;
27 distance('San-Diego.Chicago') = 1.8;
28 distance('San-Diego.Topeka') = 1.4;
29
30 t = TransportModel(ws);
31
32 for p = plants
33 t.i.addRecord(p{1});
34 end
35
36 for m = markets
37 t.j.addRecord(m{1});
38 end
39
40 for p = plants
41 rec = t.a.addRecord(p{1});
42 rec.value = capacity(p{1});
43 end
44
45 for m = markets
46 rec = t.b.addRecord(m{1});
47 rec.value = demand(m{1});
48 end
49
50 for p = plants
51 for m = markets
52 rec = t.d.addRecord(p{1}, m{1});
53 rec.value = distance([p{1}, '.', m{1}]);
54 end
55 end
56
57 rec = t.f.addRecord();
58 rec.value = 90;
59
60 t.opt.setAllModelTypes('cplex');
61 t.run([], gams.control.PrintStream());
62
63 fprintf('Objective: %g\n', t.z.record.level);
64
65 for x = t.x.records
66 fprintf('x(%s,%s): level=%g marginal=%g\n', x{1}.keys{:}, x{1}.level, x{1}.marginal);
67 end
68end