설명
GUROBI's에서 처리할 수 있는 일부 비선형 제약 조건을 사용하여 모델을 테스트합니다. 일반적인 제약 개념. 기고자: Renke Kuhlmann, 2022년 6월
소형 모델 유형 :메가 슬롯
카테고리 : 메가 슬롯 테스트 라이브러리
메인 파일 : gurobi07.gms
$title 'GUROBI 테스트 스위트 - 일반 제약조건에 대한 비선형 제약조건' (GUROBI07,SEQ=905)
$onText
GUROBI에서 처리할 수 있는 일부 비선형 제약 조건을 사용하여 모델을 테스트합니다.
일반적인 제약 개념.
기고자: Renke Kuhlmann, 2022년 6월
$offText
$onEcho > gurobi.opt
writeprob prob.lp
e1.trynonlin 0
e2.trynonlin 0
e3.trynonlin 0
e4.trynonlin 0
e5.trynonlin 0
e6.trynonlin 0
e7.trynonlin 0
e8.trynonlin 0
e9.trynonlin 0
e10.trynonlin 0
e11.trynonlin 0
e12.trynonlin 0
e13.trynonlin 0
e14.trynonlin 0
e15.trynonlin 0
e16.trynonlin 0
e17.trynonlin 0
e18.trynonlin 0
e19.trynonlin 0
e20.trynonlin 0
e21.trynonlin 0
e22.trynonlin 0
e23.trynonlin 0
e24.trynonlin 0
e25.trynonlin 0
e26.trynonlin 0
e27.trynonlin 0
e28.trynonlin 0
$offEcho
세트
나는 / 1*4 /;
변수
r, x(i), x1, x2, x3, x4;
방정식
e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17,
e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28;
e1..r =e= 최대(x1, x2, x3, x4, 42);
e2..r =e= min(x1, x2, x3, x4, 42);
e3..r =e= x1 및 x2 및 x3 및 x4;
e4..r =e= x1 또는 x2 또는 x3 또는 x4;
e5..r =e= ABS(x1);
e6..r =e= sin(x1);
e7..r =e= cos(x1);
e8..r =e= tan(x1);
e9..r =e= exp(x1);
e10..r =e= log(x1);
e11..r =e= log2(x1);
e12..r =e= log10(x1);
e13..r =e= x1**42;
e14..r =e= 42**x1;
e15..r =e= 폴리(x1, 1, 2, 3, 4, 5);
e16..r =e= edist(x1, x2, x3, x4);
e17.. r =e= smax(i, x(i));
e18.. r =e= smin(i, x(i));
e19.. r =e= 모래(i, x(i));
e20.. r =e= sor(i, x(i));
e21.. r =e= sum(i, abs(x(i))));
e22..r =e= sqrt(sum(i, sqr(x(i))));
e23.. r =e= smax(i, abs(x(i))));
e24.. r =e= 절대(x1) + 절대(x2) + 절대(x3) + 절대(x4);
e25..r =e= sqrt(sqr(x1) + sqr(x2) + sqr(x3) + sqr(x4));
e26.. r =e= max(abs(x1),abs(x2),abs(x3),abs(x4));
e27..r =e= 시그모이드(x1);
e28.. r =e= 1 / (1 + exp(-x1));
x1.lo = 0;
x1.l = 1;
모델 m / 모두 /;
m.optfile = 1;
옵션 dnlp = 구로비;
r을 최소화하는 DNLP를 사용하여 m을 해결합니다.
Execute.checkErrorlevel 'grep -qF "e1: r = MAX ( x1 , x2 , x3 , x4 , 42 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e2: r = MIN ( x1 , x2 , x3 , x4 , 42 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e3: r = AND ( x1 , x2 , x3 , x4 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e4: r = OR ( x1 , x2 , x3 , x4 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e5: r = ABS ( x1 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e6: r = SIN ( x1 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e7: r = COS ( x1 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e8: r = TAN ( x1 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e9: r = EXP ( x1 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e10: r = LOG ( x1 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e11: r = LOG_2 ( x1 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e12: r = LOG_10 ( x1 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e13: r = POW ( x1 ^ 42 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e14: r = EXPA ( 42 ^ x1 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e15: r = POLY ( 5 x1 ^ 4 + 4 x1 ^ 3 + 3 x1 ^ 2 + 2 x1 ^ 1 + 1 x1 ^ 0 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e16: r = NORM ( 2 ) ( x1 , x2 , x3 , x4 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e17: r = MAX ( x(1) , x(2) , x(3) , x(4) )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e18: r = MIN ( x(1) , x(2) , x(3) , x(4) )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e19: r = AND ( x(1) , x(2) , x(3) , x(4) )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e20: r = OR ( x(1) , x(2) , x(3) , x(4) )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e21: r = NORM ( 1 ) ( x(1) , x(2) , x(3) , x(4) )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e22: r = NORM ( 2 ) ( x(1) , x(2) , x(3) , x(4) )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e23: r = NORM ( Inf ) ( x(1) , x(2) , x(3) , x(4) )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e24: r = NORM ( 1 ) ( x1 , x2 , x3 , x4 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e25: r = NORM ( 2 ) ( x1 , x2 , x3 , x4 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e26: r = NORM ( Inf ) ( x1 , x2 , x3 , x4 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e27: r = LOGISTIC ( x1 )" prob.lp';
Execute.checkErrorlevel 'grep -qF "e28: r = LOGISTIC ( x1 )" prob.lp';