8from게임
가져오기GamsWorkspace, SolveLink
20스칼라 f '1,000마일당 케이스당 달러 단위의 화물';
22$if가 설정되지 않음 dbIn1 $abort '제공된 데이터베이스 1 파일에 대한 파일 이름이 없음'
27$if가 설정되지 않음 dbIn2 $abort 'In-Database 2 파일에 대한 파일 이름이 제공되지 않음'
32매개변수 c(i,j) '케이스당 수천 달러의 운송 비용';
33c(i,j) = f*d(i,j)/1000;
43supply(i) '공장 i의 공급 제한을 준수하세요'
44demand(j) '시장 j의 수요를 충족';
46비용.. z =e= sum((i,j), c(i,j)*x(i,j));
48공급(i).. 합계(j, x(i,j)) =l= a(i);
50수요(j).. 합계(i, x(i,j)) =g= b(j);
54z를 최소화하는 lp를 사용하여 전송을 해결합니다.
56$if가 설정되지 않음 dbOut1 $abort '제공된 외부 데이터베이스 1 파일에 대한 파일 이름이 없음'
57execute_unload '%dbOut1%', x, z;
62 def__init__(self, system_directory, Working_directory):
63self._ws = GamsWorkspace(
64system_directory=system_directory, Working_directory=working_directory
66self.opt = self._ws.add_options()
68self._dbin1 = self._ws.add_database(in_model_name=
"dbIn1")
69self._dbin2 = self._ws.add_database(in_model_name=
"dbIn2")
71self.opt.solvelink = SolveLink.LoadLibrary
72self.opt.all_model_types =
"복합단지"
73self.opt.defines[
"dbOut1"] =
"dbOut1"
75self.i = self._dbin1.add_set(
"나", 1,
"통조림 공장")
76self.j = self._dbin1.add_set(
"j", 1,
"시장")
77self.a = self._dbin1.add_parameter_dc(
78 "a", [self.i],
"케이스에 있는 식물 i의 용량"
80self.b = self._dbin1.add_parameter_dc(
81 "b", [self.j],
"경우에 따라 시장 j의 수요"
83self.d = self._dbin1.add_parameter_dc(
84 "d", [self.i, self.j],
"수천 마일 단위의 거리"
86self.f = self._dbin2.add_parameter(
87 "f", 0,
"1,000마일당 케이스당 화물(달러)"
92self._job = self._ws.add_job_from_string(GAMS_MODEL)
94 defrun(self, 체크포인트=없음, 출력=없음):
95self._job.run(self.opt, 체크포인트, 출력,
거짓, [self._dbin1, self._dbin2])
97self._dbout1 = self._ws.add_database_from_gdx(
98self.opt.defines[
"dbOut1"] +
".gdx"
100self.x = self._dbout1[
"x"]
101self.z = self._dbout1[
"z"]