로드 중...
검색 중...
일치하는 항목 없음
transport_gdx.py
이 파일의 문서로 이동하세요.
1
8
9가져오기os
10가져오기하위 프로세스
11가져오기sys
12from게임가져오기GamsWorkspace
13
14if__name__ =="__main__":
15sys_dir = sys.argv[1]iflen(sys.argv) > 1그밖에 없음
16work_dir = sys.argv[2]iflen(sys.argv) > 2그밖에 없음
17ws = GamsWorkspace(system_directory=sys_dir, Working_directory=work_dir)
18
19 # 데이터를 보유하는 Python 목록 및 사전
20식물 = ["시애틀", "샌디에고"]
21시장 = ["뉴욕", "시카고", "토피카"]
22용량 ="시애틀": 350.0,"샌디에고": 600.0}
23수요 ="뉴욕": 325.0,"시카고": 300.0,"토피카": 275.0}
24거리 =
25 ("시애틀", "뉴욕"): 2.5,
26 ("시애틀", "시카고"): 1.7,
27 ("시애틀", "토피카"): 1.8,
28 ("샌디에고", "뉴욕"): 2.5,
29 ("샌디에고", "시카고"): 1.8,
30 ("샌디에고", "토피카"): 1.4,
31}
32
33 # 새로운 GamsDatabase 인스턴스 생성
34db = ws.add_database()
35
36 # 설명 텍스트 '통조림 식물'과 함께 1차원 세트 'i'를 GamsDatabase에 추가
37i = db.add_set("나", 1,"통조림 공장")
38 forpin식물:
39i.add_record(p)
40
41 # 설명 텍스트 'markets'가 포함된 1차원 집합 'j'를 GamsDatabase에 추가
42j = db.add_set("j", 1,"시장")
43 form시장:
44j.add_record(m)
45
46 # 도메인 'i'에 매개변수 'a' 추가
47a = db.add_parameter_dc("a", [i],"케이스에 있는 식물 i의 용량")
48 forpin식물:
49a.add_record(p).value = 용량[p]
50
51 # 도메인 'j'에 매개변수 'b' 추가
52b = db.add_parameter_dc("b", [j],"경우에 따라 시장 j의 수요")
53 formin시장:
54b.add_record(m).value = 수요[m]
55
56 # 도메인 'i' 및 'j'가 있는 매개변수 'd'를 추가합니다.
57d = db.add_parameter_dc("d", [i, j],"수천 마일 단위의 거리")
58 fork, viniter(distance.items()):
59d.add_record(k).value = v
60
61 # 스칼라 'f' 추가
62f = db.add_parameter("f", 0,"1,000마일당 케이스당 화물(달러)")
63f.add_record().value = 90
64
65 # GamsDatabase를 GamsWorkspace의 'working_directory'에 있는 'data.gdx' 이름의 GDX 파일로 내보냅니다.
66db.export("data.gdx")
67
68인쇄("GDX 파일 'data.gdx'의 내용:")
69하위 프로세스.호출(
70[
71os.path.join(ws.system_directory,"gdxdump"),
72os.path.join(ws.working_directory,"data.gdx"),
73]
74 )
75
76 # 새 GamsDatabase를 추가하고 방금 생성된 GDX 파일에서 초기화
77db2 = ws.add_database_from_gdx("data.gdx")
78
79 # 기호의 데이터를 Python 데이터 구조로 읽습니다.
80i = [rec.keys[0]forrecindb2["나"]]
81j = [rec.keys[0]forrecindb2["j"]]
82
83a = rec.keys[0]: Rec.valueforrecindb2["a"]}
84b = rec.keys[0]: Rec.valueforrecindb2["b"]}
85d = tuple(rec.keys): Rec.valueforrecdb2["d"]}
86
87f = db2["f"].first_record().value
88
89인쇄("나:")
90 forreci:
91인쇄(f" rec")
92인쇄("j:")
93 forrecj:
94인쇄(f" rec")
95인쇄("a:")
96 forreca:
97인쇄(f" rec : a[rec]")
98인쇄("b:")
99 forrecb:
100인쇄(f" rec : b[rec]")
101인쇄("d:")
102 recd:
103인쇄(f" rec : d[rec]")
104인쇄(f"f:\n f")