1패키지com.gams.examples.cutstock;
3가져오기java.io.PrintStream;
36fCutstockData = ws.
추가데이터베이스(
"gdxincname");
38fopt.defines(
"gdxincname",
"gdxincname");
39fopt.setSolveLink( GAMSOptions.ESolveLink.LoadLibrary );
40fopt.defines(
"dbOut1",
"dbOut1");
42fWidths = fCutstockData.
추가세트(
"나",
"너비");
58 공개 무효 실행(PrintStream 출력)
60 던지다 신규 GAMS예외(
"컷스톡 데이터베이스의 도메인 오류");
62직업.
실행(fopt,
널, 출력,
거짓, fCutstockData);
89 "$Title 절단 스톡 - 열 생성 접근 방식(CUTSTOCK,SEQ=294) 피망 슬롯" +
92 "과제는 피망 슬롯에서 다양한 크기의 종이 제품을 잘라내는 것입니다." +
93 "고객의 주문을 충족시키기 위한 대형 원시 종이 롤. 목표 피망 슬롯" +
94 "필요한 종이 롤 수를 최소화하는 것입니다. 피망 슬롯" +
96 "P. C. Gilmore 및 R. E. Gomory, 피망 슬롯에 대한 선형 프로그래밍 접근 방식" +
97 "재고 문제, 파트 I, Operations Research 9(1961), 849-859. 피망 슬롯" +
99 "P. C. Gilmore 및 R. E. Gomory, 피망 슬롯에 대한 선형 프로그래밍 접근 방식" +
100 "재고 문제, 파트 II, Operations Research 11(1963), 863-888. 피망 슬롯" +
109 "$if가 설정되지 않은 경우 gdxincname $abort '제공된 데이터 파일에 대한 포함 파일 이름 없음'피망 슬롯" +
110 "$gdxin %gdxincname% 피망 슬롯" +
111 "$load r i w d 피망 슬롯" +
114 "* 길모어-고모리 열 생성 알고리즘 피망 슬롯" +
116 "p 가능한 패턴 설정 /p1*p1000/ 피망 슬롯" +
117 " p의 pp(p) 동적 하위 집합 피망 슬롯" +
119 " aip(i,p) p에서 성장하는 패턴의 너비 i 수; 피망 슬롯" +
122 "가변 xp(p) 패턴이 사용되었습니다 피망 슬롯" +
124 "정수 변수 xp; xp.up(p) = sum(i, d(i)); 피망 슬롯" +
126 "사용된 패턴의 방정식 숫자 피망 슬롯" +
127 " 수요(i) 수요를 충족; 피망 슬롯" +
129 "numpat.. z =e= sum(pp, xp(pp)); 피망 슬롯" +
130 "수요(i).. sum(pp, aip(i,pp)*xp(pp)) =g= d(i); 피망 슬롯" +
132 "모델 마스터 /numpat, 수요/; 피망 슬롯" +
134 "* 가격 문제 - 배낭 모델 피망 슬롯" +
135 "변수 y(i) 새로운 패턴; 피망 슬롯" +
136 "정수 변수 y; y.up(i) = ceil(r/w(i)); 피망 슬롯" +
139 " 배낭 배낭 제약 조건; 피망 슬롯" +
141 "defobj.. z =e= 1 - 합계(i, 수요.m(i)*y(i)); 피망 슬롯" +
142 "배낭.. sum(i, w(i)*y(i)) =l= r; 피망 슬롯" +
144 "모델 가격 /defobj, 배낭/; 피망 슬롯" +
146 "* 초기화 - 초기 패턴은 단일 너비를 갖습니다 피망 슬롯" +
147 "pp(p) = ord(p)<=카드(i); 피망 슬롯" +
148 "aip(i,pp(p))$(ord(i)=ord(p)) = 바닥(r/w(i)); 피망 슬롯" +
151 "스칼라 완료 루프 표시기 /0/ 피망 슬롯" +
152 "마지막 패턴의 pi(p) 세트를 설정하십시오; pi(p) = ord(p)=card(pp)+1; 피망 슬롯" +
154 "옵션 optcr=0,limrow=0,limcol=0,solprint=off; 피망 슬롯" +
156 "그동안(완료되지 않았고 카드(pp)<카드(p), 피망 슬롯" +
157 " z를 최소화하는 rmip를 사용하여 마스터를 해결합니다. 피망 슬롯" +
158 " z를 최소화하는 mip를 사용하여 가격 책정 해결; 피망 슬롯" +
160 "* 마스터 모델을 개선할 수 있는 패턴을 찾았습니까? 피망 슬롯" +
161 " if(z.l < -0.001, 피망 슬롯" +
162 " aip(i,pi) = round(y.l(i)); 피망 슬롯" +
163 " pp(pi) = 예; pi(p) = pi(p-1); 피망 슬롯" +
168 "'롤 수의 하한값' 표시, master.objval; 피망 슬롯" +
170 "옵션 solprint=on; 피망 슬롯" +
171 "z를 최소화하는 mip를 사용하여 마스터를 해결합니다; 피망 슬롯" +
173 "매개변수 patrep 솔루션 패턴 보고서 피망 슬롯" +
174 " demrep 솔루션 수요 공급 보고서; 피망 슬롯" +
176 "patrep('# 생산됨',p) = round(xp.l(p)); 피망 슬롯" +
177 "patrep(i,p)$patrep('# 생산됨',p) = aip(i,p); 피망 슬롯" +
178 "patrep(i,'전체') = 합계(p, patrep(i,p)); 피망 슬롯" +
179 "patrep('생산 횟수','총계') = sum(p, patrep('생산 횟수',p)); 피망 슬롯" +
181 "demrep(i,'생산됨') = sum(p,patrep(i,p)*patrep('# 생산됨',p)); 피망 슬롯" +
182 "demrep(i,'수요') = d(i); 피망 슬롯" +
183 "demrep(i,'over') = demrep(i,'생산됨') - demrep(i,'수요'); 피망 슬롯" +
185 "표시 patrep, demrep; 피망 슬롯" +
186 "$if가 설정되지 않은 경우 dbOut1 $abort '제공된 외부 데이터베이스 1 파일에 대한 파일 이름 없음' 피망 슬롯" +
187 "execute_unload '%dbOut1%', patrep; 피망 슬롯" +
GAMSParameter getParameter(문자열 식별자)
GAMSSet addSet(문자열 식별자, 정수 차원)
GAMSParameter addParameter(문자열 식별자, 정수 차원)
GAMSDatabase addDatabaseFromGDX(String gdxFileName)
GAMSJob addJobFromString(문자열 소스)
이 예는 간단한 GAMS [컷스톡] 모델을 기반으로 한 컷스톡 문제의 래퍼 모델을 보여줍니다 ...
GAMSSet getWidths()
입력 기호 얻기, i: 너비
GAMSParameter getDemand()
입력 기호 얻기, d : 수요
GAMSParameter getPatRep()
출력 기호 가져오기, patrep : 솔루션 패턴 보고서
GAMSParameter getRawWidth()
입력 기호 가져오기, r : 원시 너비
GAMSOptions getOpt()
컷스톡 모델 실행을 위한 옵션 가져오기
문자열 getModelSource()
컷스톡 모델의 소스 가져오기
피망 슬롯(GAMSWorkspace ws)
피망 슬롯 생성자.
void run(PrintStream 출력)
컷스톡 모델을 실행합니다.
GAMSParameter getWidth()
입력 기호 얻기, w : 너비