22from게임
가져오기GamsWorkspace, GamsSet
24if__name__ ==
"__main__":
25sys_dir = sys.argv[1]
iflen(sys.argv) > 1
그밖에 없음
26work_dir = sys.argv[2]
iflen(sys.argv) > 2
그밖에 없음
27ws = GamsWorkspace(system_directory=sys_dir,working_directory=work_dir)
31시장 = [
"뉴욕",
"시카고",
"토피카"]
32용량 =
"시애틀": 350.0,
"샌디에고": 600.0}
33수요 =
"뉴욕": 325.0,
"시카고": 300.0,
"토피카": 275.0}
40 (
"샌디에이고",
"토피카"): 1.4,
47i = db.add_set(
"나", 1,
"통조림 공장")
51j = GamsSet(db,
"j", 1,
"시장")
56a = db.add_parameter_dc(
"a", [i],
"공장의 생산능력")
58a.add_record(p).value = 용량[p]
61 if 아님a.check_domains():
62 올림예외(
"예기치 않은 메가 슬롯 위반")
65b = db.add_parameter_dc(
"b", [
"j"],
"경우에 따라 시장 j의 수요")
67b.add_record(m).value = 수요[m]
70 if 아님b.check_domains():
71 올림예외(
"b에서 예상치 못한 메가 슬롯 위반")
74d = db.add_parameter_dc(
"d", [i, j],
"수천 마일 단위의 거리")
75 fork, v
initer(distance.items()):
76d.add_record((k[0], k[1])).value = v
79 if 아님d.check_domains():
80 올림예외(
"d에서 예상치 못한 메가 슬롯 위반")
83 if 아님db.check_domains():
84 올림예외(
"DB에서 예기치 않은 메가 슬롯 위반")
87d.add_record((
"시애틀",
"아아")).값 = 1
88d.add_record((
"bb",
"시애틀")).값 = 1
89a.add_record(
"아아").값 = 1
90a.add_record(
"bb").값 = 1
91b.add_record(
"bb").값 = 1
92b.add_record(
"아아").값 = 1
96 올림예외(
"DB에 대한 메가 슬롯 위반이 인식되지 않음")
99 올림예외(
"인식되지 않는 메가 슬롯 위반")
102 올림예외(
"d에 대한 메가 슬롯 위반이 인식되지 않습니다")
105 if 아님b.check_domains():
106 올림예외(
"b에서 예상치 못한 메가 슬롯 위반")
111 forsdv
에a.get_symbol_dvs():
113 forvi
insdv.violation_idx:
116인쇄(f
"<> sdv.symbol_record.keys<<")
120f
"a에 대한 메가 슬롯 위반 수는 2여야 하지만 dv_count개를 확인했습니다."
126 forsdv
ind.get_symbol_dvs():
128 forvi
에sdv.violation_idx:
132인쇄(f
"<> sdv.symbol_record.keys<<")
136f
"a에 대한 메가 슬롯 위반 수는 3이어야 하지만 dv_count개를 확인했습니다."
142 forddv
에db.get_database_dvs():
143인쇄(f
" > ddv.symbol.name:")
144 forsdv
inddv.symbol_dvs:
146 forvi
에sdv.violation_idx:
150인쇄(f
"<> sdv.symbol_record.keys<<")
154f
"DB에 대한 메가 슬롯 위반 수는 5개여야 하지만 dv_count개를 보았습니다."
160 용ddv
indb.get_database_dvs(3):
161인쇄(f
" > ddv.symbol.name:")
162 forsdv
inddv.symbol_dvs:
164 forvi
에sdv.violation_idx:
168인쇄(f
"<> sdv.symbol_record.keys<<")
172f
"DB에 대한 메가 슬롯 위반 수는 3이어야 하지만 dv_count개를 보았습니다."
178 forddv
에db.get_database_dvs(0, 1):
179인쇄(f
" > ddv.symbol.name:")
180 forsdv
에ddv.symbol_dvs:
182 forvi
insdv.violation_idx:
186인쇄(f
"<> sdv.symbol_record.keys<<")
190f
"DB에 대한 메가 슬롯 위반 수는 2여야 하지만 dv_count개를 보았습니다."
197db.suppress_auto_domain_checking =
참
201 "기본적으로 메가 슬롯 위반이 포함된 GamsDatabase를 내보낼 수 없어야 합니다."
205db2 = ws.add_database_from_gdx(
"test.gdx")
210 ifisinstance(s, GamsSet):
215f
"메가 슬롯 i에서 예상치 못한 라벨 rec.key(0)이(가) 발견되었습니다."
221f
"메가 슬롯 j에서 예상치 못한 라벨 rec.key(0)이(가) 발견되었습니다."
224 올림예외(f
"GamsSet i와 j가 필요했지만 s.name을(를) 찾았습니다.")
226 올림예외(f
"GamsSet을 메가 슬롯으로 예상했지만 완화된 메가 슬롯 s을(를) 찾았습니다.")
232j_alias = ws.add_job_from_string(
233 "설정 i '통조림 공장' / 시애틀, 샌디에이고 /;\n별칭 (i,ii);"
236ii = j_alias.out_db[
"ii"]
241test_db = ws.add_database()
242test_set = test_db.add_set(
"테스트", 1)
245test_set.add_record((
""))
246인쇄(
"빈 UEL을 추가한 후 테스트 세트의 요소 수:")
247인쇄(f
" > test_set.number_records")
250test_set.add_record(
" a ").text =
"a"
251인쇄(
"기록 'a'는 'a'와 동일해야 합니다:")
252인쇄(f
" > test_set.find_record(' a').text")
257 "123456789012345678901234567890123456789012345678901234567890123"
263 "1234567890123456789012345678901234567890123456789012345678901234"
269 "63자를 초과하는 레코드를 추가하는 것은 불가능해야 합니다."
276 "12345678901234567890123456789012345678901234567890123 45678901234567890123456789012345678901234567890123456789012345678901 23456789012345678901234567890123456789012345678901234567890123456789 012345678901234567890123456789012345678901234567890123456789012345",
282 "123456789012345678901234567890123456789012345678901234 56789012345678901234567890123456789012345678901234567890123456789012 34567890123456789012345678901234567890123456789012345678901234567890 123456789012345678901234567890123456789012345678901234567890123456",
288 "255자를 초과하는 설명 텍스트를 추가하는 것은 불가능해야 합니다."
291test_set.add_record(
"알았어").text = (
292 "12345678901234567890123456789012345678901234567890123 45678901234567890123456789012345678901234567890123456789012345678901 23456789012345678901234567890123456789012345678901234567890123456789 012345678901234567890123456789012345678901234567890123456789012345"
295test_set.add_record(
"안돼").text = (
296 "123456789012345678901234567890123456789012345678901234 56789012345678901234567890123456789012345678901234567890123456789012 34567890123456789012345678901234567890123456789012345678901234567890 123456789012345678901234567890123456789012345678901234567890123456"
302 "255자를 초과하는 세트 요소 텍스트를 추가하는 것은 불가능해야 합니다."
306test_set.add_record(
"인용문'")
307test_set.add_record(
'인용문"')
309test_set.add_record(
"인용문'\"")
314 "작은따옴표와 큰따옴표를 동시에 포함하는 레코드를 추가하는 것은 불가능해야 합니다."
316test_db.export(
"test.gdx")