설명
폴리 함수로 QCP 모델을 처리하는지 테스트하세요. 이것은 실제로 솔버 테스트가 아닌 공식 테스트입니다. 기고자: Steven Dirkse, 2011년 2월
소형 모델 유형 :QCP
카테고리 : 크레이지 슬롯 테스트 라이브러리
메인 파일 : qcp07.gms
$title 폴리 함수를 사용한 QCP의 정확성 테스트(QCP07,SEQ=511)
$onText
폴리 함수를 사용하여 QCP 모델을 처리하는지 테스트합니다.
이것은 실제로 솔버 테스트가 아닌 공식 테스트입니다.
기고자: Steven Dirkse, 2011년 2월
$offText
변수 x, y, z;
방정식 f, fp, g;
f.. z =E= sqr(x) - x + sqr(y) + y ;
fp.. z =E= 폴리(x,0,-1,1) + 폴리(y,0,1,1) ;
g.. x + y =G= 4;
모델 m / f, g /;
모델 mp / fp, g /;
* 이러한 경계는 활성화되어서는 안 되지만 글로벌 솔버에 도움이 됩니다.
x.lo = 0;
x.up = 5;
y.lo = 0;
y.up = 5;
$설정되지 않은 경우 TESTTOL $set TESTTOL 1e-5
스칼라
m체크 / 0 /
톨 / %TESTTOL% /
z_l / 7.5 /
x_l / 2.5 /
y_l / 1.5 /
f_l / 0 /
f_m / 1 /
g_l / 4 /
g_m / 4 /
;
$%QPMCHECKS%가 아닌 경우 == 0 mchecks = 1;
* 먼저 sqr을 사용하는 모델을 풀어보세요.
qcp min z를 사용하여 m을 해결합니다.
abort$[abs(z.l-z_l) > tol] '불량 z.l';
중단$[abs(x.l-x_l) > tol] '잘못된 x.l';
abort$[abs(y.l-y_l) > tol] '나쁜 y.l';
abort$[abs(f.l-f_l) > tol] '나쁜 f.l';
abort$[abs(g.l-g_l) > tol] '나쁜 g.l';
만약 mchecks,
abort$[abs(z.m) > tol] '나쁜 z.m';
중단$[abs(x.m) > tol] '잘못된 x.m';
abort$[abs(y.m) > tol] '나쁜 y.m';
중단$[abs(f.m-f_m) > tol] '나쁜 f.m';
abort$[abs(g.m-g_m) > tol] '나쁜 g.m';
;
* 이제 폴리 함수를 사용하는 모델을 해결합니다.
qcp min z를 사용하여 mp를 해결합니다.
abort$[abs(z.l-z_l) > tol] '불량 z.l';
중단$[abs(x.l-x_l) > tol] '잘못된 x.l';
abort$[abs(y.l-y_l) > tol] '나쁜 y.l';
abort$[abs(fp.l-f_l)> tol] '나쁜 f.l';
abort$[abs(g.l-g_l) > tol] '나쁜 g.l';
만약 mchecks,
abort$[abs(z.m) > tol] '나쁜 z.m';
중단$[abs(x.m) > tol] '잘못된 x.m';
abort$[abs(y.m) > tol] '나쁜 y.m';
중단$[abs(fp.m-f_m)> tol] '나쁜 f.m';
abort$[abs(g.m-g_m) > tol] '나쁜 g.m';
;