12from게임
가져오기GamsWorkspace, GamsModifier
16i '통조림 공장' / 시애틀, 샌디에고 /
17j 'markets' / 뉴욕, 시카고, 토피카 /;
35f '1,000마일당 케이스당 운임(달러)' / 90 /
38매개변수 c(i,j) '케이스당 수천 달러의 운송 비용';
39c(i,j) = f*d(i,j)/1000;
49supply(i) '공장 i의 공급 제한을 준수하세요'
50demand(j) '시장 j의 수요를 충족';
52비용.. z =e= sum((i,j), c(i,j)*x(i,j));
54공급(i).. 합계(j, x(i,j)) =l= a(i);
56수요(j).. sum(i, x(i,j)) =g= bmult*b(j);
62defscen_solve(체크포인트, bmult_list, list_lock, io_lock):
64mi = checkpoint.add_modelinstance()
66bmult = mi.sync_db.add_parameter(
"bmult", 0,
"수요 승수")
68opt.all_model_types =
"복합체"
71mi.instantiate(
"운송은 lp min z를 사용합니다", GamsModifier(bmult), opt)
72bmult.add_record().value = 1.0
82bmult.first_record().value = b
88인쇄(f
" 모델 상태: mi.model_status")
89인쇄(f
" 해결 상태: mi.solver_status")
90인쇄(f
" Obj: mi.sync_db['z'].first_record().level")
94if__name__ ==
"__main__":
95sys_dir = sys.argv[1]
iflen(sys.argv) > 1
그밖에 없음
96work_dir = sys.argv[2]
iflen(sys.argv) > 2
그밖에 없음
97ws = GamsWorkspace(system_directory=sys_dir,working_directory=work_dir)
99cp = ws.add_checkpoint()
102작업 = ws.add_job_from_string(GAMS_MODEL)
105bmult_list = [1.3, 1.2, 1.1, 1.0, 0.9, 0.8, 0.7, 0.6]
116target=scen_solve, args=(cp, bmult_list, list_lock, io_lock)