설명
연속 병렬 장치의 순환 스케줄링.
이 예에는 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를 해결합니다.