로드 중...
검색 중...
일치하는 항목 없음
TransportClass.cs
1사용 중시스템;
2사용 중System.Collections.Generic;
3사용 중System.Linq;
4사용 중시스템.텍스트;
5사용 중시스템.IO;
6사용 중슬롯;
7
8네임스페이스TransportSeq
9{
13 공개 클래스운송
14{
15 비공개 GAMSSetfi, fj;
16 비공개 슬롯매개변수파, 페이스북, fd, ff;
17 비공개 슬롯변수fx, fz;
18 비공개 슬롯옵션fopt;
19
20 비공개 슬롯작업공간fws;
21 비공개 슬롯데이터베이스fDbIn1, fDbIn2, fDbOut1;
22
23 비공개 GAMSJob직업;
24
28 비공개 문자열GetModelSource()
29{
30 반환 @"
31세트
32나는 통조림 공장
33j 시장
34
35매개변수
36a(i) 경우에 따라 공장 i의 용량
37b(j) 경우에 따라 시장 j의 수요
38d(i,j) 거리(천 마일)
39천 마일당 케이스당 달러 단위의 스칼라 f 화물;
40
41$if가 설정되지 않음 dbIn1 $abort '제공된 데이터베이스 1 파일에 대한 파일 이름이 없음'
42$gdxin %dbIn1%
43$load i j a b d
44
45$if가 설정되지 않음 dbIn2 $abort 'In-Database 2 파일에 대한 파일 이름이 제공되지 않음'
46$gdxin %dbIn2%
47$load f
48$gdxin
49
50매개변수 c(i,j) 운송 비용(케이스당 수천 달러) ;
51
52c(i,j) = f * d(i,j) / 1000 ;
53
54변수
55x(i,j) 케이스의 배송 수량
56z 총 운송 비용(수천 달러) ;
57
58양수 변수 x ;
59
60수식
61비용 정의 목적 함수
62공급(i) 공장 i의 공급 제한 준수
63수요(j)는 시장 j의 수요를 충족합니다. ;
64
65비용 .. z =e= sum((i,j), c(i,j)*x(i,j)) ;
66
67공급(i) .. 합계(j, x(i,j)) =l= a(i) ;
68
69수요(j) .. 합계(i, x(i,j)) =g= b(j) ;
70
71모델 전송 /all/ ;
72
73z를 최소화하는 lp를 사용하여 전송을 해결합니다.
74
75$if가 설정되지 않음 dbOut1 $abort '제공된 외부 데이터베이스 1 파일에 대한 파일 이름이 없음'
76execute_unload '%dbOut1%', x, z;
77";
78}
79
84{
85fws = ws;
86fopt = ws.추가옵션();
87
88fDbIn1 = ws.데이터베이스 추가(모델 이름:"dbIn1");
89fDbIn2 = ws.데이터베이스 추가(모델 이름:"dbIn2");
90
91fopt.SolveLink =슬롯옵션.ESolveLink.LoadLibrary;
92fopt.AllModelTypes ="복합단지";
93fopt.정의.추가("dbOut1", "dbOut1");
94
95fi = fDbIn1.AddSet("나", "통조림 공장");
96fj = fDbIn1.AddSet("j", "시장");
97fa = fDbIn1.매개변수 추가("a", "케이스에 있는 식물 i의 용량", fi);
98fb = fDbIn1.매개변수 추가("b", "경우에 따라 시장 j의 수요", fj);
99fd = fDbIn1.매개변수 추가("d", "수천 마일 단위의 거리", fi, fj);
100ff = fDbIn2.매개변수 추가("f", "1,000마일당 케이스당 화물(달러)");
101
102직업 = ws.AddJobFromString(GetModelSource());
103}
104
108 공개 무효 실행(슬롯체크포인트체크포인트 =, TextWriter 출력 =)
109{
110 if(!fDbIn1.체크도메인())
111 던지기 신규 슬롯예외("데이터베이스 1의 도메인 오류");
112 if(!fDbIn2.체크도메인())
113 던지다 신규 슬롯예외("데이터베이스 2의 도메인 오류");
114
115직업.실행(fopt, 체크포인트, 출력,거짓, fDbIn1, fDbIn2);
116
117fDbOut1 = fws.AddDatabaseFromGDX(fopt.정의["dbOut1"] +".gdx");
118fx = fDbOut1.GetVariable("x");
119fz = fDbOut1.GetVariable("z");
120}
121
122#region 데이터 입력 기호
126 공개 GAMSSet i
127{얻기{반환fi;
128
132 공개 GAMSSet j
133{얻기{반환fj;
134
139{얻기{반환fa;
140
145{얻기{반환fb;
146
151{얻기{반환fd;
152
157{얻기{반환ff;
158#endregion 데이터 입력 기호
159
160#region 데이터 출력 기호
165{얻기{반환fx;
166
171{얻기{반환fz;
172#endregion 데이터 출력 기호
173
178{얻기{반환fopt;
179}
180}
GAMSVariable GetVariable(문자열 변수 식별자)
GAMSSet AddSet(문자열 식별자, int 차원, 문자열 설명텍스트="", SetType setType=SetType.multi)
GAMSParameter AddParameter(문자열 식별자, 정수 차원, 문자열 설명텍스트="")
void Run(GAMSOptions gamsOptions=null, GAMSCheckpoint 체크포인트=null, TextWriter 출력=null, Boolean createOutDB=true)
사전< 문자열, 문자열 > 정의
GAMSJob AddJobFromString(문자열 gamsSource, GAMSCheckpoint 체크포인트=null, 문자열 jobName=null)
GAMSDatabase AddDatabaseFromGDX(문자열 gdxFileName, 문자열 데이터베이스 이름=null, 문자열 inModelName=null)
GAMSDatabase AddDatabase(문자열 데이터베이스 이름=null, 문자열 inModelName=null)
GAMSOptions AddOptions(GAMSOptions optFrom=null)
슬롯 trnsport 모델용 래퍼 클래스.
슬롯변수 z
z: 총 운송 비용(천 달러)
운송(GAMSWorkspace ws)
교통 문제.
슬롯매개변수 d
d(i,j): 거리(천 마일)
슬롯옵션 선택
trnsport 모델 실행을 위한 옵션.
슬롯변수 x
x(i,j): 케이스의 배송 수량
슬롯매개변수 a
a(i): 경우에 따라 플랜트 i의 용량
슬롯매개변수 b
b(i): 경우에 따라 시장 j의 수요
슬롯매개변수 f
f: 천 마일당 케이스당 화물(달러)
void Run(GAMSCheckpoint 체크포인트=null, TextWriter 출력=null)
trnsport 모델을 실행합니다.
GAMSSet i
i(i): 통조림 공장