21스칼라 f '1,000마일당 케이스당 달러 단위의 화물';
23$if 설정되지 않음 gdxincname $abort '제공된 데이터 파일에 대한 포함 파일 이름 없음'
28매개변수 c(i,j) '케이스당 수천 달러의 운송 비용';
29c(i,j) = f*d(i,j)/1000;
39supply(i) '공장 i의 공급 제한을 준수하세요'
40demand(j) '시장 j의 수요를 충족';
42비용.. z =e= sum((i,j), c(i,j)*x(i,j));
44공급(i).. 합계(j, x(i,j)) =l= a(i);
46수요(j).. 합계(i, x(i,j)) =g= b(j);
50z를 최소화하는 lp를 사용하여 전송을 해결합니다.
55if__name__ ==
"__main__":
56sys_dir = sys.argv[1]
iflen(sys.argv) > 1
그밖에 없음
57work_dir = sys.argv[2]
iflen(sys.argv) > 2
그밖에 없음
58ws = GamsWorkspace(system_directory=sys_dir,working_directory=work_dir)
61시장 = [
"뉴욕",
"시카고",
"토피카"]
62용량 =
"시애틀": 350.0,
"샌디에고": 600.0}
63수요 =
"뉴욕": 325.0,
"시카고": 300.0,
"토피카": 275.0}
75i = db.add_set(
"나", 1,
"통조림 공장")
79j = db.add_set(
"j", 1,
"시장")
83a = db.add_parameter_dc(
"a", [i],
"케이스에 있는 식물 i의 용량")
85a.add_record(p).value = 용량[p]
87b = db.add_parameter_dc(
"b", [j],
"경우에 따라 시장 j의 수요")
89b.add_record(m).value = 수요[m]
91d = db.add_parameter_dc(
"d", [i, j],
"수천 마일 단위의 거리")
92 fork, v
에distance.items():
93d.add_record(k).value = v
95f = db.add_parameter(
"f", 0,
"1,000마일당 케이스당 화물(달러)")
96f.add_record().value = 90
98작업 = ws.add_job_from_string(GAMS_MODEL)
100opt.defines[
"gdxincname"] = db.name
101opt.all_model_types =
"익스프레스"
102job.run(opt, 데이터베이스=db)
103 forrec
injob.out_db[
"x"]:
105f
"x(rec.key(0),rec.key(1)): 레벨=rec.level 한계=rec.marginal"