설명
과제는 다양한 크기의 종이 제품을 잘라내는 것입니다. 고객의 주문을 충족하기 위한 대형 원시 종이 롤.
대형 모델 유형 :MINLP
카테고리 : 슬롯 나라 모델 라이브러리
메인 파일 : bchtlbas.gms 다음을 포함합니다: bchtlheu.inc
$title BCH 기능을 사용한 경험적 방법으로 손실 최소화 최소화(BCHTLBAS,SEQ=286)
$onText
임무는 다양한 크기의 종이 제품을 잘라내는 것입니다.
고객의 주문을 충족하기 위해 대형 원시 종이 롤.
Harjunkoski, I, 일정 문제에 대한 MINLP 방법 적용
종이 변환 산업에서. 아보아카데미대학교 박사학위 논문,
1997.
Harjunkoski, I, Westerlund, T, Porn, R 및 Skrifvars, H,
볼록하지 않은 트림 손실 문제를 해결하기 위한 다양한 변환
MINLP. 유럽 운영 연구 저널 105, 3(1998), 594-603.
키워드: 혼합 정수 비선형 프로그래밍, 절단 재고, 트림 손실
최소화, 브랜치앤컷 및 휴리스틱 설비, 제지산업
$offText
세트
i '제품 롤' / 1*12 /
j '패턴번호' / 1*12 /;
스칼라
Bmax '전체 롤의 폭' / 2100 /
델타 '패턴의 최대 손실' / 100 /
Nkmax '최대 나이프 수' / 5 /;
매개변수
n(i) '각 제품 롤의 주문 수'
/ 1장 10절, 2장 28절, 3장 48절, 4장 28절, 5장 40절, 6장 30절
7 21, 8 22, 9 8, 10 8, 11 9, 12 8 /
b(i) '각 롤의 너비'
/ 1 350.0, 2 450.0, 3 550.0, 4 650.0, 5 700.0, 6 740.0
7 800.0, 8 840.0, 9 910.0, 10 960.0, 11 1010.0, 12 1060.0 /;
매개변수 mupp(j) '패턴 j 반복의 상한';
mupp(j) = smax(i,n(i));
* 휴리스틱을 위한 공통 데이터 언로드
Execute_unload "trimloss.gdx", i, j, Bmax, delta, Nkmax, n, b, mupp;
변수
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);
모델 트림로스 / 모두 /;
$echo userHeurCall bchtlheu.inc mip cplex resLim 5> sbb.opt
옵션 minlp = sbb;
트림로스.opt파일 = 1;
objval을 최소화하는 minlp를 사용하여 Trimloss를 해결합니다.