ex1.gms : 외부 방정식 - 예 1

설명

이것은 다음 방법을 보여주는 일련의 예 중 첫 번째입니다.
무료 슬롯 사이트와 함께 외부 방정식(=X=) 기능을 사용합니다.
첫 번째 모델은 제약이 없는 단순한 2차 모델입니다.
이차 함수는 외부 방정식으로 정의됩니다.

기본적으로 무료 슬롯 사이트 스크립트 complink.gms가 먼저 호출되어 빌드됩니다.
필요한 외부 라이브러리.  --NOCOMP=1로 실행하면
이 컴파일 및 연결 단계는 건너뜁니다. 이 경우 외부
이 모델과 함께 제공되는 라이브러리가 사용됩니다.  이러한 점을 주의하세요.
라이브러리에는 다른 라이브러리에 대한 종속성이 있습니다.
LD_LIBRARY_PATH를 설정해야 할 수도 있습니다.
DYLD_LIBRARY_PATH 또는 이와 유사하여 무료 슬롯 사이트 시스템을 가리킵니다.
디렉토리.

소형 모델 유형 :무료 슬롯 사이트


카테고리 : 무료 슬롯 사이트 테스트 라이브러리


메인 파일 : ex1.gms

$title 외부 방정식 - 예 1 (EX1,SEQ=563)

$onText
  이는 방법을 보여주는 일련의 예제 중 첫 번째입니다.
  무료 슬롯 사이트와 함께 외부 방정식(=X=) 기능을 사용합니다.
  첫 번째 모델은 제약이 없는 단순한 2차 모델입니다.
  이차 함수는 외부 방정식으로 정의됩니다.

  기본적으로 무료 슬롯 사이트 스크립트 complink.gms가 먼저 호출되어 빌드됩니다.
  필요한 외부 라이브러리.  --NOCOMP=1로 실행하면
  이 컴파일 및 연결 단계는 건너뜁니다. 이 경우 외부
  이 모델과 함께 제공되는 라이브러리가 사용됩니다.  이러한 점을 주의하세요.
  라이브러리에는 다른 라이브러리에 대한 종속성이 있습니다.
  LD_LIBRARY_PATH를 설정해야 할 수도 있습니다.
  DYLD_LIBRARY_PATH 또는 이와 유사하여 무료 슬롯 사이트 시스템을 가리킵니다.
  디렉토리.
$offText

i / i1*i4 / 설정
별칭(i,j);

모수 Q(i,j) 공분산 행렬
          X0(i) 목표;
Q(i,j) = power(0.5, abs(ord(i)-ord(j)) );
X0(i) = ord(i);
Q, X0을 표시합니다.

변수 x(i), z;
방정식 zdef, zdefX;

* 무료 슬롯 사이트에서 구현된 원하는 방정식은 다음과 같습니다.

  zdef .. sum( (i,j), (x(i)-x0(i)) * Q(i,j) * (x(j)-x0(j) ) ) =e= z;

* 다음과 같이 외부 방정식으로 구현됩니다.

  zdefX .. sum(i, ord(i)*x(i) ) + (카드(i)+1)* z =X= 1;

$onText
  방정식의 계수는 X-변수가 다음과 같다는 것을 보여줍니다.
  1부터 카드(i)까지 번호가 매겨져 있고 Z는 카드(i)+1의 숫자를 가지고 있습니다.
  외부 방정식 코드.
  외부 방정식은 하나만 있으며 숫자 1, 즉 값이 있습니다.
  오른쪽의.
  방정식의 모든 변수에는 변수가 할당되어야 합니다.
  숫자이며 모두 외부 방정식에 나타나야 합니다. 당신
  아직 일부 항이 선형이라는 것을 솔버에게 알릴 수 없습니다.
  -- 모든 항은 솔버의 관점에서 볼 때 비선형입니다.
$offText

$ 미리 설정
$ifI %system.filesys%==unix $set pre 'lib'
$ 세트 '64'

$세트 N ex1
$set cN %pre%%N%c%suf%
$set c_cbN %pre%%N%c_cb%suf%
$set dN %pre%%N%d%suf%
$set d_cbN %pre%%N%d_cb%suf%
$set fN %pre%%N%f%suf%
$set f_cbN %pre%%N%f_cb%suf%
$set jN %pre%Ex1j%suf%

모델 %N% '무료 슬롯 사이트 구현' / zdef /;
model %cN% 'C의 외부 방정식' / zdefX /;
model %c_cbN% '콜백이 포함된 C의 외부 방정식' / zdefX /;
model %dN% '델파이의 외부 방정식' / zdefX /;
model %d_cbN% '콜백이 포함된 Delphi의 외부 방정식' / zdefX /;
model %fN% 'F77의 외부 방정식' / zdefX /;
model %f_cbN% '콜백이 포함된 F77의 외부 방정식' / zdefX /;
model %jN% 'Java의 외부 방정식' / zdefX /;

