2사용 중System.Collections.Generic;
32fCutstockData = ws.
데이터베이스 추가(모델 이름:
"gdxincname");
35fopt.
정의.추가(
"dbOut1",
"dbOut1");
37fWidths = fCutstockData.
AddSet(
"나",
"너비");
38fRawWidth = fCutstockData.
매개변수 추가(
"r",
"원시 너비");
39fDemand = fCutstockData.
매개변수 추가(
"d",
"수요", fWidths);
40fWidth = fCutstockData.
매개변수 추가(
"w",
"너비", fWidths);
45 공개 공허실행(TextWriter 출력 =
널)
47 if(!fCutstockData.
체크도메인())
48 던지다 신규 메가 슬롯예외(
"컷스톡 데이터베이스의 도메인 오류");
49직업.
실행(fopt,
널, 출력,
거짓, fCutstockData);
76 공개 문자열GetModelSource()
79$Title 절단 스톡 - 열 생성 접근 방식(CUTSTOCK,SEQ=294)
82과제는 다양한 크기의 종이 제품을 잘라내는 것입니다.
83고객의 주문을 충족시키기 위한 대형 원시 종이 롤. 목표
84필요한 용지 롤 수를 최소화하는 것입니다.
87P. C. Gilmore 및 R. E. Gomory, 선형 프로그래밍 접근 방식
88재고 문제, 파트 I, Operations Research 9(1961), 849-859.
90P. C. Gilmore 및 R. E. Gomory, 선형 프로그래밍 접근 방식
91재고 문제, 파트 II, Operations Research 11(1963), 863-888.
100$if 설정되지 않음 gdxincname $abort '제공된 데이터 파일에 대한 포함 파일 이름 없음'
107p개의 가능한 패턴 설정 /p1*p1000/
110aip(i,p) p에서 성장하는 패턴의 너비 i 수;
116정수 변수 xp; xp.up(p) = 합계(i, d(i));
121numpat.. z =e= sum(pp, xp(pp));
122수요(i).. sum(pp, aip(i,pp)*xp(pp)) =g= d(i);
128정수 변수 y; y.up(i) = ceil(r/w(i));
133defobj.. z =e= 1 - 합계(i, 수요.m(i)*y(i));
134knapsack..sum(i, w(i)*y(i)) =l= r;
138* 초기화 - 초기 패턴은 단일 너비를 갖습니다.
139pp(p) = ord(p)<=카드(i);
140aip(i,pp(p))$(ord(i)=ord(p)) = 바닥(r/w(i));
144마지막 패턴의 pi(p) 세트를 설정합니다; 파이(p) = ord(p)=카드(pp)+1;
146옵션 optcr=0,limrow=0,limcol=0,solprint=off;
148그동안(완료되지 않았고 카드(pp)<카드(p),
149z를 최소화하는 rmip를 사용하여 마스터를 해결합니다.
150mip 최소화 z를 사용하여 가격 책정 해결;
152* 마스터 모델을 개선할 수 있는 패턴이 발견되었습니까?
154aip(i,pi) = round(y.l(i));
155pp(pi) = 예; 파이(p) = 파이(p-1);
160'롤 수의 하한값' 표시, master.objval;
163z를 최소화하는 mip를 사용하여 마스터를 해결합니다.
165매개변수 patrep 솔루션 패턴 보고서
168patrep('#생산됨',p) = round(xp.l(p));
169patrep(i,p)$patrep('# 생산됨',p) = aip(i,p);
170patrep(i,'전체') = 합계(p, patrep(i,p));
171patrep('생산된 수','총계') = sum(p, patrep('생산된 수',p));
173demrep(i,'생산됨') = sum(p,patrep(i,p)*patrep('# 생산됨',p));
174demrep(i,'수요') = d(i);
175demrep(i,'over') = demrep(i,'생산됨') - demrep(i,'수요');
179$if가 설정되지 않음 dbOut1 $abort '제공된 외부 데이터베이스 1 파일에 대한 파일 이름이 없음'
180execute_unload '%dbOut1%', patrep;
GAMSSet AddSet(문자열 식별자, int 차원, 문자열 설명텍스트="", SetType setType=SetType.multi)
GAMSParameter GetParameter(문자열 매개변수 식별자)
GAMSParameter AddParameter(문자열 식별자, 정수 차원, 문자열 설명텍스트="")
void Run(GAMSOptions gamsOptions=null, GAMSCheckpoint 체크포인트=null, TextWriter 출력=null, Boolean createOutDB=true)
GAMSJob AddJobFromString(문자열 gamsSource, GAMSCheckpoint 체크포인트=null, 문자열 jobName=null)
GAMSDatabase AddDatabaseFromGDX(문자열 gdxFileName, 문자열 데이터베이스 이름=null, 문자열 inModelName=null)
GAMSDatabase AddDatabase(문자열 데이터베이스 이름=null, 문자열 inModelName=null)
GAMSOptions AddOptions(GAMSOptions optFrom=null)