로드 중...
검색 중...
일치하는 항목 없음
Transport8.java
1패키지com.무료 슬롯 게임examples.transport;
2
3가져오기java.io.파일;
4가져오기java.util.Arrays;
5가져오기java.util.LinkedList;
6가져오기java.util.Queue;
7
9가져오기 com.게임.API.GAMSJob;
10가져오기 com.게임.API.GAMSModelInstance;
11가져오기 com.게임.API.GAMSModifier;
15가져오기 com.게임.API.GAMSWorkspaceInfo;
16
22공개 클래스운송8{
23
24 공개 정적 공허main(String[] args)
25 // 명령줄 인수에서 작업공간 정보 확인
27 if(args.length > 0)
28wsInfo.setSystemDirectory( 인수[0] );
29 // 디렉토리 생성
30파일 WorkingDirectory =신규파일(System.getProperty("user.dir"), "수송8");
31workingDirectory.mkdir();
32wsInfo.setWorkingDirectory(workingDirectory.getAbsolutePath());
33 // 작업공간 생성
35 // 체크포인트 생성
37
38 // 작업을 실행하여 체크포인트를 초기화합니다.
39 GAMSJobt8 = ws.addJobFromString(모델);
40t8.실행(cp);
41
42큐<더블> bmultQueue =신규링크드리스트<더블>(
43Arrays.asList( Double.valueOf(0.6), Double.valueOf(0.7), Double.valueOf(0.8), Double.valueOf(0.9),
44Double.valueOf(1.0), Double.valueOf(1.1), Double.valueOf(1.2), Double.valueOf(1.3) )
45);
46
47 // 여러 모델 인스턴스를 동시에 해결
48객체 IOLockObject =신규객체();
49 intnumberOfWorkers = 2;
50시나리오[] 시나리오 =신규시나리오[numberOfWorkers];
51 for (inti=0; i<노동자 수; 나++)
52시나리오[i] =신규시나리오( ws, cp, bmultQueue, IOLockObject, i );
53시나리오[i].start();
54}
55 for (inti=0; i<노동자 수; 나++)
56 시도해 보세요{
57시나리오[i].join();
58}잡기(InterruptedException e)
59e.printStackTrace();
60}
61}
62}
63
65 정적 클래스시나리오확장스레드
68객체 IOLockObject;
69큐<더블> bmultQueue;
70 int작업자번호;
71
79 공개시나리오(무료 슬롯 게임작업공간ws,무료 슬롯 게임체크포인트cp, Queue<Double> que, 개체 IOLockObj,inti)
80작업 공간 = ws;
81체크포인트 = cp;
82IOLockObject = IOLockObj;
83bmultQueue = que;
84workerNumber = i;
85}
86
88 공개 무효실행()
89 GAMSModelInstancemi =;
90 동기화됨(bmultQueue)
91mi = 체크포인트.addModelInstance();
92}
93
94 무료 슬롯 게임매개변수bmult = mi.SyncDB().addParameter("bmult", "수요 승수");
95
96GAMSOptions opt = 작업공간.추가옵션();
97선택.setAllModelTypes("복합체");
98
99 // GAMSModelInstance를 인스턴스화하고 모델 정의 및 GAMSModifier를 전달하여 bmult 변경 가능 선언
100mi.인스턴스화("운송은 lp min z를 사용합니다", 선택,신규 GAMSModifier(bmult));
101
102bmult.addRecord().setValue( 1.0 );
103
104 그동안 () {
105 더블b = 0.0;
106 // 생성 시 다른 스레드에 전달하는 대신 큐에서 bmult 값을 동적으로 가져옵니다.
107 동기화됨(bmultQueue)
108 if(bmultQueue.isEmpty())
109 휴식;
110 그밖에
111b = bmultQueue.remove();
112}
113bmult.getFirstRecord().setValue(b);
114mi.해결();
115 // 보고서 정보가 엉망이 되지 않도록 출력을 중요한 섹션으로 만들어야 합니다.
116 동기화됨(IOLockObject)
117System.out.println("#"+작업자번호+":시나리오 bmult="+ b +":");
118System.out.println(" 모델 상태: "+ 마일.getModelStatus());
119System.out.println(" 해결 상태: "+ 마일.getSolveStatus());
120System.out.println(" 개체: "+ 마일.SyncDB().get변수("z").findRecord().getLevel());
121}
122}
123
124 // 실행 종료 시 옵션 및 모델 인스턴스 삭제
125opt.dispose();
126mi.처분();
127}
128}
129
130 정적문자열 모델 =
131 "세트 \n" +
132 " 나는 식물 통조림 / 시애틀, 샌디에이고 / \n" +
133 " j 마켓 / 뉴욕, 시카고, 토피카 / ; \n" +
134 " \n" +
135 "매개변수\n" +
136 " a(i) 경우에 따라 공장 i의 용량 \n" +
137 " / 시애틀 350 \n" +
138 " 샌디에고 600 / \n" +
139 " \n" +
140 " b(j) 경우의 시장 j 수요 \n" +
141 " / 뉴욕 325 \n" +
142 " 시카고 300 \n" +
143 " 토피카 275 / ; \n" +
144 " \n" +
145 "테이블 d(i,j) 거리(천 마일 단위) \n" +
146 " 뉴욕 시카고 토피카 \n" +
147 "시애틀 2.5 1.7 1.8 \n" +
148 "샌디에고 2.5 1.8 1.4 ; \n" +
149 " \n" +
150 "천 마일당 케이스당 달러 단위의 스칼라 f 운임 /90/ ; \n" +
151 "스칼라 bmult 수요 승수 /1/; \n" +
152 " \n" +
153 "매개변수 c(i,j) 운송 비용(케이스당 수천 달러) ; \n" +
154 " c(i,j) = f * d(i,j) / 1000 ; \n" +
155 " \n" +
156 "변수 \n" +
157 " x(i,j) 케이스의 배송 수량 \n" +
158 " z 총 운송 비용(수천 달러) ; \n" +
159 " \n" +
160 "양수 변수 x ; \n" +
161 " \n" +
162 "방정식 \n" +
163 " 비용 정의 목적 함수 \n" +
164 " 공급(i) 공장 i의 공급 제한 준수 \n" +
165 " 수요(j)는 시장 j의 수요를 충족합니다. \n" +
166 " \n" +
167 " 비용 .. z =e= sum((i,j), c(i,j)*x(i,j)) ; \n" +
168 " \n" +
169 " 공급(i) .. sum(j, x(i,j)) =l= a(i) ; \n" +
170 " \n" +
171 " 수요(j) .. sum(i, x(i,j)) =g= bmult*b(j) ; \n" +
172 " \n" +
173 "모델 전송 /all/ ; \n" +
174 " \n";
175
176}
GAMSParameter addParameter(문자열 식별자, 정수 차원)
GAMSVariable getVariable(문자열 식별자)
무료 슬롯 게임데이터베이스 SyncDB()
void instantiate(String modelDefinition, GAMSModifier ... modifiers)
void setSystemDirectory(문자열 디렉토리)
void setWorkingDirectory(문자열 디렉터리)
GAMSJob addJobFromString(문자열 소스)
이 예는 대기열을 사용하여 여러 GAMSModelInstance를 병렬로 해결하는 방법을 보여줍니다.