11from게임
가져오기GamsWorkspace
16i '통조림 공장' / 시애틀, 샌디에고 /
17j 'markets' / 뉴욕, 시카고, 토피카 /;
34스칼라 f '1,000마일당 케이스당 운임(달러)' / 90 /;
47스칼라 f '1,000마일당 케이스당 달러 단위의 화물';
49$if 설정되지 않음 gdxincname $abort '제공된 데이터 파일에 대한 포함 파일 이름 없음'
54매개변수 c(i,j) '케이스당 수천 달러의 운송 비용';
55c(i,j) = f*d(i,j)/1000;
65supply(i) '공장 i의 공급 제한을 준수하세요'
66demand(j) '시장 j의 수요를 충족';
68비용.. z =e= sum((i,j), c(i,j)*x(i,j));
70공급(i).. 합계(j, x(i,j)) =l= a(i);
72수요(j).. 합계(i, x(i,j)) =g= b(j);
76z를 최소화하는 lp를 사용하여 전송을 해결합니다.
81if__name__ ==
"__main__":
82sys_dir = sys.argv[1]
iflen(sys.argv) > 1
그밖에 없음
83work_dir = sys.argv[2]
iflen(sys.argv) > 2
그밖에 없음
84ws = GamsWorkspace(system_directory=sys_dir,working_directory=work_dir)
86작업 = ws.add_job_from_string(GAMS_DATA)
88job.out_db.export(os.path.join(ws.working_directory,
"tdata.gdx"))
89작업 = ws.add_job_from_string(GAMS_MODEL)
92opt.defines[
"gdxincname"] =
"tdata"
93opt.all_model_types =
"익스프레스"
95 forrec
에job.out_db[
"x"]:
97f
"x(rec.key(0),rec.key(1)): 레벨=rec.level 한계=rec.marginal"
100job_data = ws.add_job_from_string(GAMS_DATA)
101job_model = ws.add_job_from_string(GAMS_MODEL)
103opt.defines[
"gdxincname"] = job_data.out_db.name
104job_model.run(opt, 데이터베이스=job_data.out_db)
105 forrec
에job_model.out_db[
"x"]:
107f
"x(rec.key(0),rec.key(1)): 레벨=rec.level 한계=rec.marginal"