메가 슬롯gms : 연속 병렬 단위의 순환 스케줄링

설명

연속 병렬 장치의 순환 스케줄링.

이 예에는 JG와 WEM이라는 두 논문의 세 가지 MINLP 모델이 포함되어 있습니다.
저자는 다양한 목적 함수를 고려합니다.

JG: 단위의 이익을 극대화하는 것입니다.
WEM: 가장 수익성이 낮은 단위의 이익을 극대화합니다.
MINLP 문제는 마이너스 이익을 최소화함으로써 해결되었습니다.

JG는 매끄러운 의사볼록 MINLP 최소화 문제인 JG를 도입합니다.
WEM은 매끄럽지 않은 f0-pseudoconvex MINLP min max 문제인 WEM을 도입합니다.
부드러운 비볼록 MINLP 재구성, WEM의 WEMreform.

--formulation=JG|WEM|WEMreform 스위치는 특정 항목을 선택합니다.
문제와 공식.

원본 논문 JG(데이터 세트 2, 즉 csched2.inc)에서
하위 주기(세트 k)는 0*4로 설정되었지만 후속 출판물에서는 0*10을 사용했습니다.
--JGOrgSC=1 스위치는 데이터 세트 2에 0*4를 사용합니다.

논문 WEM에서 저자는 다음과 같은 최적의 솔루션을 보고합니다.
데이터 세트 2에 대한 ESH(Extended Supporting Hyperplane) 방법:

          k=0*4 k=0*10
JG -165398.7 -166102.0
WEM -39071.3 -39613.1

WEMreform의 최적은 WEM과 동일합니다.

(JG): Jain, V 및 Grossmann, I E, 연속 스케줄링
성능이 저하되는 병렬 장치. 미국 연구소
of Chemical Engineers Journal 44, 7 (1998), 1623-1636.

(WEM): Westerlund T, Eronen V-P 및 Makela M. 일반화 문제 해결
지원 초평면 기술을 사용한 볼록 MINLP 문제.
글로벌 최적화 저널, 71 (2018), 987-1011
https://doi.org/10.1007/s10898-018-0644-z.

키워드: 비순조적 최적화, 혼합 정수(비선형) 프로그래밍,
          일반 볼록면, 지지 초평면, 절단면,
          순환 스케줄링, 연속 병렬 장치, 화학 공학

대형 모델 유형 :MINLP


카테고리 : 메가 슬롯 모델 라이브러리


메인 파일 : 메가 슬롯gms   포함: csched1.inc csched2.inc

$title 연속 병렬 단위의 순환 스케줄링(메가 슬롯SEQ=222)

$onText
연속 병렬 단위의 순환 스케줄링.

이 예에는 JG와 WEM이라는 두 논문의 세 가지 MINLP 모델이 포함되어 있습니다.
저자는 다양한 목적 함수를 고려합니다.

JG: 단위의 이익을 극대화하는 것입니다.
WEM: 가장 수익성이 낮은 단위의 이익을 극대화합니다.
MINLP 문제는 마이너스 이익을 최소화함으로써 해결되었습니다.

JG는 매끄러운 의사볼록 MINLP 최소화 문제인 JG를 도입합니다.
WEM은 매끄럽지 않은 f0-pseudoconvex MINLP min max 문제인 WEM을 도입합니다.
부드러운 비볼록 MINLP 재구성, WEM의 WEMreform.

--formulation=JG|WEM|WEMreform 스위치는 특정 항목을 선택합니다.
문제와 공식.

원본 논문 JG(데이터 세트 2, 즉 csched2.inc)에서
하위 주기(세트 k)는 0*4로 설정되었지만 후속 출판물에서는 0*10을 사용했습니다.
--JGOrgSC=1 스위치는 데이터 세트 2에 0*4를 사용합니다.

논문 WEM에서 저자는 다음과 같은 최적의 솔루션을 보고합니다.
데이터 세트 2에 대한 ESH(Extended Supporting Hyperplane) 방법:

          k=0*4 k=0*10
JG -165398.7 -166102.0
WEM -39071.3 -39613.1

WEMreform의 최적은 WEM과 동일합니다.

(JG): Jain, V 및 Grossmann, I E, 연속 스케줄링
성능이 저하되는 병렬 장치. 미국 연구소
of Chemical Engineers Journal 44, 7 (1998), 1623-1636.

(WEM): Westerlund T, Eronen V-P 및 Makela M. 일반화 문제 해결
지원 초평면 기술을 사용한 볼록 MINLP 문제.
글로벌 최적화 저널, 71 (2018), 987-1011
https://doi.org/10.1007/s10898-018-0644-z.

키워드: 비순조적 최적화, 혼합 정수(비선형) 프로그래밍,
          일반 볼록면, 지지 초평면, 절단면,
          순환 스케줄링, 연속 병렬 장치, 화학 공학

$offText

$설정된 공식이 없는 경우 $설정된 공식 JG
$ifI %formulation%==JG $log --- 단위 이익 극대화
$ifI %formulation%==WEM $log --- 수익성이 가장 낮은 단위의 이익 극대화
$ifI %formulation%==WEMreform $log --- 수익성이 가장 낮은 단위의 이익 극대화

