logmip3.gms : LogMIP 사용자 매뉴얼 예시 3 - 8개 슬롯 사이트세스 합성

설명

이 모델은 주어진 상부 구조 내에서 최적의 슬롯 사이트세스를 선택합니다.

참고자료:

마르코 듀란, 박사 논문, 1984. 카네기멜론 대학교, 피츠버그, 펜실베니아.

Turkay & Grossmann, 최적의 논리 기반 MINLP 알고리즘
슬롯 사이트세스 네트워크의 합성, 컴퓨터 및 화학 공학 20,
8, p. 959-978, 1996

Aldo Vecchietti, LogMIP 사용자 매뉴얼, 2007http://www.슬롯 사이트ceride.gov.ar/files/pdfs/logmip_manual.pdf키워드: 확장 수학 슬롯 사이트그래밍, 분리 슬롯 사이트그래밍, 논리
          제약 조건, 슬롯 사이트세스 합성

소형 모델 유형 :EMP


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


메인 파일 : logmip3.gms

$title LogMIP 사용자 매뉴얼 예시 3 - 8개 슬롯 사이트세스 합성 (LOGMIP3,SEQ=336)

$onText
이 모델은 주어진 상부 구조 내에서 최적의 슬롯 사이트세스를 선택합니다.

참고자료:

마르코 듀란, 박사 논문, 1984. 카네기멜론 대학교, 피츠버그, 펜실베니아.

Turkay & Grossmann, 최적의 논리 기반 MINLP 알고리즘
슬롯 사이트세스 네트워크의 합성, 컴퓨터 및 화학 공학 20,
8, p. 959-978, 1996

Aldo Vecchietti, LogMIP 사용자 매뉴얼, 2007
http://www.logmip.ceride.gov.ar/files/pdfs/logmip_manual.pdf

키워드: 확장 수학 슬롯 사이트그래밍, 분리 슬롯 사이트그래밍, 논리
          제약 조건, 슬롯 사이트세스 합성
$offText

세트
   나는 '스트림 처리' / 1*25 /
   J '슬롯 사이트세스 단위' / 1*8 /;

매개변수 CV(I) '슬롯 사이트세스 단위에 대한 가변 비용 계수 - 스트림'
                / 3 = -10, 5 = -15, 9 = -40, 19 = 25, 21 = 35, 25 = -35
                  17 = 80, 14 = 15, 10 = 15, 2 = 1, 4 = 1, 18 = -65
                  20 = -60, 22 = -80 /;

가변 PROF '이익';

이진변수 Y(J);
양수 변수 X(I), CF(J);

방정식
* NLP 하위 문제 및 마스터 문제의 공통 방정식:
* -------------------------------------------
   MASSBAL1 '질량수지 #1'
   MASSBAL2 '질량수지 #2'
   MASSBAL3 '질량수지 #3'
   MASSBAL4 '질량수지 #4'
   MASSBAL5 '질량수지 #5'
   MASSBAL6 '질량수지 #6'
   MASSBAL7 '질량수지 #7'
   MASSBAL8 '질량수지 #8'
   SPECS1 '디자인 사양 1'
   SPECS2 '디자인 사양 2'
   SPECS3 '디자인 사양 3'
   SPECS4 '디자인 사양 4'

* 마스터 문제에만 해당되는 방정식:
* --------------------------
   LOGICAL1 '단위 1이 존재하는 경우 흐름을 허용하는 제약 조건'
   LOGICAL2 '단위 2가 존재하는 경우 흐름을 허용하는 제약 조건'
   LOGICAL3 '단위 3이 존재하는 경우 흐름을 허용하는 제약 조건'
   LOGICAL4 '단위 4가 존재하는 경우 흐름을 허용하는 제약 조건'
   LOGICAL5 '단위 5가 존재하는 경우 흐름을 허용하는 제약 조건'
   LOGICAL6 '단위 6이 존재하는 경우 흐름을 허용하는 제약 조건'
   LOGICAL7 '유닛 7이 존재하는 경우 흐름을 허용하는 제약 조건'
   LOGICAL8 '단위 8이 존재하는 경우 흐름을 허용하는 제약 조건'

* NLP 하위 문제에만 해당하는 방정식:
* --------------------------
   INOUT11 '슬롯 사이트세스 단위 1의 입출력 관계'
   INOUT12
   INOUT13
   INOUT14
   INOUT21 '슬롯 사이트세스 단위 2의 입출력 관계'
   인아웃22
   인아웃23
   인아웃24
   INOUT31 '슬롯 사이트세스 단위 3의 입출력 관계'
   INOUT32
   INOUT34
   INOUT41 '슬롯 사이트세스 단위 4에 대한 입출력 관계'
   INOUT42
   INOUT43
   INOUT44
   INOUT45
   INOUT51 '슬롯 사이트세스 단위 5에 대한 입출력 관계'
   INOUT52
   INOUT53
   INOUT54
   INOUT61 '슬롯 사이트세스 단위 6에 대한 입출력 관계'
   INOUT62
   INOUT63
   INOUT64
   INOUT71 '슬롯 사이트세스 단위 7에 대한 입출력 관계'
   INOUT72
   INOUT73
   INOUT74
   INOUT81 '슬롯 사이트세스 단위 8에 대한 입출력 관계'
   INOUT82
   INOUT83
   INOUT84
   INOUT85
   INOUT86
   OBJETIVO '목적 함수 정의';

* 경계 섹션:
* ---------------
X.up('3') = 2.0;
X.up('5') = 2.0;
X.up('9') = 2.0;
X.up('10') = 1.0;
X.up('14') = 1.0;
X.up('17') = 2.0;
X.up('19') = 2.0;
X.up('21') = 2.0;
X.up('25') = 3.0;

