12from gams
import GamsWorkspace
14if __name__ ==
"__main__":
15 sys_dir = sys.argv[1]
if len(sys.argv) > 1
else None
16 work_dir = sys.argv[2]
if len(sys.argv) > 2
else None
17 ws = GamsWorkspace(system_directory=sys_dir, working_directory=work_dir)
20 plants = [
"Seattle",
"San-Diego"]
21 markets = [
"New-York",
"Chicago",
"Topeka"]
22 capacity = {
"Seattle": 350.0,
"San-Diego": 600.0}
23 demand = {
"New-York": 325.0,
"Chicago": 300.0,
"Topeka": 275.0}
25 (
"Seattle",
"New-York"): 2.5,
26 (
"Seattle",
"Chicago"): 1.7,
27 (
"Seattle",
"Topeka"): 1.8,
28 (
"San-Diego",
"New-York"): 2.5,
29 (
"San-Diego",
"Chicago"): 1.8,
30 (
"San-Diego",
"Topeka"): 1.4,
34 db = ws.add_database()
37 i = db.add_set(
"i", 1,
"canning plants")
42 j = db.add_set(
"j", 1,
"markets")
47 a = db.add_parameter_dc(
"a", [i],
"capacity of plant i in cases")
49 a.add_record(p).value = capacity[p]
52 b = db.add_parameter_dc(
"b", [j],
"demand at market j in cases")
54 b.add_record(m).value = demand[m]
57 d = db.add_parameter_dc(
"d", [i, j],
"distance in thousands of miles")
58 for k, v
in iter(distance.items()):
59 d.add_record(k).value = v
62 f = db.add_parameter(
"f", 0,
"freight in dollars per case per thousand miles")
63 f.add_record().value = 90
68 print(
"Content of GDX file 'data.gdx':")
69 subprocess.call([
"gdxdump", os.path.join(ws.working_directory,
"data.gdx")])
72 db2 = ws.add_database_from_gdx(
"data.gdx")
75 i = [rec.keys[0]
for rec
in db2[
"i"]]
76 j = [rec.keys[0]
for rec
in db2[
"j"]]
78 a = {rec.keys[0]: rec.value
for rec
in db2[
"a"]}
79 b = {rec.keys[0]: rec.value
for rec
in db2[
"b"]}
80 d = {tuple(rec.keys): rec.value
for rec
in db2[
"d"]}
82 f = db2[
"f"].first_record().value
92 print(f
" {rec} : {a[rec]}")
95 print(f
" {rec} : {b[rec]}")
98 print(f
" {rec} : {d[rec]}")