10에서openpyxl
가져오기load_workbook
22스칼라 f '1,000마일당 케이스당 운임(달러)' / 90 /;
24$if 설정되지 않음 gdxincname $abort '제공된 데이터 파일에 대한 포함 파일 이름 없음'
29매개변수 c(i,j) '케이스당 수천 달러의 운송 비용';
30c(i,j) = f*d(i,j)/1000;
40supply(i) '공장 i의 공급 제한을 준수하세요'
41demand(j) '시장 j의 수요를 충족';
43비용.. z =e= sum((i,j), c(i,j)*x(i,j));
45공급(i).. 합계(j, x(i,j)) =l= a(i);
47수요(j).. 합계(i, x(i,j)) =g= b(j);
51z를 최소화하는 lp를 사용하여 전송을 해결합니다.
56if__name__ ==
"__main__":
57sys_dir = sys.argv[1]
iflen(sys.argv) > 1
그밖에 없음
58work_dir = sys.argv[2]
iflen(sys.argv) > 2
그밖에 없음
59ws = GamsWorkspace(system_directory=sys_dir,working_directory=work_dir)
62os.path.join(ws.system_directory,
"api파일",
"데이터",
"transport.xlsx")
70distance.max_column - 1 != 수요.max_column
71 또는distance.max_row - 1 != 용량.max_row
73 올림예외(
"스프레드시트의 크기가 일치하지 않습니다")
76i = db.add_set(
"나", 1,
"식물")
77j = db.add_set(
"j", 1,
"시장")
78capacity_param = db.add_parameter_dc(
"a", [i],
"용량")
79demand_param = db.add_parameter_dc(
"b", [j],
"수요")
80distance_param = db.add_parameter_dc(
"d", [i, j],
"거리")
82 forc
incapacity.iter_cols():
85capacity_param.add_record(key).value = c[1].value
87 forc
indemand.iter_cols():
90demand_param.add_record(key).value = c[1].value
92 forc
in범위(2, distance.max_column + 1):
93 forr
에범위(2, distance.max_row + 1):
98v = distance.cell(행=r, 열=c).값
99distance_param.add_record(keys).value = v
102작업 = ws.add_job_from_string(GAMS_MODEL)
103opt = ws.add_options()
104opt.defines[
"gdxincname"] = db.name
105opt.all_model_types =
"익스프레스"
106job.run(opt, 데이터베이스=db)
107 forrec
에job.out_db[
"x"]:
109f
"x(rec.key(0),rec.key(1)): 레벨=rec.level 한계=rec.marginal"