miqcp04.gms : 정수 실현 불가능 모델에 대한 테스트 동작

설명

이 테스트는 정수에 대한 동작(예: 모델/상태 코드)을 확인합니다.
실현 불가능한 모델.  이완은 훌륭하게 해결 가능합니다.

기고자: Steve, 2018년 12월

소형 모델 유형 :MIQCP


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


메인 파일 : miqcp04.gms

$title 정수 실현 불가능 모델에 대한 테스트 동작(MIQCP04,SEQ=792)

$onText
이 테스트는 정수에 대한 동작(예: 모델/상태 코드)을 확인합니다.
실현 불가능한 모델.  이완은 훌륭하게 해결 가능합니다.

기고자: Steve, 2018년 12월
$offText

양의 변수 x1, x2;
이진 변수 y1, y2;
자유 변수 z;

방정식 f1, f2, c1, c2, g, h, zDef;

f1.. x1 + y1 =G= 2;
f2.. x2 + y2 =G= 2;
c1..sqr(x1-0.25) =L= 2;
c2..sqr(x2-0.25) =L= 2;
g.. x1 + x2 =L= 3;
h..y1 + y2 =L= 1.5;

zDef..sqr(x1) + y1 + sqr(x2) + y2 =E= z;

모델 m / 모두 /;

* DICOPT는 이 모델에 좋은 메시지를 제공하기 위해 몇 가지 옵션이 필요합니다.
$ifThenI x%system.miqcp%==xdicopt
$echo 볼록 1 > dicopt.opt
m.optfile = 1;
$endIf

miqcp min z를 사용하여 m을 해결합니다.

abort$[m.solvestat <> %solveStat.normalCompletion%] 'solvestat 1 예상: 정상 완료';

* IMHO 이 모델이 modelstat 19: Infeasible - No Solution을 반환하는 것은 매우 형편없는 일입니다.
*하지만 지금은 허용합니다
if (m.modelstat eq %modelStat.infeasibleNoSolution%),
  abort.noError "modelstat가 정상입니다: ", m.modelstat;
;
중단$[(m.modelstat <> %modelStat.infeasible%) 및
       (m.modelstat <> %modelStat.locallyInfeasible%) 및
       (m.modelstat <> %modelStat.integerInfeasible%)]
 '예상되는 modelstat 4, 5 또는 10: 전역적으로, 로컬로 또는 정수 실행 불가능';