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