43파일 WorkingDirectory =
신규파일(System.getProperty(
"user.dir"),
"교통12");
44workingDirectory.mkdir();
58 더블[] bmultilist =
신규 더블[] { 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3 };
69bmult.addRecord(
"들"+ i).setValue(b);
70scen1.addRecord(
"들"+ i);
75dict.addRecord(
신규문자열[] scen1.getName(),
"시나리오",
""} );
76dict.addRecord(
신규문자열[]
"bmult",
"매개변수", bmult.getName() );
77dict.addRecord(
신규문자열[]
"z",
"레벨", zscen1.getName() );
79GUSSCall(dict, mi,
"운송은 lp min z를 사용합니다",
널,
널,
널);
82System.out.println(rec.getKey(0) +
" 객체: "+ rec.getValue());
93 for (
intj = 0; j<4; j++)
97문자열[] 키 =
신규문자열[]
"들"+ j, irec.getKey(0), jrec.getKey(0) ;
98xup.addRecord(keys).setValue(j+1);
100scen2.addRecord(
"들"+ j);
104dict2.addRecord(
신규문자열[] scen2.getName(),
"시나리오",
""} );
105dict2.addRecord(
신규문자열[]
"x",
"낮은", xup.getName() );
106dict2.addRecord(
신규문자열[]
"z",
"레벨", zscen2.getName() );
108GUSSCall(dict2, mi2,
"운송은 lp min z를 사용합니다",
널,
널, System.out);
111System.out.println(rec.getKey(0) +
" obj: "+ rec.getValue());
117List<Object[]> modifierList = Collections.synchronizedList(
신규ArrayList<Object[]>() );
119 if(dict.getDimension() != 3)
122문자열 scenName = dict.getFirstRecord(
신규문자열[]
" ",
"시나리오",
" ").getKey(0);
123 GAMSSetscenSymbol = dict.getDatabase().getSet(scenName);
128 if(rec.getKey(1).toLowerCase().equals(
"시나리오"))
130 if(rec.getKey(1).toLowerCase().equals(
"매개변수"))
132 intmodifierDim = dict.getDatabase().getParameter(rec.getKey(2)).getDimension() - scenSymbol.getDimension();
134 던지기 신규 크레이지 슬롯예외(
"크기"+ rec.getKey(2) +
"너무 작습니다");
136 크레이지 슬롯매개변수param = dict.getDatabase().getParameter( rec.getKey(2));
141 그밖에 if((rec.getKey(1).toLowerCase().equals(
"낮은")) ||
142(rec.getKey(1).toLowerCase().equals(
"상단")) ||
143(rec.getKey(1).toLowerCase().equals(
"고정됨")))
145 intmodifierDim = (int) (dict.getDatabase().getParameter(rec.getKey(2)).getDimension() - scenSymbol.getDimension());
147 던지다 신규 크레이지 슬롯예외(
"크기"+ rec.getKey(2) +
"너무 작습니다");
150modifierVar = dict.getDatabase().getVariable(rec.getKey(0));
153modifierVar = mi.
SyncDB().
추가변수(rec.getKey(0),modifierDim, GAMSGlobals.VarType.FREE,
"");
155 if(rec.getKey(1).toLowerCase().equals(
"낮은"))
158 크레이지 슬롯매개변수param = dict.getDatabase().getParameter(rec.getKey(2));
163 그밖에 if(rec.getKey(1).toLowerCase().equals(
"상단"))
166 크레이지 슬롯매개변수param = dict.getDatabase().getParameter(rec.getKey(2));
173 크레이지 슬롯매개변수param = dict.getDatabase().getParameter(rec.getKey(2));
179 그밖에 if((rec.getKey(1).toLowerCase().equals(
"레벨")) || (rec.getKey(1).toLowerCase().equals(
"한계")))
182@SuppressWarnings(
"미사용")
183 크레이지 슬롯매개변수x = dict.getDatabase().getParameter(rec.getKey(2));
186 던지기 신규 크레이지 슬롯예외(
"UpdateAction을 처리할 수 없습니다."+ rec.getKey(1));
189목록<GAMSModifier> mL = Collections.synchronizedList(
신규ArrayList<GAMSModifier>() );
190 for(Object[] 튜플 : modifierList)
196mi.
인스턴스화(solveStatement, opt, mods);
198List<Object[]> outList = Collections.synchronizedList(
신규ArrayList<Object[]>() );
202 for(Object[] 튜플 : modifierList)
217문자열[] 필터 =
신규문자열[pscen.getDimension()];
218 용 (
inti = 0; i < scenSymbol.getDimension(); 나++)
220 for (
inti = scenSymbol.getDimension(); i < pscen.getDimension(); 나++)
225rec = pscen.getFirstRecord(필터);
230문자열[] myKeys =
신규문자열[p.getDimension()];
231 for (
inti = 0; i < p.getDimension(); 나++)
232myKeys[i] = rec.getKey(scenSymbol.getDimension()+i);
233p.addRecord(myKeys).setValue(rec.
getValue() );
238 if(outList.size() == 0)
242 if((rec.getKey(1).toLowerCase().equals(
"레벨")) || (rec.getKey(1).toLowerCase().equals(
"한계")))
245 크레이지 슬롯매개변수param = dict.getDatabase().getParameter(rec.getKey(2));
246문자열 str = rec.getKey(1).toLowerCase();
248 신규객체[] Sym, param, str
253 for(객체[] 튜플 : outList)
258문자열[] myKeys =
신규문자열[scenSymbol.getDimension() + 기호.
getFirstRecord().getKeys().length];
259 for (
inti = 0; i < scenSymbol.getDimension(); 나++)
260myKeys[i] = s.getKey(i);
262 if((str.equals(
"레벨")) &&(기호 인스턴스
크레이지 슬롯변수))
267 for (
inti = 0; i < Rec.getKeys().length; 나++)
268myKeys[scenSymbol.getDimension() + i] = s.getKey(i);
269param.addRecord(myKeys).setValue( rec.getLevel() );
277 for (
inti = 0; i < Rec.getKeys().length; 나++)
278myKeys[scenSymbol.getDimension() + i] = s.getKey(i);
279param.addRecord(myKeys).setValue( rec.getLevel() );
282 그밖에 if((str.equals(
"한계")) && (기호 인스턴스
크레이지 슬롯변수))
287 용 (
inti = 0; i < Rec.getKeys().length; 나++)
288myKeys[scenSymbol.getDimension() + i] = s.getKey(i);
289param.addRecord(myKeys).setValue( rec.getMarginal() );
297 for (
inti = 0; i < Rec.getKeys().length; 나++)
298myKeys[scenSymbol.getDimension() + i] = s.getKey(i);
299param.addRecord(myKeys).setValue( rec.getMarginal() );
308 " 나는 식물 통조림 / 시애틀, 샌디에고 / \n" +
309 " j 마켓 / 뉴욕, 시카고, 토피카 / ; \n" +
313 " a(i) 경우에 따라 공장 i의 용량 \n" +
317 " b(j) 경우의 시장 j 수요 \n" +
322 "테이블 d(i,j) 거리(천 마일 단위) \n" +
324 " 시애틀 2.5 1.7 1.8 \n" +
325 " 샌디에고 2.5 1.8 1.4 ; \n" +
327 "천 마일당 케이스당 달러 단위의 스칼라 f 화물 /90/ ;\n" +
328 "스칼라 bmult 수요 승수 /1/; \n" +
330 "매개변수 c(i,j) 운송 비용(케이스당 수천 달러); \n" +
332 " c(i,j) = f * d(i,j) / 1000 ; \n" +
335 " 케이스의 x(i,j) 배송 수량 \n" +
336 " z 총 운송 비용(단위: 수천 달러) ; \n" +
342 " 공급(i) 공장 i의 공급 제한 준수 \n" +
343 " 수요(j)는 시장 j의 수요를 충족합니다. \n" +
345 "비용 .. z =e= sum((i,j), c(i,j)*x(i,j)) ; \n" +
347 "공급(i) .. 합계(j, x(i,j)) =l= a(i) ; \n" +
349 "수요(j) .. sum(i, x(i,j)) =g= bmult*b(j) ; \n" +