로드 중...
검색 중...
일치하는 항목 없음
Transport9.java
1패키지com.슬롯 나라examples.transport;
2
3가져오기java.io.파일;
4가져오기java.sql.Connection;
5가져오기java.sql.DriverManager;
6가져오기java.sql.ResultSet;
7가져오기java.sql.ResultSetMetaData;
8가져오기java.sql.SQLException;
9가져오기java.sql.Statement;
10
13가져오기 com.게임.API.GAMSJob;
16가져오기 com.게임.API.GAMSSet;
18가져오기 com.게임.API.GAMSVariableRecord;
20가져오기 com.게임.API.GAMSWorkspaceInfo;
21
33공개 클래스운송9{
34
35 공개 정적 무효메인(문자열[] 인수)
37
38 if(args.length > 0)
39 // 첫 번째 명령줄 인수에서 시스템 디렉터리 정보를 확인
40wsInfo.setSystemDirectory( 인수[0] );
41}
42
43파일 WorkingDirectory =신규파일(System.getProperty("user.dir"), "운송9");
44workingDirectory.mkdir();
45wsInfo.setWorkingDirectory(workingDirectory.getAbsolutePath());
46
47문자열 strAccessConn = args[0] + GAMSGlobals.FILE_SEPARATOR +"api파일"
48+ GAMSGlobals.FILE_SEPARATOR +"데이터"
49+ GAMSGlobals.FILE_SEPARATOR +"transport.accdb";
51 슬롯 나라데이터베이스db = readDataFromAccess(ws, strAccessConn);
52
53GAMSOptions opt = ws.추가옵션();
54 GAMSJobt9 = ws.addJobFromString( 모델 );
55opt.defines("gdxincname", DB.getName());
56opt.setAllModelTypes("익스프레스");
57t9.실행(선택, DB);
58 for (GAMSVariableRecordrec : t9.아웃DB().getVariable("x"))
59System.out.println("x("+ rec.getKey(0) +","+ rec.getKey(1) +"): 레벨="+ rec.getLevel() +" 한계="+ rec.getMarginal());
60
61writeDataToAccess(ws, strAccessConn, t9.아웃DB());
62}
63
64 정적 슬롯 나라데이터베이스readDataFromAccess(슬롯 나라작업공간ws, 문자열 위치)
66
67 시도해 보세요{
68 // jdbc odbc 드라이버 로드 중
69클래스.for이름("net.ucanaccess.jdbc.UcanaccessDriver");
70
71 // 데이터베이스 연결 생성
72문자열 url = net.ucanaccess.jdbc.UcanaccessDriver.URL_PREFIX + 위치;
73연결 c = DriverManager.getConnection(url,"", "");
74
75 // 슬롯 나라 세트 읽기
76readSet(c, db,"식물에서 식물을 선택하세요", "나", 1,"통조림 공장");
77readSet(c, db,"시장에서 시장 선택", "j", 1,"시장");
78
79 // 슬롯 나라 매개변수 읽기
80readParameter(c, db,"공장 선택, 공장에서 용량", "a", 1,"케이스에 있는 식물 i의 용량");
81readParameter(c, db,"시장 선택,시장에서 수요", "b", 1,"경우에 따라 시장 j의 수요");
82readParameter(c, db,"공장,시장,거리 FROM 거리 선택", "d", 2,"수천 마일 단위의 거리");
83
84c.close();
85}잡기(ClassNotFoundException e)
86System.err.println("오류: 데이터베이스용 드라이버를 찾는 데 실패했습니다.");
87e.printStackTrace();
88System.exit(-1);
89}잡기(SQLException e)
90System.err.println("오류: 데이터베이스에서 데이터를 검색하는 데 실패했습니다.");
91e.printStackTrace();
92System.exit(-1);
93}
94 반환db;
95}
96
97 정적 공허readSet(연결 c,슬롯 나라데이터베이스db, 문자열 queryString, 문자열 setName,intsetDimension, 문자열 setExplanatoryText)던지기SQL예외
98문 st = c.createStatement();
99
100ResultSet rs = st.executeQuery(queryString);
101ResultSetMetaData rsmd = rs.getMetaData();
102
103 if(rsmd.getColumnCount() != setDimension)
104System.err.println("오류: select 문의 필드 수가 setDimemsion과 일치하지 않습니다.");
105c.close();
106System.exit(-1);
107}
108
109 GAMSSet 세트=디비.추가세트(setName, setDimension, setExplanatoryText);
110
111문자열[] 키 =신규문자열[setDimension];
112
113 그동안(rs.next())
114 for (intidx=0; idx < setDimension; idx++)
115키[idx] = rs.getString(idx+1);
116 설정.addRecord( 키 );
117}
118st.close();
119}
120
121 정적 공허readParameter(연결 c,슬롯 나라데이터베이스db, 문자열 queryString, 문자열 parName,intparDimension, 문자열 parExplanatoryText)던지기SQL예외
122문 st = c.createStatement();
123
124ResultSet rs = st.executeQuery(queryString);
125ResultSetMetaData rsmd = rs.getMetaData();
126
127 intnumberOfColumns = rsmd.getColumnCount();
128 if(numberOfColumns != (parDimension+1))
129System.err.println("오류: select 문의 필드 수가 parDimension과 일치하지 않습니다.");
130c.close();
131System.exit(-1);
132}
133
134 슬롯 나라매개변수매개변수 = db.addParameter(parName, parDimension, parExplanatoryText);
135
136문자열[] 키 =신규문자열[parDimension];
137
138 그동안(rs.next())
139 for (intidx=0; idx < par차원; idx++)
140키[idx] = rs.getString(idx+1);
141parameter.addRecord( 키 ).setValue( Double.valueOf(rs.getString(numberOfColumns)) );
142}
143st.close();
144}
145
146 정적 무효writeVariable(연결 c,슬롯 나라데이터베이스db, 문자열 varName, 문자열 ... 도메인)던지기SQL예외
147
148 슬롯 나라변수var = db.get변수(varName);
149 if( domains.length != var.getDimension() )
150System.err.println("오류: 열 이름의 수가 변수의 차원과 일치하지 않습니다.");
151c.close();
152System.exit(-1);
153}
154
155문 st = c.createStatement();
156
157문자열 SQL ="테이블 생성"+ varName +"(";
158 for(문자열 DOM : 도메인)
159sql += dom +" varchar(64), ";
160sql +="레벨 두 배)";
161
162st.executeUpdate(sql);
163
164 for (GAMSVariableRecordrec : var)
165sql =""에 삽입+ varName +"(";
166 for(문자열 DOM : 도메인)
167sql += dom +", ";
168sql +="lvl) 값 (";
169 for(문자열 키 : rec.getKeys())
170sql +="'"+ 키 +"', ";
171sql += rec.getLevel() +")";
172
173st.executeUpdate(sql);
174}
175st.close();
176}
177
178 정적 무효writeDataToAccess(슬롯 나라작업공간ws, 문자열 위치,슬롯 나라데이터베이스db)
179 시도해 보세요{
180 // jdbc odbc 드라이버 로드 중
181클래스.for이름("net.ucanaccess.jdbc.UcanaccessDriver");
182
183 // 데이터베이스 연결 생성
184문자열 url = net.ucanaccess.jdbc.UcanaccessDriver.URL_PREFIX + 위치;
185연결 c = DriverManager.getConnection(url,"","");
186
187 // 변수 x의 수준 쓰기
188writeVariable(c, db,"x", "나", "j");
189
190c.close();
191}잡기(ClassNotFoundException e)
192System.err.println("오류: 데이터베이스용 드라이버를 찾는 데 실패했습니다.");
193e.printStackTrace();
194System.exit(-1);
195}잡기(SQLException e)
196System.err.println("오류: 데이터베이스에 데이터를 다시 쓰는 데 실패했습니다.");
197e.printStackTrace();
198System.exit(-1);
199}
200}
201
202 정적문자열 모델 =
203 " 세트 \n"+
204 "나는 식물을 통조림으로 만들고 있습니다 \n"+
205 " j 시장 \n"+
206 " \n"+
207 " 매개변수 \n"+
208 " a(i) 경우에 따라 공장 i의 용량 \n"+
209 " b(j) 경우의 시장 j 수요 \n"+
210 " d(i,j) 거리(천 마일 단위) \n"+
211 " 스칼라 f 운임(1,000 마일당 케이스당 달러 단위) /90/; \n"+
212 " \n"+
213 "$if gdxincname $abort '제공된 데이터 파일에 대한 포함 파일 이름이 설정되지 않음' \n"+
214 "$gdxin %gdxincname% \n"+
215 "$load i j a b d \n"+
216 "$gdxin \n"+
217 " \n"+
218 " 매개변수 c(i,j) 운송 비용(케이스당 수천 달러) ; \n"+
219 " \n"+
220 " c(i,j) = f * d(i,j) / 1000 ; \n"+
221 " \n"+
222 " 변수 \n"+
223 " 케이스의 x(i,j) 배송 수량 \n"+
224 " z 총 운송 비용(수천 달러) ; \n"+
225 " \n"+
226 " 양수 변수 x ; \n"+
227 " \n"+
228 " 방정식 \n"+
229 " 비용 정의 목적 함수 \n"+
230 " 공급(i) 공장 i의 공급 제한 준수 \n"+
231 " 수요(j)는 시장 j의 수요를 충족시킵니다. \n"+
232 " \n"+
233 " 비용 .. z =e= sum((i,j), c(i,j)*x(i,j)) ; \n"+
234 " \n"+
235 " 공급(i) .. sum(j, x(i,j)) =l= a(i) ; \n"+
236 " \n"+
237 " 수요(j) .. sum(i, x(i,j)) =g= b(j) ; \n"+
238 " \n"+
239 " 모델 전송 /all/ ; \n"+
240 " \n"+
241 " z를 최소화하는 lp를 사용하여 전송 문제를 해결합니다. \n"+
242 " \n"+
243 " x.l, x.m 표시 ; \n"+
244 " \n";
245}
GAMSSet addSet(문자열 식별자, 정수 차원)
GAMSParameter addParameter(문자열 식별자, 정수 차원)
GAMSVariable getVariable(문자열 식별자)
슬롯 나라데이터베이스 OutDB()
void setSystemDirectory(문자열 디렉토리)
void setWorkingDirectory(문자열 디렉터리)
GAMSJob addJobFromString(문자열 소스)
슬롯 나라데이터베이스 addDatabase()
이 예는 MSAccess 파일에서 슬롯 나라 전송 모델에 대한 입력을 검색하는 방법을 보여줍니다(tra...