tanksize.gms : 슬롯 사이트 크기 설계 문제

설명

우리는 다중 제품 공장의 슬롯 사이트 설계 문제에 대해 논의합니다.
최적의 주기 시간과 최적의 캠페인 규모는 알려져 있지 않습니다. 혼합되어-
비볼록성이 있는 테거 비선형 계획법 공식이 제시됩니다.
슬롯 사이트 투자 비용, 보관 비용, 캠페인 설정 비용 및
가변적인 생산율. 최적화 모델의 목적은 다음과 같습니다.
생산된 제품당 톤당 생산 비용의 합을 최소화합니다. 에이
문제에 대한 연속시간 수학 계획법 공식은 다음과 같습니다.
고정된 수의 이벤트 포인트로 구현되었습니다.

소형 모델 유형 :MINLP


카테고리 : 슬롯 사이트 모델 라이브러리


메인 파일 : 슬롯 사이트크기.gms

$title 슬롯 사이트 크기 설계 문제 - (TANKSIZE,SEQ=350)

$onText
우리는 다중 제품 공장의 슬롯 사이트 설계 문제에 대해 논의합니다.
최적의 주기 시간과 최적의 캠페인 규모는 알려져 있지 않습니다. 혼합되어-
비볼록성이 있는 테거 비선형 계획법 공식이 제시됩니다.
슬롯 사이트 투자 비용, 보관 비용, 캠페인 설정 비용 및
가변적인 생산율. 최적화 모델의 목적은 다음과 같습니다.
생산된 제품당 톤당 생산 비용의 합을 최소화합니다. 에이
문제에 대한 연속시간 수학 계획법 공식은 다음과 같습니다.
고정된 수의 이벤트 포인트로 구현되었습니다.

Rebennack, S, Kallrath, J 및 Pardalos, P M, 최적의 스토리지 설계
다중 제품 공장의 경우: 볼록하지 않은 MINLP 제형. 기술. 대표,
University of Florida, 2009. 컴퓨터 및 화학과에 제출
공학

키워드: 혼합 정수 비선형 계획법, 저장 설계, 전역 최적화
          연속시간 모델, 화학공학
$offText

$eolCom //

$sTitle 모델 크기 및 데이터 정의
세트
   p '제품' / P1*P3 /
   n '이벤트 포인트' / N1*N3 /;

매개변수
   PRMIN(p) '일일 제품의 부피 흐름(m^3)'
   PRMAX(p) '일일 제품의 부피 흐름(m^3)'
   SLB(p) '재고 하한(m^3)'
   SUB(p) '재고 상한(m^3)'
   SI(p) 'm^3 단위의 초기 재고(하한의 10%)'
   DLB(p) '생산 길이 d(n)'의 하한
   DUB(p) '생산 길이 d(n)의 상한'
   DEMAND(p) '연간 제품의 양(m^3)!!'
   TS(p) '캠페인 설정 시간(일)'
   CSTI(p) '톤당 슬롯 사이트 가변 비용'
   CSTC(p) '캠페인 설정 비용'
   B '슬롯 사이트 투자 비용의 가변 부분' / 0.3271 /;

테이블 pdata(p,*)
      prmin prmax slb sub si dlb dub 수요 ts csti cstc
   P1 15.0 50.0 643.0 4018.36 707.0 1 40 4190 0.4 18.8304 10
   P2 15.0 50.0 536.0 3348.63 589.0 1 40 3492 0.2 19.2934 20
   P3 7.0 50.0 214.0 1339.45 235.0 1 40 1397 0.1 19.7563 30;

$onEchoV > 할당파.gms
$라벨 시작
%1(p) = pdata(p,'%1');
$shift
$if not x%1 == x $goTo start
$offEcho
$batInclude 할당 prmin prmax slb sub si dlb dub 수요 ts csti cstc

* 파생 데이터
매개변수
   DPD(p) '제품당 일일 수요를 계산합니다[일당 톤]'
   L '일일 수요 계산[일일 톤]'
   CAL '가장 긴 캠페인'
   PRL '최대 생산 길이'
   CSTCMin '최소 설정 비용'
   CSTCMax '최대 설정 비용';

DPD(p) = 수요(p)/365;
L = 합(p, DPD(p));
CSTI(p) = CSTI(p)/365;   // 저장 비용을 확장합니다.
CAL = 최대(0, smax(p, DUB(p) + TS(p)));
PRL = 최대(0, smax(p, DUB(p)));
CSTCMin = smin(p, CSTC(p));
CSTCMax = smax(p, CSTC(p));

$s제목 모델 공식화
별칭(p,pp);

양수 변수
   d(n) '캠페인 기간'
   pC(p,n) '캠페인 n에서 생산된 제품 p의 양'
   s(p,n) '캠페인 n 시작 시 저장된 제품 p의 양'
   sM(p) '톤 단위의 제품 슬롯 사이트 크기'
   sH(p,n) '보조 변수'
   cI '투자비용'
   cC '캠페인 설정 비용'
   CS '변동적인 보관 비용'
   T '사이클 시간';

