10from게임
가져오기GamsWorkspace
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를 사용하여 전송을 해결합니다.
57defread_set(connection, db, query_string, set_name, set_dim, set_exp=""):
60cursor.execute(query_string)
63 iflen(데이터[0]) != set_dim:
65 "select 문의 필드 수가 setDim과 일치하지 않습니다"
68i = db.add_set(set_name, set_dim, set_exp)
78 "오류: 데이터베이스에서 필요한 데이터를 검색하는 데 실패했습니다.\n0".format(
86defread_parameter(connection, db, query_string, par_name, par_dim, par_exp=""):
89cursor.execute(query_string)
92 iflen(데이터[0]) != par_dim + 1:
94 "select 문의 필드 수가 par_dim+1과 일치하지 않습니다"
97a = db.add_parameter(par_name, par_dim, par_exp)
101 foridx
in범위(len(행) - 1):
102keys.append(str(row[idx]))
103a.add_record(keys).value = 행[par_dim]
107 "오류: 데이터베이스에서 필요한 데이터를 검색하는 데 실패했습니다.\n0".format(
115defwrite_variable(연결, db, var_name, 열_이름):
117var = db.get_variable(var_name)
118 iflen(column_names) != var.dimension:
120 "열 이름의 수가 변수의 차원과 일치하지 않습니다"
125cursor.execute(
"드롭 테이블 "+ var_name)
129쿼리 =
"테이블 생성"+ var_name +
"("
131쿼리 += 열 +
" varchar(64), "
137쿼리 =
""에 삽입하세요+ var_name +
"("
143쿼리 += str(rec.level) +
")"
149 "오류: 데이터베이스에 변수를 쓰는 데 실패했습니다.\n0".format(ex)
156str_access_conn =
r"DRIVER=Microsoft Access Driver(*.mdb, *.accdb);DBQ=..\..\..\..\apifiles\Data\transport.accdb"
158연결 = pyodbc.connect(str_access_conn)
161 "오류: 데이터베이스 연결 생성에 실패했습니다. \n0".format(ex)
164write_variable(연결, db,
"x", [
"나",
"j"])
168defread_from_access(ws):
169db = ws.add_database()
172str_access_conn =
r"DRIVER=Microsoft Access Driver(*.mdb, *.accdb);DBQ=..\..\..\..\apifiles\Data\transport.accdb"
175연결 = pyodbc.connect(str_access_conn)
177 올림예외(f
"오류: 데이터베이스 연결 생성에 실패했습니다.\ne")
180read_set(연결, db,
"식물에서 식물 선택",
"나", 1,
"통조림 공장")
181read_set(연결, db,
"시장에서 시장 선택",
"j", 1,
"시장")
203 "공장,시장,거리 FROM 거리 선택",
213if__name__ ==
"__main__":
214sys_dir = sys.argv[1]
iflen(sys.argv) > 1
그밖에 없음
215work_dir = sys.argv[2]
iflen(sys.argv) > 2
그밖에 없음
216ws = GamsWorkspace(system_directory=sys_dir, Working_directory=work_dir)
219db = read_from_access(ws)
222작업 = ws.add_job_from_string(GAMS_MODEL)
223opt = ws.add_options()
224opt.defines[
"gdxincname"] = db.name
225opt.all_model_types =
"익스프레스"
226job.run(옵션, 데이터베이스=db)
229write_results(job.out_db)