로드 중...
검색 중...
일치하는 항목 없음
transport_class.py
이 파일의 문서로 이동하세요.
1
7
8from게임가져오기GamsWorkspace, SolveLink
9
10GAMS_MODEL ="""
11설정
12i '통조림 식물'
13j '시장';
14
15매개변수
16a(i) '경우에 따른 식물 i의 용량'
17b(j) '경우에 따라 시장 j의 수요'
18d(i,j) '거리(천 마일)';
19
20스칼라 f '1,000마일당 케이스당 달러 단위의 화물';
21
22$if가 설정되지 않음 dbIn1 $abort '제공된 데이터베이스 1 파일에 대한 파일 이름이 없음'
23$gdxIn %dbIn1%
24$load i j a b d
25$gdxIn
26
27$if가 설정되지 않음 dbIn2 $abort 'In-Database 2 파일에 대한 파일 이름이 제공되지 않음'
28$gdxIn %dbIn2%
29$load f
30$gdxIn
31
32매개변수 c(i,j) '케이스당 수천 달러의 운송 비용';
33c(i,j) = f*d(i,j)/1000;
34
35변수
36x(i,j) '케이스의 배송 수량'
37z '총 운송 비용(수천 달러)';
38
39양수 변수 x;
40
41수식
42비용 '목적 함수 정의'
43supply(i) '공장 i의 공급 제한을 준수하세요'
44demand(j) '시장 j의 수요를 충족';
45
46비용.. z =e= sum((i,j), c(i,j)*x(i,j));
47
48공급(i).. 합계(j, x(i,j)) =l= a(i);
49
50수요(j).. 합계(i, x(i,j)) =g= b(j);
51
52모델 수송 /all/;
53
54z를 최소화하는 lp를 사용하여 전송을 해결합니다.
55
56$if가 설정되지 않음 dbOut1 $abort '제공된 외부 데이터베이스 1 파일에 대한 파일 이름이 없음'
57execute_unload '%dbOut1%', x, z;
58"""
59
60
61클래스수송():
62 def__init__(self, system_directory, Working_directory):
63self._ws = GamsWorkspace(
64system_directory=system_directory, Working_directory=working_directory
65 )
66self.opt = self._ws.add_options()
67
68self._dbin1 = self._ws.add_database(in_model_name="dbIn1")
69self._dbin2 = self._ws.add_database(in_model_name="dbIn2")
70
71self.opt.solvelink = SolveLink.LoadLibrary
72self.opt.all_model_types ="복합단지"
73self.opt.defines["dbOut1"] ="dbOut1"
74
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의 용량"
79 )
80self.b = self._dbin1.add_parameter_dc(
81 "b", [self.j],"경우에 따라 시장 j의 수요"
82 )
83self.d = self._dbin1.add_parameter_dc(
84 "d", [self.i, self.j],"수천 마일 단위의 거리"
85 )
86self.f = self._dbin2.add_parameter(
87 "f", 0,"1,000마일당 케이스당 화물(달러)"
88 )
89self.x =없음
90self.z =없음
91
92self._job = self._ws.add_job_from_string(GAMS_MODEL)
93
94 defrun(self, 체크포인트=없음, 출력=없음):
95self._job.run(self.opt, 체크포인트, 출력,거짓, [self._dbin1, self._dbin2])
96
97self._dbout1 = self._ws.add_database_from_gdx(
98self.opt.defines["dbOut1"] +".gdx"
99 )
100self.x = self._dbout1["x"]
101self.z = self._dbout1["z"]