13 def__init__(self, system_directory=없음, Working_directory=없음):
14self._ws = GamsWorkspace(
15system_directory=system_directory, Working_directory=working_directory
20db = self._ws.add_database()
22f = db.add_parameter(
"f", 0,
"1,000마일당 케이스당 화물(달러)")
23f.add_record().value = 90 * bmult
24작업 = self._ws.add_job_from_string(Optimizer.GAMS_MODEL)
25opt = self._ws.add_options()
26opt.defines[
"gdxincname"] = db.name
27job.run(opt, 데이터베이스=db)
28 반환job.out_db[
"z"].first_record().level
32i '통조림 공장' / 시애틀, 샌디에이고 /
33j 'markets' / 뉴욕, 시카고, 토피카 /;
50스칼라 f '1,000마일당 케이스당 달러 단위의 화물';
52$if 설정되지 않음 gdxincname $abort '제공된 데이터 파일에 대한 포함 파일 이름 없음'
57매개변수 c(i,j) '케이스당 수천 달러의 운송 비용';
58c(i,j) = f*d(i,j)/1000;
68supply(i) '공장 i의 공급 제한을 준수하세요'
69demand(j) '시장 j의 수요를 충족';
71비용.. z =e= sum((i,j), c(i,j)*x(i,j));
73공급(i).. 합계(j, x(i,j)) =l= a(i);
75수요(j).. 합계(i, x(i,j)) =g= b(j);
79z를 최소화하는 lp를 사용하여 전송을 해결합니다.
85if__name__ ==
"__main__":
86sys_dir = sys.argv[1]
iflen(sys.argv) > 1
그밖에 없음
87work_dir = sys.argv[2]
iflen(sys.argv) > 2
그밖에 없음
88최적화 = 최적화(sys_dir, work_dir)
89bmult_list = [0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3]
92 defrun_scenario(최적화 프로그램, bmult, 잠금):
93obj = Optimizer.solve(bmult, 잠금)
95인쇄(f
"시나리오 bmult=bmult, Obj:obj")
99t = Thread(target=run_scenario, args=(최적화 프로그램, bmult, 잠금))