35목록<string> 식물 =
신규목록<문자열>()
39목록<string> 시장 =
신규목록<문자열>()
43사전<문자열, 더블> 용량 =
신규사전<문자열, 더블>()
45{
"시애틀", 350.0 }, {
"샌디에고", 600.0 }
47사전<문자열, 더블> 수요 =
신규사전<문자열, 더블>()
49{
"뉴욕", 325.0 }, {
"시카고", 300.0 }, {
"토피카", 275.0 }
51사전<Tuple<문자열, 문자열>,
더블> 거리 =
신규사전<튜플<문자열, 문자열>,
더블>()
53{
신규튜플<문자열,문자열> (
"시애틀",
"뉴욕"), 2.5 },
54{
신규튜플<문자열,문자열> (
"시애틀",
"시카고"), 1.7 },
55{
신규튜플<문자열,문자열> (
"시애틀",
"토피카"), 1.8 },
56{
신규튜플<문자열,문자열> (
"샌디에이고",
"뉴욕"), 2.5 },
57{
신규튜플<문자열,문자열> (
"샌디에고",
"시카고"), 1.8 },
58{
신규튜플<문자열,문자열> (
"샌디에고",
"토피카"), 1.4 }
70 GAMSSetj = db.AddSet(
"j", 1,
"시장");
74 슬롯 나라매개변수a = db.AddParameter(
"a", 1,
"케이스에 있는 식물 i의 용량");
78 슬롯 나라매개변수b = db.AddParameter(
"b", 1,
"경우에 따라 시장 j의 수요");
82 슬롯 나라매개변수d = db.AddParameter(
"d", 2,
"수천 마일 단위의 거리");
83 foreach(튜플<문자열, 문자열> t
in거리.키)
86 슬롯 나라매개변수f = db.AddParameter(
"f", 0,
"1,000마일당 케이스당 화물(달러)");
90opt.AllModelTypes =
"소플렉스";
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파일"]);
104 문자열optFile = Path.Combine(ws.WorkingDirectory, ws.ScratchFilePrefix + Path.GetRandomFileName());
106 바이트[] ParameterFile = File.ReadAllBytes(optFile);
109 문자열GDXInFileName = Path.ChangeExtension(Path.Combine(ws.WorkingDirectory, ws.ScratchFilePrefix + Path.GetRandomFileName()),
".gdx");
110db.Export(GDXInFileName);
111 바이트[] GDXInFile = File.ReadAllBytes(GDXInFileName);
113ChannelServices.RegisterChannel(
신규TcpClientChannel(),
거짓);
117Console.WriteLine(
"슬롯 나라 서버를 찾을 수 없습니다");
121 바이트[] GDXOutFile =
신규 바이트[0];
125 intrCode = rGAMS.RunServer(GetModelText(), GDXInFile, ParameterFile, ref GDXOutFile, ref LogOutput, ref Message);
129Console.WriteLine(LogOutput.ToString());
130Console.WriteLine(
"원격 슬롯 나라 개체 문제:\n0"+ 메시지);
135Console.WriteLine(LogOutput);
136Console.WriteLine(메시지);
137 문자열GDXOutFileName = Path.Combine(ws.WorkingDirectory, ws.ScratchFilePrefix + Path.GetRandomFileName());
138File.WriteAllBytes(GDXOutFileName, GDXOutFile);
139dbResult = ws.AddDatabaseFromGDX(GDXOutFileName);
144Console.WriteLine(
"x("+ Rec.Key(0) +
","+ Rec.Key(1) +
"): 레벨="+ 추천
레벨 +
" 한계="+ 추천
한계);
159천 마일당 케이스당 달러 단위의 스칼라 f 화물;
161$if set not set GDXInFile $abort '제공된 데이터 파일에 대한 입력 파일 이름이 없습니다'
162$if 설정되지 않음 GDXOutFile $abort '제공된 결과 파일에 대한 출력 파일 이름 없음'
167매개변수 c(i,j) 운송 비용(케이스당 수천 달러) ;
169c(i,j) = f * d(i,j) / 1000 ;
179공급(i) 공장 i의 공급 제한을 준수합니다.
180수요(j)는 시장 j의 수요를 충족합니다. ;
182비용 .. z =e= sum((i,j), c(i,j)*x(i,j)) ;
184공급(i) .. 합계(j, x(i,j)) =l= a(i) ;
186수요(j) .. 합계(i, x(i,j)) =g= b(j) ;
190z를 최소화하는 lp를 사용하여 전송을 해결합니다;
192execute_unload '%GDXOutFile%', x, z, 수요, 공급;