옵션 limcol = 0;

* 목표와 비교하여 솔루션을 확인하십시오.

매개변수 보고서(*,*,*) 솔루션 요약;
스칼라 totdist /0/;

$onEchoV > runme.gms
z.l = 0;
z.m = 0;
x.l(i) = 0;
x.m(i) = 0;
zdef.l = 0;
zdef.m = 0;
z를 최소화하는 nlp를 사용하여 %1을 해결합니다.
abort$(%1.solvestat <> 1) '%1 모델 실행에 문제가 있습니다';
Report('Solve','Stat', '%1') = %1.solvestat;
Report('모델','Stat', '%1') = %1.modelstat;
Report(i,'대상', '%1') = x0(i);
보고서(i,'값', '%1') = x.l(i);
보고서(i,'거리','%1') = abs(x.l(i) - x0(i));
totdist = totdist + sum(i,abs(x.l(i) - x0(i)));
$offEcho

$ 확장 '.dll' 설정
$ifI %system.filesys%==unix $set ext '.so'
$ifI %system.platform%==dex $set ext '.dylib'
$ifI %system.platform%==dax $set ext '.dylib'

$ 세트 eq
$ifI %system.filesys%==unix $set eq "'"

$if set runall $set runC '1' set runC_cb '1' set runD '1' set runD_cb '1' set runF '1' set runF_cb '1' set runJ '1'

$ifThen nocomp를 설정하지 않음
$ ifI set runC $call 무료 슬롯 사이트 complink lo=%무료 슬롯 사이트lo% --lang=c --files=ex1c.c --libname=%cN%%ext%
$ 오류 수준 1인 경우 $abort C 라이브러리 컴파일 오류
$ ifI set runC_cb $call 무료 슬롯 사이트 complink lo=%무료 슬롯 사이트lo% --lang=c --files=ex1c_cb.c --libname=%c_cbN%%ext%
$ 오류 수준 1인 경우 $abort C 라이브러리 컴파일 오류
$ ifI set runD $call 무료 슬롯 사이트 complink lo=%무료 슬롯 사이트lo% --lang=Delphi --files=ex1d.dpr
$ 오류 수준 1인 경우 $abort 델파이 라이브러리 컴파일 오류
$ ifI set runD_cb $call 무료 슬롯 사이트 complink lo=%무료 슬롯 사이트lo% --lang=Delphi --files=ex1d_cb.dpr
$ 오류 수준 1인 경우 $abort 델파이 라이브러리 컴파일 오류
$ ifI set runF $call 무료 슬롯 사이트 complink lo=%무료 슬롯 사이트lo% --lang=fortran90 --files=%eq%"gehelper.f90 ex1f.f90"%eq% --libname=%fN%%ext%
$ 오류 수준 1인 경우 $abort Fortran90 라이브러리 컴파일 오류
$ ifI set runF_cb $call 무료 슬롯 사이트 complink lo=%무료 슬롯 사이트lo% --lang=fortran90 --files=%eq%"gehelper.f90 msg2_f.f90 ex1f_cb.f90"%eq% --libname=%f_cbN%%ext%
$ 오류 수준 1인 경우 $abort Fortran90 라이브러리 컴파일 오류
$ ifI set runJ $call 무료 슬롯 사이트 complink lo=%무료 슬롯 사이트lo% --lang=java --files=Ex1j.java --libname=%jN%%ext% --namestub=Ex1j
$ 오류 수준 1인 경우 $abort Java 라이브러리 컴파일 오류
$endIf

$ batInclude runme %N%
$if set runC $batInclude runme %cN%
$if set runC_cb $batInclude runme %c_cbN%
$if set runD $batInclude runme %dN%
$if set runD_cb $batInclude runme %d_cbN%
$if set runF $batInclude runme %fN%
$if set runF_cb $batInclude runme %f_cbN%
*Java의 경우: DLL을 사용하기 전에 jvm.dll이 PATH(예: C:\Program Files\Java\jre6\bin\client)에 있는지 확인하세요.
$if set runJ $batInclude runme %jN%

보고서 표시;

if ((totdist < 1.0E-5),
  "@@@@ #테스트에 통과했습니다."를 표시합니다.
그렇지 않으면
  abort totdist, "@@@@ #테스트가 통과되지 않았습니다. 자세한 내용은 ex1.lst를 검사하세요.";
);