로드 중...
검색 중...
일치하는 항목 없음
Transport11.cs
1사용 중시스템;
2사용 중System.Collections.Generic;
3사용 중System.Linq;
4사용 중시스템.텍스트;
5사용 중시스템.IO;
6사용 중슬롯 커뮤니티;
7
8네임스페이스TransportSeq
9{
18 클래스운송11
19{
20
21 정적 공허메인(문자열[] 인수)
22{
23
24 // 일반적으로 애플리케이션 제공업체에서 제공하는 저장/다시 시작 파일을 생성합니다.
25 // 데모용으로 생성합니다
26 문자열wDir = Path.Combine(".", "tmp");
27CreateSaveRestart(Path.Combine(wDir,"tbase"));
28
29 // C# 데이터 구조를 사용하여 일부 데이터 정의
30목록<string> 식물 =신규목록<문자열>()
31{
32 "시애틀", "샌디에고"
33};
34목록<string> 시장 =신규목록<문자열>()
35{
36 "뉴욕", "시카고", "토피카"
37};
38사전<문자열, 더블> 용량 =신규사전<문자열, 더블>()
39{
40{"시애틀", 350.0 }, { "샌디에고", 600.0 }
41};
42사전<string, double> 수요 =신규사전<string, double>()
43{
44{"뉴욕", 325.0 }, { "시카고", 300.0 }, { "토피카", 275.0 }
45};
46사전<튜플<문자열, 문자열>,더블> 거리 =신규사전<Tuple<문자열, 문자열>,더블>()
47{
48{신규튜플<문자열,문자열> ("시애틀", "뉴욕"), 2.5 },
49{신규튜플<문자열,문자열> ("시애틀", "시카고"), 1.7 },
50{신규튜플<문자열,문자열> ("시애틀", "토피카"), 1.8 },
51{신규튜플<문자열,문자열> ("샌디에이고", "뉴욕"), 2.5 },
52{신규튜플<문자열,문자열> ("샌디에고", "시카고"), 1.8 },
53{신규튜플<문자열,문자열> ("샌디에고", "토피카"), 1.4 }
54};
55
57 if(Environment.GetCommandLineArgs().Length > 1)
58ws =신규 슬롯 커뮤니티작업공간(workingDirectory: wDir, systemDirectory: Environment.GetCommandLineArgs()[1]);
59 그밖에
60ws =신규 슬롯 커뮤니티작업공간(workingDirectory: wDir);
61 // C# 데이터 구조의 데이터로 GAMSDatabase 준비
63
64 GAMSSeti = DB.AddSet("나", 1,"통조림 공장");
65 foreach (문자열pin식물)
66i.AddRecord(p);
67
68 GAMSSetj = db.AddSet("j", 1,"시장");
69 foreach (문자열m시장)
70j.AddRecord(m);
71
72 슬롯 커뮤니티매개변수a = db.AddParameter("a", "케이스에 있는 식물 i의 용량", i);
73 foreach (문자열p식물)
74a.AddRecord(p).= 용량[p];
75
76 슬롯 커뮤니티매개변수b = db.AddParameter("b", "경우에 따라 시장 j의 수요", j);
77 foreach (문자열min시장)
78b.AddRecord(m).= 수요[m];
79
80 슬롯 커뮤니티매개변수d = db.AddParameter("d", "수천 마일 단위의 거리", i, j);
81 foreach(튜플<문자열, 문자열> tin거리.키)
82d.AddRecord(t.Item1, t.Item2).= 거리[t];
83
84 슬롯 커뮤니티매개변수f = db.AddParameter("f", "1,000마일당 케이스당 화물(달러)");
85f.AddRecord().= 90;
86
87 // 생성된 GAMSDatabase의 데이터를 사용하여 작업 실행
88 슬롯 커뮤니티체크포인트cpBase = ws.AddCheckpoint("tbase");
89 사용 중 (슬롯 커뮤니티옵션opt = ws.AddOptions())
90{
91 GAMSJobt4 = ws.AddJobFromString(GetModelText(), cpBase);
92선택.정의.추가("gdxincname", db.이름);
93opt.AllModelTypes ="익스프레스";
94t4.실행(선택, DB);
95 foreach (GAMSVariableRecordrecint4.OutDB.GetVariable("x"))
96Console.WriteLine("x("+ Rec.Key(0) +","+ Rec.Key(1) +"): 레벨="+ 추천레벨 + " 한계="+ 추천한계);
97}
98}
99
100 정적 무효CreateSaveRestart(문자열cp파일이름)
101{
103 if(Environment.GetCommandLineArgs().Length > 1)
104ws =신규 슬롯 커뮤니티작업공간(workingDirectory: Path.GetDirectoryName(cpFileName), systemDirectory: Environment.GetCommandLineArgs()[1]);
105 그밖에
106ws =신규 슬롯 커뮤니티작업공간(workingDirectory: Path.GetDirectoryName(cpFileName));
107 GAMSJobj1 = ws.AddJobFromString(GetBaseModelText());
109
110opt.Action =슬롯 커뮤니티옵션.EA액션.CompileOnly;
111
112
113 슬롯 커뮤니티체크포인트cp = ws.체크포인트 추가(Path.GetFileName(cpFileName));
114j1.실행(선택, CP);
115
116선택.폐기();
117}
118
119 정적문자열 GetBaseModelText()
120{
121문자열 모델 =@"
122$oneempty
123세트
124i(*) 통조림 공장 / /
125j(*) 시장 / /
126
127매개변수
128a(i) 경우에 따라 공장 i의 용량 / /
129b(j) 경우에 따라 시장 j의 수요 / /
130d(i,j) 거리(천 마일) / /
131천 마일당 케이스당 달러 단위의 스칼라 f 화물 /0/;
132
133매개변수 c(i,j) 운송 비용(케이스당 수천 달러) ;
134
135c(i,j) = f * d(i,j) / 1000 ;
136
137변수
138x(i,j) 케이스의 배송 수량
139z 총 운송 비용(수천 달러) ;
140
141양수 변수 x ;
142
143수식
144비용 정의 목적 함수
145공급(i) 공장 i의 공급 제한을 준수
146수요(j)는 시장 j의 수요를 충족합니다. ;
147
148비용 .. z =e= sum((i,j), c(i,j)*x(i,j)) ;
149
150공급(i) .. 합계(j, x(i,j)) =l= a(i) ;
151
152수요(j) .. 합계(i, x(i,j)) =g= b(j) ;
153
154모델 전송 /all/ ;
155
156z를 최소화하는 lp를 사용하여 전송을 해결합니다;
157
158";
159
160 반환모델;
161}
162
163 정적문자열 GetModelText()
164{
165문자열 모델 =@"
166$if 설정되지 않음 gdxincname $abort '제공된 데이터 파일에 대한 포함 파일 이름 없음'
167$gdxin %gdxincname%
168$onMulti
169$load i j a b d f
170$gdxin
171
172x.l, x.m 표시 ;";
173
174 반환모델;
175}
176
177}
178}
GAMSSet AddSet(문자열 식별자, int 차원, 문자열 설명텍스트="", SetType setType=SetType.multi)
void Run(GAMSOptions gamsOptions=null, GAMSCheckpoint 체크포인트=null, TextWriter 출력=null, Boolean createOutDB=true)
사전< 문자열, 문자열 > 정의
새 GAMSParameterRecord AddRecord(params 문자열[] 키)
새 GAMSSetRecord AddRecord(params 문자열[] 키)
GAMSJob AddJobFromString(문자열 gamsSource, GAMSCheckpoint 체크포인트=null, 문자열 jobName=null)
GAMSDatabase AddDatabase(문자열 데이터베이스 이름=null, 문자열 inModelName=null)
GAMSCheckpoint AddCheckpoint(string checkpointName=null)
GAMSOptions AddOptions(GAMSOptions optFrom=null)
이것은 일련의 튜토리얼 예제 중 11번째 모델입니다. 여기에서는 다음을 보여줍니다: 저장/R을 생성하고 사용하는 방법...