* NLP 하위 문제 및 마스터 문제의 공통 방정식:
* -------------------------------------------
MASSBAL1.. X('13') =e= X('19') + X('21');
MASSBAL2.. X('17') =e= X('9') + X('16') + X('25');
MASSBAL3.. X('11') =e= X('12') + X('15');
MASSBAL4.. X('3') + X('5') =e= X('6') + X('11');
MASSBAL5.. X('6') =e= X('7') + X('8');
MASSBAL6.. X('23') =e= X('20') + X('22');
MASSBAL7.. X('23') =e= X('14') + X('24');
MASSBAL8.. X('1') =e= X('2') + X('4');

사양1.. X('10') =l= 0.8*X('17');
사양2.. X('10') =g= 0.4*X('17');
사양3.. X('12') =l= 5.0*X('14');
사양4.. X('12') =g= 2.0*X('14');

논리1.. X('2') + X('3') =l= 10.*Y('1');
LOGICAL2.. X('4') + X('5') =l= 10.*Y('2');
논리3..X('9') =l= 10.*Y('3');
논리4.. X('12') + X('14') =l= 10.*Y('4');
논리5.. X('15') =l= 10.*Y('5');
LOGICAL6.. X('19') =l= 10.*Y('6');
LOGICAL7.. X('21') =l= 10.*Y('7');
LOGICAL8.. X('10') + X('17') =l= 10.*Y('8');

INOUT11.. exp(X('3')) -1.        =e= X('2');
INOUT14.. CF('1') =e= 5;
INOUT12.. X('2') =e= 0;
INOUT13.. X('3') =e= 0;
INOUT21.. exp(X('5')/1.2) -1.    =e= X('4');
INOUT24.. CF('2') =e= 8;
INOUT22.. X('4') =e= 0;
INOUT23.. X('5') =e= 0;
INOUT31.. 1.5*X('9') + X('10') =e= X('8');
INOUT34.. CF('3') =e= 6;
INOUT32.. X('9') =e= 0;
INOUT41.. 1.25*(X('12')+X('14')) =e= X('13');
INOUT45.. CF('4') =e= 10;
INOUT42.. X('12') =e= 0;
INOUT43.. X('13') =e= 0;
INOUT44.. X('14') =e= 0;
INOUT51.. X('15') =e= 2.*X('16');
INOUT54.. CF('5') =e= 6;
INOUT52.. X('15') =e= 0;
INOUT53.. X('16') =e= 0;
INOUT61.. exp(X('20')/1.5) -1.   =e= X('19');
INOUT64.. CF('6') =e= 7;
INOUT62.. X('19') =e= 0;
INOUT63.. X('20') =e= 0;
INOUT71.. exp(X('22')) -1.       =e= X('21');
INOUT74.. CF('7') =e= 4;
INOUT72.. X('21') =e= 0;
INOUT73.. X('22') =e= 0;
INOUT81.. exp(X('18')) -1.       =e= X('10') + X('17');
INOUT86.. CF('8') =e= 5;
INOUT82.. X('10') =e= 0;
INOUT83.. X('17') =e= 0;
INOUT84.. X('18') =e= 0;
INOUT85.. X('25') =e= 0;

목적.. PROF =e= sum(J, CF(J)) + sum(I, X(I)*CV(I)) + 122;

논리 방정식 ATMOST1, ATMOST2, ATMOST3;
ATMOST1.. Y('1') xor Y('2');
ATMOST2.. Y('4') xor Y('5');
ATMOST3.. Y('6') xor Y('7');

논리 방정식 IMP0, IMP1, IMP2, IMP3, IMP4, IMP5, IMP6, IMP7, IMP8, IMP9;
IMP0.. Y('1') -> Y('3') 또는 Y('4') 또는 Y('5');
IMP1.. Y('2') -> Y('3') 또는 Y('4') 또는 Y('5');
IMP2.. Y('3') -> Y('8');
IMP3.. Y('3') -> Y('1') 또는 Y('2');
IMP4.. Y('4') -> Y('1') 또는 Y('2');
IMP5.. Y('4') -> Y('6') 또는 Y('7');
IMP6.. Y('5') -> Y('1') 또는 Y('2');
IMP7.. Y('5') -> Y('8');
IMP8.. Y('6') -> Y('4');
IMP9.. Y('7') -> Y('4');

* 초기화
Y.l('1') = 1;
Y.l('2') = 0;
Y.l('3') = 1;
Y.l('4') = 0;
Y.l('5') = 0;
Y.l('6') = 0;
Y.l('7') = 0;
Y.l('8') = 1;

$onEcho > '%LM.INFO%'
기본 빅 100
분리 Y('1') INOUT11 INOUT14 else INOUT12 INOUT13
분리 Y('2') INOUT21 INOUT24 else INOUT22 INOUT23
분리 Y('3') INOUT31 INOUT34 else INOUT32
논리합 Y('4') INOUT41 INOUT45 else INOUT42 INOUT43 INOUT44
논리합 Y('5') INOUT51 INOUT54 else INOUT52 INOUT53
논리합 Y('6') INOUT61 INOUT64 else INOUT62 INOUT63
논리합 Y('7') INOUT71 INOUT74 else INOUT72 INOUT73
공접 Y('8') INOUT81 INOUT86 else INOUT82 INOUT83 INOUT84 INOUT85

* 선택사항, 설정되지 않은 경우 LOGMIP은 적합한 모델 유형을 찾습니다.
모델 유형 minlp
$offEcho

옵션 optCr = 0, limCol = 0, limRow = 0, emp = logmip;

모델 예3 / 모두 /;

PROF를 최소화하는 emp를 사용하여 예제 3을 해결합니다.