로드 중...
검색 중...
일치하는 항목 없음
GAMSClientClass.cs
1사용 중시스템;
2사용 중시스템.IO;
3사용 중System.Collections.Generic;
4사용 중System.Linq;
5사용 중시스템.텍스트;
6사용 중System.Runtime.Remoting.Channels;
7사용 중System.Runtime.Remoting.Channels.Tcp;
8사용 중GAMSRemoteObject;
9사용 중슬롯 나라;
10
11
13{
28{
29 정적 int메인(문자열[] 인수)
30{
31
32 부울RunLocal =거짓;
33
34 // C# 데이터 구조를 사용하여 일부 데이터 정의
35목록<string> 식물 =신규목록<문자열>()
36{
37 "시애틀", "샌디에고"
38};
39목록<string> 시장 =신규목록<문자열>()
40{
41 "뉴욕", "시카고", "토피카"
42};
43사전<문자열, 더블> 용량 =신규사전<문자열, 더블>()
44{
45{"시애틀", 350.0 }, { "샌디에고", 600.0 }
46};
47사전<문자열, 더블> 수요 =신규사전<문자열, 더블>()
48{
49{"뉴욕", 325.0 }, { "시카고", 300.0 }, { "토피카", 275.0 }
50};
51사전<Tuple<문자열, 문자열>,더블> 거리 =신규사전<튜플<문자열, 문자열>,더블>()
52{
53{신규튜플<문자열,문자열> ("시애틀", "뉴욕"), 2.5 },
54{신규튜플<문자열,문자열> ("시애틀", "시카고"), 1.7 },
55{신규튜플<문자열,문자열> ("시애틀", "토피카"), 1.8 },
56{신규튜플<문자열,문자열> ("샌디에이고", "뉴욕"), 2.5 },
57{신규튜플<문자열,문자열> ("샌디에고", "시카고"), 1.8 },
58{신규튜플<문자열,문자열> ("샌디에고", "토피카"), 1.4 }
59};
60
62
63 // 결과에 대한 GAMSDatabase 생성
65
66 GAMSSeti = DB.AddSet("나", 1,"통조림 공장");
67 foreach (문자열pin식물)
68i.AddRecord(p);
69
70 GAMSSetj = db.AddSet("j", 1,"시장");
71 foreach (문자열m시장)
72j.AddRecord(m);
73
74 슬롯 나라매개변수a = db.AddParameter("a", 1,"케이스에 있는 식물 i의 용량");
75 foreach (문자열pin식물)
76a.AddRecord(p).= 용량[p];
77
78 슬롯 나라매개변수b = db.AddParameter("b", 1,"경우에 따라 시장 j의 수요");
79 foreach (문자열min시장)
80b.AddRecord(m).= 수요[m];
81
82 슬롯 나라매개변수d = db.AddParameter("d", 2,"수천 마일 단위의 거리");
83 foreach(튜플<문자열, 문자열> tin거리.키)
84d.AddRecord(t.Item1, t.Item2).= 거리[t];
85
86 슬롯 나라매개변수f = db.AddParameter("f", 0,"1,000마일당 케이스당 화물(달러)");
87f.AddRecord().= 90;
88
89 슬롯 나라옵션opt = ws.AddOptions();
90opt.AllModelTypes ="소플렉스";
91opt.ResLim = 10;
92
94 if(RunLocal)
95{
96선택.정의.추가("GDXIn파일", db.이름);
97선택.정의.추가("GDXOut파일", Path.Combine(ws.WorkingDirectory, ws.ScratchFilePrefix + Path.GetRandomFileName()));
98 GAMSJobjob = ws.AddJobFromString(GetModelText());
99직업.실행(선택, Console.Out,거짓,db);
100dbResult = ws.AddDatabaseFromGDX(opt.정의["GDXOut파일"]);
101}
102 그밖에
103{
104 문자열optFile = Path.Combine(ws.WorkingDirectory, ws.ScratchFilePrefix + Path.GetRandomFileName());
105선택.내보내기(optFile);
106 바이트[] ParameterFile = File.ReadAllBytes(optFile);
107
108
109 문자열GDXInFileName = Path.ChangeExtension(Path.Combine(ws.WorkingDirectory, ws.ScratchFilePrefix + Path.GetRandomFileName()),".gdx");
110db.Export(GDXInFileName);
111 바이트[] GDXInFile = File.ReadAllBytes(GDXInFileName);
112
113ChannelServices.RegisterChannel(신규TcpClientChannel(),거짓);
114 GAMSRemoteClassrGAMS = (GAMSRemoteClass)Activator.GetObject(typeof(GAMSRemoteClass), "tcp://localhost:8686/GAMSSERVER");
115 if(rGAMS ==)
116{
117Console.WriteLine("슬롯 나라 서버를 찾을 수 없습니다");
118 반환1;
119}
120
121 바이트[] GDXOutFile =신규 바이트[0];
122 문자열로그출력 =문자열.비어 있음;
123 문자열메시지 =문자열.비어 있음;
124
125 intrCode = rGAMS.RunServer(GetModelText(), GDXInFile, ParameterFile, ref GDXOutFile, ref LogOutput, ref Message);
126
127 if(rCode != 0)
128{
129Console.WriteLine(LogOutput.ToString());
130Console.WriteLine("원격 슬롯 나라 개체 문제:\n0"+ 메시지);
131 반환r코드;
132}
133 그밖에
134{
135Console.WriteLine(LogOutput);
136Console.WriteLine(메시지);
137 문자열GDXOutFileName = Path.Combine(ws.WorkingDirectory, ws.ScratchFilePrefix + Path.GetRandomFileName());
138File.WriteAllBytes(GDXOutFileName, GDXOutFile);
139dbResult = ws.AddDatabaseFromGDX(GDXOutFileName);
140}
141}
142
143 foreach (GAMSVariableRecordrecdbResult.GetVariable("x"))
144Console.WriteLine("x("+ Rec.Key(0) +","+ Rec.Key(1) +"): 레벨="+ 추천레벨 + " 한계="+ 추천한계);
145 반환0;
146}
147
148 정적 문자열GetModelText()
149{
150문자열 모델 =@"
151세트
152나는 통조림 공장
153j 시장
154
155매개변수
156a(i) 경우에 따라 공장 i의 용량
157b(j) 경우에 따라 시장 j의 수요
158d(i,j) 거리(천 마일)
159천 마일당 케이스당 달러 단위의 스칼라 f 화물;
160
161$if set not set GDXInFile $abort '제공된 데이터 파일에 대한 입력 파일 이름이 없습니다'
162$if 설정되지 않음 GDXOutFile $abort '제공된 결과 파일에 대한 출력 파일 이름 없음'
163
164$gdxin '%GDXInFile%'
165$load i j a b d f
166
167매개변수 c(i,j) 운송 비용(케이스당 수천 달러) ;
168
169c(i,j) = f * d(i,j) / 1000 ;
170
171변수
172x(i,j) 케이스의 배송 수량
173z 총 운송 비용(수천 달러) ;
174
175양수 변수 x ;
176
177수식
178비용 정의 목적 함수
179공급(i) 공장 i의 공급 제한을 준수합니다.
180수요(j)는 시장 j의 수요를 충족합니다. ;
181
182비용 .. z =e= sum((i,j), c(i,j)*x(i,j)) ;
183
184공급(i) .. 합계(j, x(i,j)) =l= a(i) ;
185
186수요(j) .. 합계(i, x(i,j)) =g= b(j) ;
187
188모델 전송 /all/ ;
189
190z를 최소화하는 lp를 사용하여 전송을 해결합니다;
191
192execute_unload '%GDXOutFile%', x, z, 수요, 공급;
193";
194
195 반환모델;
196}
197}
198}
이 예는 간단한 슬롯 나라 서버를 구현하는 방법을 보여줍니다. 이 예는 두 부분으로 구성됩니다: GAMSServe...
이 예는 간단한 슬롯 나라 서버를 구현하는 방법을 보여줍니다. 이 예는 두 부분으로 구성됩니다: GAMSServe...
GAMSSet AddSet(문자열 식별자, int 차원, 문자열 설명Text="", SetType setType=SetType.multi)
void Run(GAMSOptions gamsOptions=null, GAMSCheckpoint 체크포인트=null, TextWriter 출력=null, Boolean createOutDB=true)
사전< 문자열, 문자열 > 정의
void 내보내기(문자열 파일 경로)
새 GAMSParameterRecord AddRecord(params 문자열[] 키)
새 GAMSSetRecord AddRecord(params 문자열[] 키)
GAMSDatabase AddDatabase(문자열 데이터베이스 이름=null, 문자열 inModelName=null)