로드 중...
검색 중...
일치하는 항목 없음
Transport11.java
1패키지com.슬롯 커뮤니티examples.transport;
2
3가져오기java.io.파일;
4가져오기java.util.Arrays;
5가져오기java.util.HashMap;
6가져오기java.util.List;
7가져오기java.util.Map;
8가져오기java.util.Vector;
9
12가져오기 com.게임.API.GAMSJob;
15가져오기 com.게임.API.GAMSSet;
16가져오기 com.게임.API.GAMSVariableRecord;
18가져오기 com.게임.API.GAMSWorkspaceInfo;
19
24공개 클래스운송11{
25
26 공개 정적 공허메인(문자열[] 인수)
27 // 명령줄 인수에서 작업공간 정보 확인
29 if(args.length > 0)
30wsInfo.setSystemDirectory( 인수[0] );
31}
32 // 디렉토리 생성
33파일 WorkingDirectory =신규파일(System.getProperty("user.dir"), "교통11");
34workingDirectory.mkdir();
35wsInfo.setWorkingDirectory(workingDirectory.getAbsolutePath());
36 // 작업공간 생성
38
39 // 일반적으로 애플리케이션 제공업체에서 제공하는 저장/다시 시작 파일을 생성합니다.
40 // 시연용으로 생성합니다
41CreateSaveRestart(ws,"tbase");
42
43 // Java 데이터 구조를 사용하여 일부 데이터 정의
44List<String> 식물 = Arrays.asList("시애틀", "샌디에이고");
45List<String> 시장 = Arrays.asList("뉴욕", "시카고", "토피카");
46
47Map<String, Double> 용량 =신규HashMap<String, Double>();
48{
49용량.put("시애틀", Double.valueOf(350.0));
50용량.put("샌디에고", Double.valueOf(600.0));
51}
52
53Map<String, Double> 수요 =신규HashMap<String, Double>();
54{
55수요.put("뉴욕", Double.valueOf(325.0));
56수요.put("시카고", Double.valueOf(300.0));
57수요.put("토피카", Double.valueOf(275.0));
58}
59
60지도<벡터<문자열>, 이중> 거리 =신규HashMap<Vector<String>, Double>();
61{
62거리.put(신규Vector<String>( Arrays.asList(신규문자열[]"시애틀", "뉴욕") ), Double.valueOf(2.5));
63거리.put(신규Vector<String>( Arrays.asList(신규문자열[]"시애틀", "시카고") ), Double.valueOf(1.7));
64거리.put(신규Vector<String>( Arrays.asList(신규문자열[]"시애틀", "토피카") ), Double.valueOf(1.8));
65거리.put(신규Vector<String>( Arrays.asList(신규문자열[]"샌디에이고", "뉴욕") ), Double.valueOf(2.5));
66거리.put(신규Vector<String>( Arrays.asList(신규문자열[]"샌디에이고", "시카고") ), Double.valueOf(1.8));
67거리.put(신규Vector<String>( Arrays.asList(신규문자열[]"샌디에고", "토피카") ), Double.valueOf(1.4));
68}
69
70ws =신규 슬롯 커뮤니티작업공간(wsInfo);
71
72 // 자바 데이터 구조의 데이터로 GAMSDatabase 준비
74
75 GAMSSeti = DB.추가세트("나", 1,"통조림 공장");
76 for(문자열 p : 식물)
77i.addRecord(p);
78
79 GAMSSetj = db.추가세트("j", 1,"시장");
80 for(문자열 m : 시장)
81j.addRecord(m);
82
83 슬롯 커뮤니티매개변수a = DB.addParameter("a", "케이스에 있는 식물 i의 용량", i);
84 for(문자열 p : 식물)
85a.addRecord(p).setValue(capacity.get(p) );
86
87 슬롯 커뮤니티매개변수b = db.addParameter("b", "경우에 따라 시장 j의 수요", j);
88 for(문자열 m : 시장)
89b.addRecord(m).setValue(demand.get(m));
90
91 슬롯 커뮤니티매개변수d = db.addParameter("d", "수천 마일 단위의 거리", i, j);
92 for(Vector<String> vd : distance.keySet())
93d.addRecord(vd).setValue( distance.get(vd).doubleValue() );
94
95 슬롯 커뮤니티매개변수f = db.addParameter("f", "1,000마일당 케이스당 화물(달러)");
96f.addRecord().setValue( 90 );
97
98 // 생성된 GAMSDatabase의 데이터를 사용하여 작업 실행
100
101GAMSOptions opt = ws.추가옵션();
102 GAMSJobt11 = ws.addJobFromString(모델, cpBase);
103opt.defines("gdxincname", DB.getName());
104opt.setAllModelTypes("익스프레스");
105t11.실행(선택, DB);
106
107 for (GAMSVariableRecordrec : t11.아웃DB().get변수("x"))
108System.out.println("x("+ rec.getKey(0) +","+ rec.getKey(1) +"): 레벨="+ rec.getLevel() +" 한계="+ rec.getMarginal());
109}
110
111 정적 공허CreateSaveRestart(슬롯 커뮤니티작업공간ws, 문자열 cpFileName)
112 //GAMSWorkspaceInfo wsInfo = 새로운 GAMSWorkspaceInfo();
113 //wsInfo.setWorkingDirectory(workingDirectory);
114 //GAMSWorkspace ws = 새로운 GAMSWorkspace(wsInfo);
115
116 GAMSJobj1 = ws.addJobFromString(기본모델);
117GAMSOptions opt = ws.추가옵션();
118
119선택.setAction( GAMSOptions.EAction.CompileOnly );
120
122j1.실행(선택, CP);
123
124opt.dispose();
125}
126
127 정적문자열 기본 모델 =
128 "$onempty \n"+
129 " 세트 \n"+
130 " i(*) 통조림 공장 / / \n"+
131 " j(*) 시장 / / \n"+
132 " \n"+
133 " 매개변수 \n"+
134 " a(i) 경우에 따라 공장 i의 용량 / / \n"+
135 " b(j) 경우의 시장 j 수요 / / \n"+
136 " d(i,j) 거리(천 마일) / / \n"+
137 " 천 마일당 케이스당 달러 단위의 스칼라 f 운임 /0/; \n"+
138 " \n"+
139 " 매개변수 c(i,j) 운송 비용(케이스당 수천 달러) ;\n"+
140 " \n"+
141 " c(i,j) = f * d(i,j) / 1000 ; \n"+
142 " \n"+
143 " 변수 \n"+
144 " x(i,j) 배송 수량 \n"+
145 " z 총 운송 비용(수천 달러) ; \n"+
146 " \n"+
147 " 양수 변수 x ; \n"+
148 " \n"+
149 " 방정식 \n"+
150 " 비용 정의 목적 함수 \n"+
151 " 공급(i) 공장 i의 공급 제한 준수 \n"+
152 " 수요(j)는 시장 j의 수요를 충족시킵니다. \n"+
153 " \n"+
154 " 비용 .. z =e= sum((i,j), c(i,j)*x(i,j)) ; \n"+
155 " \n"+
156 " 공급(i) .. sum(j, x(i,j)) =l= a(i) ; \n"+
157 " \n"+
158 " 수요(j) .. sum(i, x(i,j)) =g= b(j) ; \n"+
159 " \n"+
160 " 모델 전송 /all/ ; \n"+
161 " \n"+
162 " z를 최소화하는 lp를 사용하여 전송 문제를 해결합니다. \n"+
163 " \n";
164
165 정적문자열 모델 =
166 "$if가 설정되지 않음 gdxincname $abort '제공된 데이터 파일에 대한 포함 파일 이름 없음' \n"+
167 "$gdxin %gdxincname% \n"+
168 "$onMulti \n"+
169 "$load i j a b d f \n"+
170 "$gdxin \n"+
171 " \n"+
172 "x.l, x.m 표시; \n"+
173 " \n";
174}
GAMSSet addSet(문자열 식별자, 정수 차원)
GAMSParameter addParameter(문자열 식별자, 정수 차원)
GAMSVariable getVariable(문자열 식별자)
슬롯 커뮤니티데이터베이스 OutDB()
void setAction(GAMSOptions.EAction x)
void setSystemDirectory(문자열 디렉토리)
void setWorkingDirectory(문자열 디렉터리)
GAMSJob addJobFromString(문자열 소스)
슬롯 커뮤니티데이터베이스 addDatabase()
이 예는 저장/재시작 파일을 생성하고 사용하는 방법을 보여줍니다.