바이너리 변수
   omega(p,n) '캠페인 내 제품을 나타내는 이진 변수';

변수
   cPT '톤당 비용: 최소화할 목적 변수';

방정식
   TIMECAP '시간 용량'
   UNIQUE(n) '캠페인당 최대 하나의 제품'
   MATBAL(p,n) '물질 수지 제약'
   TANKCAP(p,n) '슬롯 사이트 용량 제약'
   PPN1(p,n) '비선형 곱 pR(rp)*d(n)*omega를 계산합니다.'
   PPN2(p,n) '비선형 곱 pR(rp)*d(n)*omega를 계산합니다.'
   SCCam1(n) '캠페인에 대한 반연속 경계'
   SCCam2(n) '캠페인에 대한 반연속 경계'
   DEFcC '캠페인 설정 비용'
   DEFcI '투자비용'
   DEFcS '가변 저장 비용'
   DefsH(p,n) '보조 변수 정의'
   DEFcPT '생산 톤당 총 비용'
   NONIDLE(n) '유휴 상태가 되지 않도록 강제';

* 사이클 시간 T를 알 수 없는 시간 균형 제약 조건
TIMECAP.. sum(n, d(n) + sum (p, TS(p)*omega(p,n))) =e= T;

* 캠페인당 최대 하나의 제품
UNIQUE(n).. sum(p, omega(p,n)) =l= 1;

* 유휴 상태는 허용되지 않습니다.
NONIDLE(n).. sum(p, DUB(p)*omega(p,n)) =g= d(n);

* 물질수지 방정식(정상상태):
* 제품 p에 대한 n 끝의 저장 = 제품 p에 대한 n+1 시작 시 저장
* 제품 p에 대한 n 끝의 저장 = n 시작 시 저장
* + n에서 제품 p의 총 생산량
* - 기간 n의 총 수요
MATBAL(p,n)..
   s(p,n++1) =e= s(p,n) + pC(p,n) - DPD(p)*(d(n) + sum(pp, TS(pp)*omega(pp,n)));

* 슬롯 사이트 용량 제약:
* 이는 슬롯 사이트 설계 용량 변수를 저장 레벨과 연결합니다.
TANKCAP(p,n)..s(p,n) =l= sM(p);

* 비선형 곱 계산: pR(p,n)*d(n)*omega
* 기간 n의 제품 p 생산을 다음과 연결합니다.
* -> 오메가 변수
* -> 생산 기간
* -> 생산율
* PPN(p,n).. pC(p,nbl(n)) =e= pR(p,n)*d(n)*omega(p,n);
PPN1(p,n).. pC(p,n) =l= PRMAX(p)*d(n)*omega(p,n);
PPN2(p,n).. pC(p,n) =g= PRMIN(p)*d(n)*오메가(p,n);

* 캠페인의 반연속 하한 및 상한
SCCam2(n).. d(n) =g= sum(p, DLB(p)*omega(p,n));
SCCam1(n).. d(n) =l= sum(p, DUB(p)*omega(p,n));

* 톤당 총 비용 정의: cPT
DEFcPT.. (cPT*L - cI )*T =e= cC + cS;

* 캠페인 설정 비용 정의
DEFcC.. cC =e= sum((p,n), CSTC(p)*omega(p,n));

* 슬롯 사이트 투자 비용 정의
DEFcI.. cI =e= B*sum(p, sqrt(sM(p)));

* 가변 슬롯 사이트 비용 정의
DEFcS.. cS =e= 합((p,n), CSTI(p)*sH(p,n)
                                   *(d(n) + 합계(pp, TS(pp)*오메가(pp,n))));

* 목표에 대한 보조 변수
DefsH(p,n).. sH(p,n) =e= 0.5*(s(p,n++1) + s(p,n)) - SLB(p);

* 대칭을 깨기 위한 추가 제약 조건
방정식
   SEQUENCE(p,n) '오메가에 대한 중복 제약 조건'
   SYMMETRY(n) '활성 캠페인의 대칭성을 깨뜨립니다.';

* n기간에 생산된 제품은 n기간에 생산할 수 없다.
* 기간 n+1
SEQUENCE(p,n).. 1 - 오메가(p,n) =g= 오메가(p,n+1);

* 대칭성 깨기 구매 빈 기간을 끝까지 이동
대칭(n).. 합계(p, 오메가(p,n)) =g= 합계(p, 오메가(p,n+1));

* 재고의 하한 및 상한
s.lo(p,n) = SLB(p);
s.up(p,n) = SUB(p);

* 초기 저장
s.fx('P1','N1') = SLB('P1');

* 초기 저장에는 몇 가지 의미가 있습니다.
omega.fx(p,'N1') = 0;
omega.fx('P1','N1') = 1;
omega.fx('P1','N2') = 0;

* 슬롯 사이트 크기의 하한 및 상한
sM.lo(p) = SLB(p);
sM.up(p) = SUB(p);

모델 순서 / 모두 /;

* 잘못된 출발점에서 벗어나라
omega.l(p,n) = 균일(0,1);

cPT를 최소화하는 minlp를 사용하여 Sequnz를 해결합니다.