empdisj4.gms : 변수에 대해 음수 경계를 사용하여 분리 테스트

설명

기고자: Jan-H. Jagla, 2011년 2월

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


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


메인 파일 : empdisj4.gms

$title 변수에 음수 경계가 있는 분리 테스트(EMPDISJ4,SEQ=507)

$onText
기여자: Jan-H. 자글라, 2011년 2월
$offText

$onEchoV > testm1.inc
abort$(abs(%1.objval-(-2.0))>1e-6) '목표 값이 잘못되었습니다 [%1,%2]' , %1.objval;
abort$(abs(b.l-0.0) >1e-6) 'b.l 잘못됨 [%1,%2]' , b.l ;
abort$(abs(x.l-(-2.0)) >1e-6) 'x.l 잘못됨 [%1,%2]' , x.l ;
$offEcho

$onEchoV > testm2.inc
abort$(abs(%1.objval-(-2.1))>1e-6) '목표 값이 잘못되었습니다 [%1,%2]' , %1.objval;
abort$(abs(b.l-1.0) >1e-6) 'b.l 잘못됨 [%1,%2]' , b.l ;
abort$(abs(x.l-(-1.0)) >1e-6) 'x.l 잘못됨 [%1,%2]' , x.l ;
$offEcho

변수 z,x;
이진변수 b;
방정식 obj1,obj2,e1,e2;

obj1.. z =e= -0.9*b + x;
obj2.. z =e= -1.1*b + x;
e1..x =g= -1;

x.lo = -2;

$onEcho > jams.opt
파일 이름 mymodel.gms
mydoc.txt 받아쓰기
$offEcho

모델 m1 / obj1,e1 /; m1.optcr=0; m1.optfile=1;
모델 m2 / obj2,e1 /; m2.optcr=0; m2.optfile=1;

* ConvexHull로 테스트(기본 재구성)
'echo disjunction chull b e1 > "%emp.info%"'를 실행합니다.
m1 us emp min z를 푼다;
$batInclude testm1.inc m1 CHull
m2 us emp min z를 풀어보세요;
$batInclude testm2.inc m2 CHull

* bigM으로 테스트
'에코 분리 bigM b e1 > "%emp.info%"'를 실행합니다.
m1 us emp min z를 푼다;
$batInclude testm1.inc m1 BigM
m2 us emp min z를 풀어보세요;
$batInclude testm2.inc m2 BigM

$솔버가 아닌 경우 cplex $goTo SCIP
* 표시기 및 CPLEX를 사용한 테스트
옵션 밉=cplex;
'echo disjunction indic b e1 > "%emp.info%"'를 실행합니다.
m1 us emp min z를 푼다;
$batInclude testm1.inc m1 인도어
m2 us emp min z를 풀어보세요;
$batInclude testm2.inc m2 인도어

$라벨 SCIP
$해제가 아닌 경우 scip $goTo XPRESS
* 지표 및 SCIP를 사용한 테스트
옵션 밉=scip;
'echo disjunction indic b e1 > "%emp.info%"'를 실행합니다.
m1 us emp min z를 푼다;
$batInclude testm1.inc m1 인도어
m2 us emp min z를 풀어보세요;
$batInclude testm2.inc m2 인도어

$라벨 XPRESS
$아니면 SOLVER xpress $goTo 완료
* 표시기와 XPRESS를 사용한 테스트
옵션 mip=xpress;
'echo disjunction indic b e1 > "%emp.info%"'를 실행합니다.
m1 us emp min z를 푼다;
$batInclude testm1.inc m1 인도어
m2 us emp min z를 풀어보세요;
$batInclude testm2.inc m2 인도어

$라벨 완료