10에서게임
가져오기GamsWorkspace, GamsModifier, UpdateAction, VarType
14i '통조림 공장' / 시애틀, 샌디에고 /
15j 'markets' / 뉴욕, 시카고, 토피카 /;
33f '1,000마일당 케이스당 달러 단위의 화물' / 90 /
36매개변수 c(i,j) '케이스당 수천 달러의 운송 비용';
37c(i,j) = f*d(i,j)/1000;
47supply(i) '공장 i의 공급 제한을 준수하세요'
48demand(j) '시장 j의 수요를 충족';
50비용.. z =e= sum((i,j), c(i,j)*x(i,j));
52공급(i).. 합계(j, x(i,j)) =l= a(i);
54수요(j).. sum(i, x(i,j)) =g= bmult*b(j);
59if__name__ ==
"__main__":
60sys_dir = sys.argv[1]
iflen(sys.argv) > 1
그밖에 없음
61work_dir = sys.argv[2]
iflen(sys.argv) > 2
그밖에 없음
62ws = GamsWorkspace(system_directory=sys_dir, Working_directory=work_dir)
64cp = ws.add_checkpoint()
67작업 = ws.add_job_from_string(GAMS_MODEL)
71mi = cp.add_modelinstance()
72bmult = mi.sync_db.add_parameter(
"bmult", 0,
"수요 승수")
74opt.all_model_types =
"복합체"
77mi.instantiate(
"운송은 lp min z를 사용합니다", GamsModifier(bmult), opt)
79bmult.add_record().value = 1.0
80bmult_list = [0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3]
83bmult.first_record().value = b
86인쇄(f
" 모델 상태: mi.model_status")
87인쇄(f
" 해결 상태: mi.solver_status")
88인쇄(f
" Obj: mi.sync_db['z'].first_record().level")
91mi = cp.add_modelinstance()
92x = mi.sync_db.add_variable(
"x", 2, VarType.Positive)
93xup = mi.sync_db.add_parameter(
"xup", 2,
"x의 상한")
96mi.instantiate(
"운송은 lp min z를 사용합니다", GamsModifier(x, UpdateAction.Upper, xup))
100 forj
injob.out_db[
"j"]:
102xup.add_record((i.key(0), j.key(0))).value = 0
104인쇄(f
"시나리오 링크가 차단되었습니다: i.key(0) - j.key(0)")
105인쇄(f
" 모델 상태: mi.model_status")
106인쇄(f
" 솔베상태: mi.solver_status")
107인쇄(f
" 개체: mi.sync_db['z'].find_record().level")