13i '통조림 공장' / 시애틀, 샌디에고 /
14j 'markets' / 뉴욕, 시카고, 토피카 /;
32f '1,000마일당 케이스당 운임(달러)' / 90 /
35매개변수 c(i,j) '케이스당 수천 달러의 운송 비용';
36c(i,j) = f*d(i,j)/1000;
46supply(i) '공장 i의 공급 제한을 준수하세요'
47demand(j) '시장 j의 수요를 충족';
49비용.. z =e= sum((i,j), c(i,j)*x(i,j));
51공급(i).. 합계(j, x(i,j)) =l= a(i);
53수요(j).. sum(i, x(i,j)) =g= bmult*b(j);
57스칼라 ms '모델 상태', ss '해결 상태';
61defrun_scenario(작업 공간, 체크포인트, io_lock, b):
62작업 = 작업 공간.add_job_from_string(
63f
"bmult=b; lp를 사용하여 전송 최소 z 해결; ms=transport.modelstat; ss=transport.solvestat;",
70인쇄(f
" 모델 상태: job.out_db['ms'].first_record().value")
71인쇄(f
" 해결 상태: job.out_db['ss'].first_record().value")
72인쇄(f
" Obj: job.out_db['z'].first_record().level")
76if__name__ ==
"__main__":
77sys_dir = sys.argv[1]
iflen(sys.argv) > 1
그밖에 없음
78work_dir = sys.argv[2]
iflen(sys.argv) > 2
그밖에 없음
79ws = GamsWorkspace(system_directory=sys_dir,working_directory=work_dir)
81cp = ws.add_checkpoint()
84작업 = ws.add_job_from_string(GAMS_MODEL)
86bmult = [0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3]
92스레드[b] = 스레드(대상=run_scenario, args=(ws, cp, io_lock, b))