21 공개 정적 무효main(String[] args)
27파일 WorkingDirectory =
신규파일(System.getProperty(
"user.dir"),
"운송엔진");
28workingDirectory.mkdir();
33문자열 엔진_url = System.getenv(
"엔진_URL");
35System.out.println(
"오류: 환경 변수 ENGINE_URL이 설정되지 않았습니다");
38문자열 엔진_user = System.getenv(
"엔진_사용자");
40System.out.println(
"오류: 환경 변수 ENGINE_USER가 설정되지 않았습니다");
43문자열 엔진_비밀번호 = System.getenv(
"엔진_비밀번호");
44 if(engine_password ==
널) {
45System.out.println(
"오류: 환경 변수 ENGINE_PASSWORD가 설정되지 않았습니다");
48문자열 Engine_namespace = System.getenv(
"ENGINE_NAMESPACE");
49 if(engine_namespace ==
널) {
50System.out.println(
"오류: 환경 변수 ENGINE_NAMESPACE가 설정되지 않았습니다");
63runEngineJob(ws, 엔진_configuration);
66runAndInterruptEngineJob(ws, 엔진_configuration);
77System.out.println(
"문자열에서 데이터 실행 중");
79.setRunEngineConfiguration(engine_configuration)
80.setOutput( System.out )
88tEDataDB.
내보내기(
"tdata.gdx");
90Map<String, Double> ExpectLevels =
신규HashMap<String, Double>();
92expectedLevels.put(
"seattle.new-york", Double.valueOf(0.0));
93예상레벨.put(
"seattle.chicago", Double.valueOf(300.0));
94예상레벨.put(
"seattle.topeka", Double.valueOf(0.0));
95예상레벨.put(
"san-diego.new-york", Double.valueOf(325.0));
96expectedLevels.put(
"san-diego.chicago", Double.valueOf(0.0));
97expectedLevels.put(
"san-diego.topeka", Double.valueOf(275.0));
103선택.
정의(
"gdxincname",
"tdata");
106System.out.println(
"데이터 포함 파일을 정의하는 GAMSOptions 인스턴스를 사용하여 실행 중입니다.");
108.setRunEngineConfiguration(engine_configuration)
112넣어(
"inex_string",
"\"유형\": \"포함\", \"파일\": [\"*.gdx\"]"); }
117System.out.println(
"데이터 포함 파일을 정의하는 GAMSOptions 인스턴스를 사용하여 모델을 실행했습니다:");
119System.out.print(
"x("+ rec.getKey(0) +
", "+ rec.getKey(1) +
"):");
120System.out.print(
", 레벨 = "+ rec.getLevel());
121System.out.println(
", 한계 = "+ rec.getMarginal());
122 더블diff = 예상레벨.get(rec.getKey(0)+
"."+rec.getKey(1)).doubleValue() - rec.getLevel();
123 if(Math.abs(diff) > 0.01)
124System.out.println(
"예상치 못한 결과, 예상 수준: "+expectedLevels.get(rec.getKey(0)+
"."+rec.getKey(1)));
136System.out.println(
"문자열에서 데이터를 실행 중입니다.");
138.setRunEngineConfiguration(engine_configuration)
139.setOutput( System.out )
155System.out.println(
"체크포인트 암시적 데이터베이스 통신을 사용하여 문자열에서 모델을 실행 중입니다.");
157.setRunEngineConfiguration(engine_configuration)
159.setGAMSCheckpoint(cp )
160.setDatabases(
신규ArrayList<GAMSDatabase>(Arrays.asList(tEa.
아웃DB())) )
161.setOutput( System.out )
164System.out.println(
"체크포인트 암시적 데이터베이스 통신을 사용하여 문자열에서 모델을 실행했습니다:");
166System.out.print(
"x("+ rec.getKey(0) +
", "+ rec.getKey(1) +
"):");
167System.out.print(
", 레벨 = "+ rec.getLevel());
168System.out.println(
", 한계 = "+ rec.getMarginal());
169 더블diff = 예상레벨.get(rec.getKey(0)+
"."+rec.getKey(1)).doubleValue() - rec.getLevel();
170 if(Math.abs(diff) > 0.01)
171System.out.println(
"예상치 못한 결과, 예상 수준: "+expectedLevels.get(rec.getKey(0)+
"."+rec.getKey(1)));
180목록<HashMap<String, Double>> bmultExpected =
신규ArrayList<HashMap<String, Double>>();
181bmultExpected.add(
신규HashMap<String, Double>()
182넣어(
"bmult", Double.valueOf(0.9) );
183put(
"ms", Double.valueOf(1) );
184put(
"ss", Double.valueOf(1) );
185put(
"obj", Double.valueOf(138.31) );
188bmultExpected.add(
신규HashMap<String, Double>()
189넣어(
"bmult", Double.valueOf(1.2) );
190put(
"ms", Double.valueOf(4) );
191put(
"ss", Double.valueOf(1) );
192put(
"obj", Double.valueOf(184.41) );
196 for(HashMap<String, Double> m : bmultExpected)
197문자열 bmultmodel =
"bmult="+m.get(
"bmult")+
"; lp를 사용하여 전송 최소 z 해결; ms=transport.modelstat; ss=transport.solvestat;";
200System.out.println(
"bmult를 사용하여 문자열에서 모델 실행="+m.get(
"bmult"));
202.setRunEngineConfiguration(engine_configuration)
203.setOutput( System.out )
207System.out.println(
"bumult를 사용하여 문자열에서 모델을 실행했습니다="+ m.get(
"bmult").doubleValue() +
":");
208System.out.println(
" 모델 상태: "+ tEbmult.
아웃DB().
getParameter(
"ms").getFirstRecord().getValue());
209System.out.println(
" 해결 상태: "+ tEbmult.
아웃DB().
getParameter(
"ss").getFirstRecord().getValue());
210System.out.println(
" 개체: "+ tEbmult.
아웃DB().
get변수(
"z").getFirstRecord().getLevel());
211 더블diff = tEbmult.
아웃DB().
getParameter(
"bmult").getFirstRecord().getValue() - m.get(
"bmult").doubleValue();
212 if(Math.abs(diff) > 0.01)
213System.out.println(
"예상치 못한 결과, 예상되는 bmult: "+m.get(
"bmult").doubleValue());
216diff = tEbmult.
아웃DB().
getParameter(
"ms").getFirstRecord().getValue() - m.get(
"ms").doubleValue();
217 if(Math.abs(diff) > 0.01)
218System.out.println(
"예상치 못한 결과, 예상 ms: "+m.get(
"ms").doubleValue());
221diff = tEbmult.
아웃DB().
getParameter(
"ss").getFirstRecord().getValue() - m.get(
"ss").doubleValue();
222 if(Math.abs(diff) > 0.01)
223System.out.println(
"예상치 못한 결과, 예상된 ss: "+m.get(
"ss").doubleValue());
226diff = tEbmult.
아웃DB().
get변수(
"z").getFirstRecord().getLevel() - m.get(
"obj").doubleValue();
227 if(Math.abs(diff) > 0.01)
228System.out.println(
"예상치 못한 결과, 예상된 객체: "+m.get(
"obj").doubleValue());
256 부울fileCreated = logFile.createNewFile();
259FileWriter fw =
신규파일 작성기(optionFile_1);
260fw.write(
"epgap 0\n");
262fw.write(
"iafile cplex.op2\n");
266fw =
신규파일 작성기(optionFile_2);
267fw.write(
"epgap 0.1\n");
270HashSet<String> extraModelFiles =
신규HashSet<문자열>(
271Arrays.asList(optionFile_1.getAbsolutePath(), optionFile_2.getAbsolutePath(),
"claddat.gdx")
273 최종근로자 w =
신규작업자(작업, 엔진_구성, opt, extraModelFiles,
신규PrintStream(로그파일));
277 if(logFile.exists() && logFile.length()==0)
279Thread.currentThread();
289 부울종료됨 = (w.getState()==Thread.State.TERMINATED);
291System.out.println(
"인터럽트 메가 슬롯 작업을 보내는 중...");
294System.out.println(
"새 옵션을 계속하기 위해 Cplex가 중단되었습니다.");
301}
잡기(InterruptedException e) e.printStackTrace();
307문자열 검색str =
"중단되었습니다...";
309문자열 라인 = scan.nextLine().toLowerCase().toString();
310 if(line.contains(searchstr))
311System.out.println(line);
318System.out.println(
"솔버가 적어도 한 번은 중단될 것으로 예상됩니다.");
321System.out.println(
"성공적으로 중단되었습니다");
323}
잡기(FileNotFoundException e)
337HashSet<String> extraModelFiles;
351extraModelFiles = modelFiles;
358System.out.println(
"메가 슬롯 엔진 작업 실행 중...");
360.setRunEngineConfiguration(구성)
376 " 나는 식물 통조림 / 시애틀, 샌디에고 / \n" +
377 " j 마켓 / 뉴욕, 시카고, 토피카 / ; \n" +
380 " a(i) 경우에 따라 공장 i의 용량 \n" +
384 " b(j) 경우의 시장 j 수요 \n" +
389 "테이블 d(i,j) 거리(천 마일 단위) \n" +
391 " 시애틀 2.5 1.7 1.8 \n" +
392 " 샌디에고 2.5 1.8 1.4 ; \n" +
394 "스칼라 f '1,000마일당 케이스당 달러 단위의 화물' / 90 / \n" +
395 " bmult '수요 승수' / 1 /;\n" +
405 " a(i) '경우에 따라 식물 i의 용량' \n"+
406 " b(j) '경우에 따라 시장 j의 수요' \n"+
407 " d(i,j) '거리(천 마일)'; \n"+
409 "스칼라 f '1,000마일당 케이스당 달러 단위의 화물'; \n"+
410 "스칼라 bmult '수요 승수'; \n"+
412 "$if gdxincname $abort '제공된 데이터 파일에 대한 포함 파일 이름이 설정되지 않았습니다'\n"+
413 "$gdxin %gdxincname% \n"+
414 "$load i j a b d f bmult \n"+
417 "$echo 테스트 > test.txt \n"+
419 "매개변수 c(i,j) '케이스당 운송 비용(단위: 수천 달러)'; \n"+
420 " c(i,j) = f * d(i,j) / 1000 ; \n"+
423 " 케이스의 x(i,j) 배송 수량 \n"+
424 " z 총 운송 비용(수천 달러) ; \n"+
430 " 공급(i) '공장 i의 공급 제한 준수' \n"+
431 " 수요(j) '시장 j의 수요를 충족'; \n"+
433 "비용 .. z =e= sum((i,j), c(i,j)*x(i,j)) ; \n"+
435 "공급(i) .. 합계(j, x(i,j)) =l= a(i) ; \n"+
437 "수요(j) .. sum(i, x(i,j)) =g= bmult*b(j) ; \n"+
441 "z를 최소화하는 lp를 사용하여 전송을 해결합니다; \n"+