43파일 WorkingDirectory =
신규파일(System.getProperty(
"user.dir"),
"운송9");
44workingDirectory.mkdir();
47문자열 strAccessConn = args[0] + GAMSGlobals.FILE_SEPARATOR +
"api파일"
48+ GAMSGlobals.FILE_SEPARATOR +
"데이터"
49+ GAMSGlobals.FILE_SEPARATOR +
"transport.accdb";
51 슬롯 나라데이터베이스db = readDataFromAccess(ws, strAccessConn);
53GAMSOptions opt = ws.
추가옵션();
55opt.defines(
"gdxincname", DB.
getName());
56opt.setAllModelTypes(
"익스프레스");
59System.out.println(
"x("+ rec.getKey(0) +
","+ rec.getKey(1) +
"): 레벨="+ rec.getLevel() +
" 한계="+ rec.getMarginal());
61writeDataToAccess(ws, strAccessConn, t9.
아웃DB());
69클래스.for이름(
"net.ucanaccess.jdbc.UcanaccessDriver");
72문자열 url = net.ucanaccess.jdbc.UcanaccessDriver.URL_PREFIX + 위치;
73연결 c = DriverManager.getConnection(url,
"",
"");
76readSet(c, db,
"식물에서 식물을 선택하세요",
"나", 1,
"통조림 공장");
77readSet(c, db,
"시장에서 시장 선택",
"j", 1,
"시장");
80readParameter(c, db,
"공장 선택, 공장에서 용량",
"a", 1,
"케이스에 있는 식물 i의 용량");
81readParameter(c, db,
"시장 선택,시장에서 수요",
"b", 1,
"경우에 따라 시장 j의 수요");
82readParameter(c, db,
"공장,시장,거리 FROM 거리 선택",
"d", 2,
"수천 마일 단위의 거리");
85}
잡기(ClassNotFoundException e)
86System.err.println(
"오류: 데이터베이스용 드라이버를 찾는 데 실패했습니다.");
90System.err.println(
"오류: 데이터베이스에서 데이터를 검색하는 데 실패했습니다.");
97 정적 공허readSet(연결 c,
슬롯 나라데이터베이스db, 문자열 queryString, 문자열 setName,
intsetDimension, 문자열 setExplanatoryText)
던지기SQL예외
98문 st = c.createStatement();
100ResultSet rs = st.executeQuery(queryString);
101ResultSetMetaData rsmd = rs.getMetaData();
103 if(rsmd.getColumnCount() != setDimension)
104System.err.println(
"오류: select 문의 필드 수가 setDimemsion과 일치하지 않습니다.");
109 GAMSSet 세트=디비.
추가세트(setName, setDimension, setExplanatoryText);
111문자열[] 키 =
신규문자열[setDimension];
114 for (
intidx=0; idx < setDimension; idx++)
115키[idx] = rs.getString(idx+1);
121 정적 공허readParameter(연결 c,
슬롯 나라데이터베이스db, 문자열 queryString, 문자열 parName,
intparDimension, 문자열 parExplanatoryText)
던지기SQL예외
122문 st = c.createStatement();
124ResultSet rs = st.executeQuery(queryString);
125ResultSetMetaData rsmd = rs.getMetaData();
127 intnumberOfColumns = rsmd.getColumnCount();
128 if(numberOfColumns != (parDimension+1))
129System.err.println(
"오류: select 문의 필드 수가 parDimension과 일치하지 않습니다.");
136문자열[] 키 =
신규문자열[parDimension];
139 for (
intidx=0; idx < par차원; idx++)
140키[idx] = rs.getString(idx+1);
141parameter.addRecord( 키 ).setValue( Double.valueOf(rs.getString(numberOfColumns)) );
146 정적 무효writeVariable(연결 c,
슬롯 나라데이터베이스db, 문자열 varName, 문자열 ... 도메인)
던지기SQL예외
149 if( domains.length != var.getDimension() )
150System.err.println(
"오류: 열 이름의 수가 변수의 차원과 일치하지 않습니다.");
155문 st = c.createStatement();
157문자열 SQL =
"테이블 생성"+ varName +
"(";
159sql += dom +
" varchar(64), ";
162st.executeUpdate(sql);
165sql =
""에 삽입+ varName +
"(";
169 for(문자열 키 : rec.getKeys())
171sql += rec.getLevel() +
")";
173st.executeUpdate(sql);
181클래스.for이름(
"net.ucanaccess.jdbc.UcanaccessDriver");
184문자열 url = net.ucanaccess.jdbc.UcanaccessDriver.URL_PREFIX + 위치;
185연결 c = DriverManager.getConnection(url,
"",
"");
188writeVariable(c, db,
"x",
"나",
"j");
191}
잡기(ClassNotFoundException e)
192System.err.println(
"오류: 데이터베이스용 드라이버를 찾는 데 실패했습니다.");
196System.err.println(
"오류: 데이터베이스에 데이터를 다시 쓰는 데 실패했습니다.");
204 "나는 식물을 통조림으로 만들고 있습니다 \n"+
208 " a(i) 경우에 따라 공장 i의 용량 \n"+
209 " b(j) 경우의 시장 j 수요 \n"+
210 " d(i,j) 거리(천 마일 단위) \n"+
211 " 스칼라 f 운임(1,000 마일당 케이스당 달러 단위) /90/; \n"+
213 "$if gdxincname $abort '제공된 데이터 파일에 대한 포함 파일 이름이 설정되지 않음' \n"+
214 "$gdxin %gdxincname% \n"+
215 "$load i j a b d \n"+
218 " 매개변수 c(i,j) 운송 비용(케이스당 수천 달러) ; \n"+
220 " c(i,j) = f * d(i,j) / 1000 ; \n"+
223 " 케이스의 x(i,j) 배송 수량 \n"+
224 " z 총 운송 비용(수천 달러) ; \n"+
230 " 공급(i) 공장 i의 공급 제한 준수 \n"+
231 " 수요(j)는 시장 j의 수요를 충족시킵니다. \n"+
233 " 비용 .. z =e= sum((i,j), c(i,j)*x(i,j)) ; \n"+
235 " 공급(i) .. sum(j, x(i,j)) =l= a(i) ; \n"+
237 " 수요(j) .. sum(i, x(i,j)) =g= b(j) ; \n"+
241 " z를 최소화하는 lp를 사용하여 전송 문제를 해결합니다. \n"+