설명
과제는 다양한 크기의 종이 제품을 잘라내는 것입니다. 고객의 주문을 충족하기 위한 대형 원시 종이 롤.
소형 모델 유형 :MINLP
카테고리 : 슬롯 모델 라이브러리
메인 파일 : trimloss.gms
$title 트림 손실 최소화(TRIMLOSS,SEQ=204)
$onText
임무는 다양한 크기의 종이 제품을 잘라내는 것입니다.
고객의 주문을 충족하기 위해 대형 원시 종이 롤.
Harjunkoski, I, 일정 문제에 대한 MINLP 방법 적용
종이 변환 산업에서. 아보아카데미대학교 박사학위 논문,
1997.
Harjunkoski, I, Westerlund, T, Porn, R 및 Skrifvars, H,
볼록하지 않은 트림 손실 문제를 해결하기 위한 다양한 변환
MINLP. 유럽 운영 연구 저널 105, 3(1998), 594-603.
Floudas, C A, Pardalos, PM, Adjiman, C S, Esposito, W R, Gumus, Z H,
Harding, S T, Klepeis, J L, Meyer, CA 및 Schweiger, C A, 핸드북
로컬 및 글로벌 최적화의 테스트 문제. 클루어 아카데믹
출판사, 1999.
전체 모델 컬렉션은 다음에서 찾을 수 있습니다.
http://titan.princeton.edu/TestProblems/
키워드: 혼합 정수 비선형 계획법, 재고 절단, 트림 손실 최소화
제지 산업, 엔지니어링
$offText
세트
i '제품 롤' / 1*6 /
j '패턴번호' / 1*6 /;
스칼라
Bmax '전체 롤의 폭' / 2200 /
델타 '패턴의 최대 손실' / 100 /
Nkmax '최대 나이프 수' / 5 /;
매개변수
n(i) '각 제품 롤의 주문 수'
/ 1 8, 2 16, 3 12, 4 7, 5 14, 6 16 /
b(i) '각 롤의 너비'
/ 1 330, 2 360, 3 380, 4 430, 5 490, 6 530 /
mupp(j) '패턴 j 반복의 상한'
/ 1 15, 2 12, 3 8, 4 7, 5 4, 6 2 /;
변수
r(i,j) '패턴 j에 있는 i 유형의 제품 수'
y(j) '패턴 j의 존재'
m(j) '패턴 j의 반복'
objval '목적 함수 변수';
자유 변수 objval;
이진변수 y;
정수 변수 r, m;
방정식
f '목적 함수'
numroll(i) '충분한 생산을 보장하는 주문 제약'
widthL(j) '너비 하한 제약 조건'
widthU(j) '너비 상한 제약 조건'
rL(j) 'r에 대한 논리적 제약조건'
sumr(j) 'r에 대한 논리적 제약조건'
mL(j) 'm에 대한 논리적 제약조건'
mU(j) 'm에 대한 논리적 제약조건'
sumbil '만든 총 패턴 수의 하한'
yy(j) '축퇴를 줄이기 위해 y 변수의 순서 지정'
lmm(j) '축퇴를 줄이기 위해 m개 변수의 순서 지정';
f.. objval =e= sum(j, m(j) + ord(j)/10*y(j));
numroll(i).. sum(j, m(j)*r(i,j)) =g= n(i);
widthL(j).. sum(i,b(i)*r(i,j)) =g= (Bmax - 델타)*y(j);
widthU(j).. sum(i,b(i)*r(i,j)) =l= Bmax*y(j);
rL(j)..y(j) =l= sum(i,r(i,j));
sumr(j).. sum(i,r(i,j)) =l= Nkmax*y(j);
mL(j)..y(j) =l= m(j);
mU(j)..m(j) - mupp(j)*y(j) =l= 0;
sumbil.. sum(j, m(j)) =g= max(ceil(sum(i,n(i))/Nkmax), ceil(sum(i,b(i)*n(i))/Bmax))+1;
yy(j+1)..y(j+1) =l= y(j);
lmm(j+1)..m(j+1) =l= m(j);
r.up(i,j) = Nkmax;
m.up(j) = mupp(j);
모델 트림로스 / 모두 /;
옵션 optCr = 0.0;
objval을 최소화하는 minlp를 사용하여 Trimloss를 해결합니다.
exec오류 = 0;
* 글로벌 솔루션을 찾았나요?
매개변수 담당자 '솔루션 보고서';
rep(i,j,'local') = r.L(i,j);
rep('y',j,'local') = y.L(j);
rep('m',j,'local') = m.L(j);
테이블 gs(j,*) '전역 솔루션'
1 2 3 4 5 6년
1 2 1 1 1 1 8
2 1 2 1 1 1 8;
rep(i,j,'global') = gs(j,i);
rep('y',j,'global') = gs(j,'y');
rep('m',j,'global') = gs(j,'m');
담당자(i,j,'diff') = 담당자(i,j,'글로벌') - 담당자(i,j,'로컬');
담당자('y',j,'diff') = 담당자('y',j,'글로벌') - 담당자('y',j,'local');
담당자('m',j,'diff') = 담당자('m',j,'글로벌') - 담당자('m',j,'local');
옵션 담당자:8:2:1;
디스플레이 담당자;