fnlseslv.gms : LSEMax 내장 함수에 대한 대략적인 솔버 정확성 테스트

설명

LSE max LSEMax는 다음과 같이 정의됩니다: f := log(exp(x1)+exp(x2)+...)

모든 슬롯 커뮤니티 솔버가 이를 처리할 수 있는 것은 아닙니다. 거래가 어려우신 분들을 위해
이 함수를 사용하면 기능 오류가 발생할 것으로 예상됩니다. 다른 사람들을 위해 우리는
무작위 입력 포인트의 평가를 확인하십시오.

기고자: Lutz Westermann, 2022년 9월

소형 모델 유형 :NLP


카테고리 : 슬롯 커뮤니티 테스트 라이브러리


메인 파일 : fnlseslv.gms

$title 'LSEMax 내장 함수에 대한 대략적인 솔버 정확성 테스트' (FNLSESLV,SEQ=917)

$onText
LSE max LSEMax는 다음과 같이 정의됩니다: f := log(exp(x1)+exp(x2)+...)

모든 슬롯 커뮤니티 솔버가 이를 처리할 수 있는 것은 아닙니다. 거래가 어려우신 분들을 위해
이 함수를 사용하면 기능 오류가 발생할 것으로 예상됩니다. 다른 사람들을 위해 우리는
무작위 입력 포인트의 평가를 확인하십시오.

기고자: Lutz Westermann, 2022년 9월
$offText

세트
* 글로벌 데모 제한에 맞게 허용
   인수 / n00*n07 /
   P / p1*p100 /;
스칼라
   aTol0 / 3e-14 /;
매개변수
   데이터(인수)
   원하는 Z;

변수 z, Vdata(arg);
방정식 e, fx(arg);

e.. z =e= LSEMax(Vdata('n00'),Vdata('n01'),Vdata('n02'),Vdata('n03'),
                 Vdata('n04'),Vdata('n05'),Vdata('n06'),Vdata('n07') );

fx(arg).. Vdata(arg) =e= 데이터(arg);

모델 m /all/;

루프 P,
  데이터(인수) = 균일(-10,10);
  m min z를 풀려면 nlp를 사용하세요.
  if (m.solvestat = %solveStat.capabilityProblems%),
    abort$(m.modelstat <> %modelStat.noSolutionReturned%) '기능 오류에 대한 잘못된 modelstat';
    abort.noError '해결 기능 오류: 추가 테스트가 억제되었습니다.';
  그렇지 않으면
    abort$(m.solvestat <> %solveStat.normalCompletion% 또는 m.modelstat > %modelStat.locallyOptimal%) '잘못된 상태 코드';
    wantZ = log(sum(arg, exp(data(arg))));
    abort$[abs(z.l-wantZ)>aTol0] 'bad z.l', z.l, wantZ;
  ;
;