9from게임
가져오기GamsWorkspace, 액션
18a(i) '경우에 따라 식물 i의 용량' / /
19b(j) '경우에 따라 시장 j의 수요' / /
22스칼라 f '1,000마일당 케이스당 달러 단위의 화물' / 0 /;
24매개변수 c(i,j) '케이스당 수천 달러의 운송 비용';
25c(i,j) = f*d(i,j)/1000;
35supply(i) '공장 i의 공급 제한을 준수하세요'
36demand(j) '시장 j의 수요를 충족';
38비용.. z =e= sum((i,j), c(i,j)*x(i,j));
40공급(i).. 합계(j, x(i,j)) =l= a(i);
42수요(j).. 합계(i, x(i,j)) =g= b(j);
46z를 최소화하는 lp를 사용하여 전송을 해결합니다.
50$if 설정되지 않음 gdxincname $abort '제공된 데이터 파일에 대한 포함 파일 이름 없음'
60defcreate_save_restart(sys_dir, cp_file_name):
61ws = GamsWorkspace(os.path.dirname(cp_file_name), sys_dir)
62job_1 = ws.add_job_from_string(GAMS_BASE_MODEL)
64opt.action = Action.CompileOnly
65cp = ws.add_checkpoint(os.path.basename(cp_file_name))
69if__name__ ==
"__main__":
70sys_dir = sys.argv[1]
iflen(sys.argv) > 1
그밖에 없음
71work_dir = sys.argv[2]
iflen(sys.argv) > 2
그밖에os.path.join(os.curdir,
"tmp")
72ws = GamsWorkspace(system_directory=sys_dir,working_directory=work_dir)
76create_save_restart(sys_dir, os.path.join(work_dir,
"tbase"))
80시장 = [
"뉴욕",
"시카고",
"토피카"]
82용량 =
"시애틀": 350.0,
"샌디에고": 600.0}
84수요 =
"뉴욕": 325.0,
"시카고": 300.0,
"토피카": 275.0}
98i = db.add_set(
"나", 1,
"통조림 공장")
102j = db.add_set(
"j", 1,
"시장")
106a = db.add_parameter_dc(
"a", [i],
"케이스에 있는 식물 i의 용량")
108a.add_record(p).value = 용량[p]
110b = db.add_parameter_dc(
"b", [j],
"경우에 따라 시장 j의 수요")
112b.add_record(m).value = 수요[m]
114d = db.add_parameter_dc(
"d", [i, j],
"수천 마일 단위의 거리")
115 fork, v
에distance.items():
116d.add_record(k).value = v
118f = db.add_parameter(
"f", 0,
"1,000마일당 케이스당 화물(달러)")
119f.add_record().value = 90
122cp_base = ws.add_checkpoint(
"tbase")
123작업 = ws.add_job_from_string(GAMS_MODEL, cp_base)
124opt = ws.add_options()
125opt.defines[
"gdxincname"] = db.name
126opt.all_model_types =
"익스프레스"
127job.run(opt, 데이터베이스=db)
129 용rec
에job.out_db[
"x"]:
131f
"x(rec.key(0),rec.key(1)): 레벨=rec.level 한계=rec.marginal"