설명
이 테스트에서 우리는 Lindo가 올바른 솔루션을 반환하는지 확인합니다. 특히 볼록하지 않은 QCP의 경우 한계를 수정하세요.
소형 모델 유형 :슬롯 커뮤니티
카테고리 : 슬롯 커뮤니티 테스트 라이브러리
메인 파일 : lindgl04.gms
$title 'Lindo(전역)를 사용하여 비볼록 2차 프로그램 테스트' (LINDGL04,SEQ=695)
$onText
이 테스트에서 우리는 Lindo가 올바른 솔루션을 반환하는지 확인합니다. 특히
볼록하지 않은 QCP의 경우 한계를 수정합니다.
$offText
세트
나는 /i1*i5/
별칭(i,j);
매개변수
c(i) /i1 42
i2 44
i3 45
i4 47
i5 47.5/
a(i) / i1 20
i2 12
i3 11
i4 7
i5 4 /
Q(i,j)
;
Q(i,i) = -50;
변수
x(i)
에프;
x.lo(i) = 0;
x.up(i) = 1;
방정식
Obj 목적 함수
Con 제약 함수;
오브제 ..
f =e= 합(i, c(i)*x(i)) + 합((i,j), x(i)*Q(i,j)*x(j));
콘 ..
합계(i, a(i)*x(i)) =l= 40;
모델
문제 /Obj, Con/;
옵션 optcr=0;
옵션 qcp=LindoGlobal;
f를 최소화하는 qcp를 사용하여 문제를 해결합니다.
abort$(problem.ModelStat <> %modelStat.optimal%) '최적의 솔루션 기대 중';
abort$(con.slack = 0) 'con이 바인딩되지 않을 것으로 예상함';
MaringalError(i) 설정;
MaringalError(i) = abs(c(i)+2*Q(i,i)*x.l(i)-x.m(i)) > 1e-8;
abort$card(MaringalError) 'x에 대한 잘못된 솔루션', MaringalError;