설명
이 테스트 문제는 J Pinter로 인해 발생했습니다. Drud는 다음과 같이 지적했습니다. 도함수를 사용하는 솔버는 이 모델을 사용하는 데 어려움을 겪습니다. 원초적인 해결책은 있지만 이중적인 해결책은 존재하지 않으며 글로벌 솔루션은 존재하지 않습니다. 솔루션은 Kuhn-Tucker 조건을 만족하지 않습니다. 제곱(x) = 0 x = 0을 의미하지만 이 제약 조건의 한계는 일반적으로 무한하며 솔루션은 유한 허용오차에 따라 크게 달라집니다. 이 모델은 다음과 같습니다. Drud가 보여준 것처럼 재구성되었습니다. 그의 재구성은 아래와 같습니다. 전역 해는 x(i) = 0입니다.
대형 모델 유형 :NLP
카테고리 : 슬롯 나라 모델 라이브러리
메인 파일 : 슬롯 나라.gms 포함: 슬롯 나라d.inc
$title LGO 테스트 슬롯 나라_10 (슬롯 나라,SEQ=266)
$onText
이 테스트 문제는 J Pinter로 인해 발생했습니다. Drud는 다음과 같이 지적했습니다.
도함수를 사용하는 솔버는 이 모델을 사용하는 데 어려움을 겪습니다.
원초적인 해결책은 있지만 이중적인 해결책은 존재하지 않으며 글로벌 솔루션은 존재하지 않습니다.
솔루션은 Kuhn-Tucker 조건을 만족하지 않습니다. 제곱(x) = 0
x = 0을 의미하지만 이 제약 조건의 한계는 일반적으로 무한하며
솔루션은 유한 허용오차에 따라 크게 달라집니다. 이 모델은 다음과 같습니다.
Drud가 보여준 것처럼 재구성되었습니다. 그의 재구성은 아래와 같습니다.
전역 해는 x(i) = 0입니다.
Janos Pinter, LGO - 사용자 가이드, Pinter 컨설팅 서비스, Halifax,
캐나다, 2003.
슬롯 나라d.inc 파일을 포함해야 합니다.
키워드: 비선형 프로그래밍, 수학
$offText
세트
나는 / 1*1000 /
i10(i) / 2*10 /;
변수 objf, sum_sq, sum_noise, x(i);
방정식 objdef, defsq, defnoise, con0, con1, con2, con3, con4, con5, con6, con7, con8, con9;
매개변수 스케일, tol;
스케일 = 100;
톨 = 0.001;
objdef.. objf =e= sum_sq + scal*sum_noise;
defsq..sum_sq =e= sum(i, sqr(x(i)));
defnoise.. sum_noise =e= sum(i, sqr(sin(sqr(x(i)))));
con0.. sqr(sum(i10(i), (x(i)-x(i-1)))*(x(i+1)-x(i-1)))) =l= tol;
con1.. sqr(x('111')+x('122')-x('133')-x('144')-x('155')+x('166')-x('177')+x('188')) =l= tol;
con2.. sqr(x('199')-x('203')*x('215')-x('227')*x('239')-x('242')*x('254')+x('266')) =l= tol;
con3.. sqr(x('279')-x('283')*x('295')-x('7')*x('23')-x('42')*x('54')+x('66')) =l= tol;
con4.. sqr(x('311')+x('322')-x('333')-x('344')-x('355')+x('366')-x('377')+x('388')) =e= 0;
con5.. sqr(x('599')-x('603')*x('615')-x('627')*x('539')-x('542')*x('654')+x('666')) =l= tol;
con6.. sqr(x('679')-x('783')*x('795')-x('7')*x('23')-x('742')*x('754')+x('666')) =l= tol;
con7.. sqr(x('811')+x('322')-x('833')-x('344')-x('855')+x('366')-x('387')+x('888')) =e= 0;
con8.. sqr(x('899')-x('903')*x('915')-x('627')*x('939')-x('942')*x('654')+x('966')) =e= 0;
con9.. sqr(x('679')-x('783')*x('795')-x('7')*x('23')-x('742')*x('754')+x('666')) =e= 0;
모델 슬롯 나라 / 모두 /;
$include 슬롯 나라d.inc
x.lo(i) = xinit(i,'lower');
x.up(i) = xinit(i,'상부');
x.l (i) = xinit(i,'레벨');
옵션 limCol = 0, limRow = 0, solPrint = off;
nlp를 사용하여 슬롯 나라 min objf를 해결합니다.
Parameter report(i,*) '비최적 변수를 보여주는 요약 보고서';
보고서(i,'슬롯 나라')$(abs(x.l(i)) > 1e-5) = x.l(i);
* 다음은 다음을 생성하는 대체 공식입니다.
* 최적의 지점에서 적절한 듀얼(A Drud가 제안함)
방정식 con0a, con1a, con2a, con3a, con4a, con5a, con6a, con7a, con8a, con9a, con0b, con1b, con2b, con3b, con5b, con6b;
con0a.. (sum(i10(i), (x(i)-x(i-1)))*(x(i+1)-x(i-1)))) =l= sqrt(tol);
con0b.. (sum(i10(i), (x(i)-x(i-1)))*(x(i+1)-x(i-1)))) =g= -sqrt(tol);
con1a.. (x('111')+x('122')-x('133')-x('144')-x('155')+x('166')-x('177')+x('188')) =l= sqrt(tol);
con1b.. (x('111')+x('122')-x('133')-x('144')-x('155')+x('166')-x('177')+x('188')) =g= -sqrt(tol);
con2a.. (x('199')-x('203')*x('215')-x('227')*x('239')-x('242')*x('254')+x('266')) =l= sqrt(tol);
con2b.. (x('199')-x('203')*x('215')-x('227')*x('239')-x('242')*x('254')+x('266')) =g= -sqrt(tol);
con3a.. (x('279')-x('283')*x('295')-x('7')*x('23')-x('42')*x('54')+x('66')) =l= sqrt(tol);
con3b.. (x('279')-x('283')*x('295')-x('7')*x('23')-x('42')*x('54')+x('66')) =g= -sqrt(tol);
con4a.. (x('311')+x('322')-x('333')-x('344')-x('355')+x('366')-x('377')+x('388')) =e= 0;
con5a.. (x('599')-x('603')*x('615')-x('627')*x('539')-x('542')*x('654')+x('666')) =l= sqrt(tol);
con5b.. (x('599')-x('603')*x('615')-x('627')*x('539')-x('542')*x('654')+x('666')) =g= -sqrt(tol);
con6a.. (x('679')-x('783')*x('795')-x('7')*x('23')-x('742')*x('754')+x('666')) =l= sqrt(tol);
con6b.. (x('679')-x('783')*x('795')-x('7')*x('23')-x('742')*x('754')+x('666')) =g= -sqrt(tol);
con7a.. (x('811')+x('322')-x('833')-x('344')-x('855')+x('366')-x('387')+x('888')) =e= 0;
con8a.. (x('899')-x('903')*x('915')-x('627')*x('939')-x('942')*x('654')+x('966')) =e= 0;
con9a.. (x('679')-x('783')*x('795')-x('7')*x('23')-x('742')*x('754')+x('666')) =e= 0;
모델 슬롯 나라a / objdef, defsq, defnoise
con0a, con1a, con2a, con3a, con4a, con5a, con6a, con7a, con8a, con9a
con0b, con1b, con2b, con3b, con5b, con6b /;
x.l(i) = xinit(i,'레벨');
nlp를 사용하여 슬롯 나라a min objf를 해결합니다.
보고서(i,'슬롯 나라a')$(abs(x.l(i)) > 1e-5) = x.l(i);
보고서 표시;