cplex08.gms : 슬롯 사이트 추천 테스트 스위트 - 충돌 분석

설명

실행 불가능한 모델에 대한 슬롯 사이트 추천 링크 옵션 'iis'(충돌 분석)를 테스트합니다.

기고자: Renke Kuhlmann, 2020년 12월

소형 모델 유형 :슬롯 사이트 추천


카테고리 : 슬롯 사이트 추천 테스트 라이브러리


메인 파일 : cplex08.gms

$title '슬롯 사이트 추천 테스트 스위트 - 충돌 분석' (CPLEX08,SEQ=841)
$if not '%GAMS.lp%' == '' $set 솔버 %GAMS.lp%
$설정되지 않은 경우 솔버 $set 솔버 슬롯 사이트 추천
$onText
실현 불가능한 모델에 대해 슬롯 사이트 추천 링크 옵션 'iis'(충돌 분석)를 테스트합니다.

기고자: Renke Kuhlmann, 2020년 12월
$offText

$echo "iis 1" > %solver%.opt
$echo "preind 0" >> %solver%.opt
$echo "iis 2" > %solver%.op2
$echo "preind 0" >> %solver%.op2
$echo "indic e1$b 0" >> %solver%.op2
$echo "indic e2$b 1" >> %solver%.op2

$onEcho > cplexiis1.gms
변수
    x, y, z;

양수 변수
    x, y;

방정식
    e0, e1;

e0.. z =e= x + y;
e1.. x + y =l= -1;

모델 m / 모두 /;
z를 최소화하는 LP를 사용하여 m을 해결합니다.
$offEcho

$call.checkErrorLevel gams cplexiis1 솔버=%solver% lo=2 optfile=1
$call.checkErrorLevel grep -q "충돌 구체화 상태" cplexiis1.lst
$call.checkErrorLevel grep -q "충돌하는 방정식 수: 1" cplexiis1.lst
$call.checkErrorLevel grep -q "upper: e1 < -1" cplexiis1.lst
$call.checkErrorLevel grep -q "충돌하는 변수 수: 2" cplexiis1.lst
$call.checkErrorLevel grep -q "lower: x > 0" cplexiis1.lst
$call.checkErrorLevel grep -q "lower: y > 0" cplexiis1.lst

$onEcho > cplexiis2.gms
세트
    나는 / 1,2,3 /;

변수
    z;

SOS1 변수
    x(i);

방정식
    e0, e1, e2;

e0.. z =e= sum(i, x(i));
e1..x('1') =g= x('2') + 0.1;
e2..x('2') =g= x('3') + 0.1;

모델 m / 모두 /;
z를 최소화하는 MIP를 사용하여 m을 해결합니다.
$offEcho

$call.checkErrorLevel gams cplexiis2 솔버=%solver% lo=2 optfile=1
$call.checkErrorLevel grep -q "충돌 구체화 상태" cplexiis2.lst
$call.checkErrorLevel grep -q "충돌하는 방정식 수: 2" cplexiis2.lst
$call.checkErrorLevel grep -q "낮음: e1 > 0.1" cplexiis2.lst
$call.checkErrorLevel grep -q "낮음: e2 > 0.1" cplexiis2.lst
$call.checkErrorLevel grep -q "충돌하는 SOS 세트 수: 1" cplexiis2.lst
$call.checkErrorLevel grep -q "sos: x(1)" cplexiis2.lst
$call.checkErrorLevel grep -q "sos: x(2)" cplexiis2.lst
$call.checkErrorLevel grep -q "sos: x(3)" cplexiis2.lst

$onEcho > cplexiis3.gms
변수
    z;

양수 변수
    x, y;

바이너리 변수
    비;

방정식
    e0, e1, e2, e3;

e0.. z =e= x + y;
e1.. x + y =l= -1;
e2.. x + y =l= -2;
e3..b =l= 1;

모델 m / 모두 /;
z를 최소화하는 MIP를 사용하여 m을 해결합니다.
$offEcho

$call.checkErrorLevel gams cplexiis3 솔버=%solver% lo=2 optfile=2
$call.checkErrorLevel grep -q "충돌 구체화 상태" cplexiis3.lst
$call.checkErrorLevel grep -q "충돌 중인 표시기 제약 조건 수: 2" cplexiis3.lst
$call.checkErrorLevel grep -q "indic e1\$b 0" cplexiis3.lst
$call.checkErrorLevel grep -q "indic e2\$b 1" cplexiis3.lst
$call.checkErrorLevel grep -q "충돌하는 변수 수: 2" cplexiis3.lst
$call.checkErrorLevel grep -q "lower: x > 0" cplexiis3.lst
$call.checkErrorLevel grep -q "lower: y > 0" cplexiis3.lst