세트
   k '서브사이클'
   kzero(k) '하위주기 0'
   나는 '용광로'
   j '피드';

매개변수
   tau(i,j) '전환 시간 [일]'
   D(i,j) '처리율 [톤/일]'
   a(i,j) '변환 매개변수 [1/일]'
   b(i,j) '변환 매개변수 [1/일]'
   c(i,j) '변환 매개변수 [1/일]'
   P(i,j) '가격 매개변수 [$/톤]'
   Cs(i,j) '설치/청소 비용 [$]'
   Flo(j) '유량에 대한 낮은 bnd'
   Fup(j) '유량에 대한 상위 BND'
   Cc(i,j) '조립된 매개변수 Cc(i,j)=P(i,j)*D(i,j)*c(i,j)'
   Cp(i,j) '조립된 매개변수 Cp(i,j)=P(i,j)*D(i,j)*a(i,j)/b(i,j)'
   yk(k) 'yk(0)=epsi인 동안 yk(k)에 k를 yk(k)=k로 할당하는 매개변수';

스칼라
   U '처리 시간의 상한'
   epsi '0/0을 피하기 위한 작은 const';

변수
   t(i,j) '로 내 공급 공정 시간'
   n(i,j) '로 내 피드의 하위 주기 수'
   F(j) '피드 j 도착률'
   S(j) '최소 이상 처리된 사료의 추가량'
   dt(i,j) '로에 공급하는 데 소요된 시간'
   Tcycle '모든 용광로에 대한 공통 사이클 시간'
   y(i,j,k) '모델 n(i,j)에 대한 SOS'
   obj '객관 변수'

양의 변수 t, n, S, dt, Tcycle;
이진변수 y;

방정식
   defobj '목표는 이익/주기 시간을 최대화하는 것입니다'
   Massbal_1(j) '질량수지 방정식 (8)'
   Massbal_2(j) '질량수지 방정식 (9)'
   integ_1(i,j) '무결성 제약 조건 (10)'
   integ_2(i,j) '무결성 제약 조건 (11)'
   time_1(i,j) '총 피드 시간을 처리 및 정리와 연결'
   time_2(i) '사이클 시간보다 작은 총 시간'
   time_3(i,j) '서브사이클 수가 0이면 t(i,j)는 0입니다.'
   extra(j) '추가 제약';

$ifThenI %공식%==WEM
defobj.. Tcycle*obj =e= smax(i, sum(j, -Cc(i,j)*t(i,j) + Cs(i,j)*n(i,j)
                                 - Cp(i,j)*n(i,j)*(1-exp(-b(i,j)*t(i,j)/n(i,j)))));
$elseIfI %formulation%==WEM개혁
defobj(i).. Tcycle*obj =g= sum(j, -Cc(i,j)*t(i,j) + Cs(i,j)*n(i,j)
                                 - Cp(i,j)*n(i,j)*(1-exp(-b(i,j)*t(i,j)/n(i,j))));
$else
defobj.. Tcycle*obj =e= -sum((i,j), Cc(i,j)*t(i,j) - Cs(i,j)*n(i,j)
                                 + Cp(i,j)*n(i,j)*(1 - exp(-b(i,j)*t(i,j)/n(i,j))));
$endIf
Massbal_1(j).. Flo(j)*Tcycle + S(j) =e= sum(i, D(i,j)*t(i,j));
Massbal_2(j).. S(j) =l= (Fup(j) - Flo(j))*Tcycle;
integ_1(i,j)..n(i,j) =e= sum(k, yk(k)*y(i,j,k));
integ_2(i,j).. 1 =e= sum(k, y(i,j,k));
time_1(i,j).. dt(i,j) =e= n(i,j)*tau(i,j) + t(i,j);
time_2(i).. sum(j, dt(i,j)) =l= Tcycle;
time_3(i,j).. t(i,j) =l= sum(kzero,U*(1 - y(i,j,kzero)));
extra(j)$(Flo(j) > 0).. sum(i, n(i,j)) =g= 1;

모델 메가 슬롯 / all /;

$설정되지 않은 경우 데이터세트 $set 데이터세트 1
$include 메가 슬롯%dataset%.inc

yk(k) = ord(k) - 1;
yk(kzero) = 엡시;
Cc(i,j) = P(i,j)*D(i,j)*c(i,j);
Cp(i,j) = P(i,j)*D(i,j)*a(i,j)/b(i,j);

n.up(i,j) = 카드(k) - 1;
n.l(i,j) = 1;
n.lo(i,j) = 엡시;
F.lo(j) = Flo(j);
F.up(j) = Fup(j);
Tcycle.l = 100;
obj.lo =-300000;
obj.up = 0;

$설정되지 않은 경우 ReplicaWEB $set ReplicaWEB 0
$ifThenE (%dataset%=2)and(%reproduceWEB%<>0)
   옵션 resLim=1000, optCR=1e-5, MIP=cplex, nlp=ipopt;
   메가 슬롯nodlim = 1e6;
$endIf

minlp를 사용하여 메가 슬롯 최소화 obj를 해결합니다.