exmcp6.gms : 외부 방정식 - 예제 MCP 6

설명

이 예는 exmcp1.gms를 기반으로 합니다.  동일한 공유 라이브러리를 사용합니다.
우리는 정규방정식과 외부방정식의 혼합을 도입하기를 희망합니다.
다양한 유형의 매칭.

기고자: Steve Dirkse, 2015년 2월.

소형 모델 유형 :슬롯 무료체험


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


메인 파일 : exmcp6.gms

$title 외부 방정식 - MCP 6 예(EXMCP6,SEQ=679)

$onText
  이 예는 exmcp1.gms를 기반으로 합니다.  동일한 공유 라이브러리를 사용합니다.
  우리는 정규방정식과 외부방정식의 혼합을 도입하기를 희망합니다.
  다양한 유형의 매칭.

  기고자: Steve Dirkse, 2015년 2월.
$offText

세트
  나는 / i1*i14 /
  i1(i)
  i2(i)
  ;
i1(i)$[(ord(i)/card(i)) <= 0.5] = 예;
i2(i) = i1(i)가 아님;
별칭(i,j);

매개변수
  Q(i,i) '공분산 행렬'
  x0(i) '대상'
  ;
Q(i,j) = power(0.5, abs(ord(i)-ord(j)) );
x0(i) = ord(i) / 카드(i);
Q, x0을 표시합니다.

변수
  x(i)
  t / fx 1 /
  당신 / FX 2 /
  v
  ;
방정식
  dzdx(i) 'del z wrt x(i)',
  dzdxXA(i) 'del z wrt x(i), eXternal 버전'
  dzdxXB(i) 'del z wrt x(i), eXternal 버전'
  에프, 지, 시
  ;

dzdx(i).. 2 * 합계 j, Q(i,j) * (x(j) - x0(j))  =e= 0;

dzdxXA(i1(i)).. sum j, ord(j) * x(j)  =x= ord(i);

dzdxXB(i2(i)).. sum j, ord(j) * x(j)  =x= ord(i);

f.. 1.1*t + 1.2*u + 1.3*v + sumj,x(j) =N= 10;
g.. 2.1*t + 2.2*u + 2.3*v + sumj,x(j) =N= 10;
h.. 3.1*t + 3.2*u + 3.3*v + sumj,x(j) =N= 10;

모델 m '표준 대수학'
   / dzdx.x, f.t, g.u, h.v /;
모델 libexmcp1c64 '외부 방정식'
   / f.t, dzdxXA.x, g.u, dzdxXB.x, h.v /;

x.l(j) = 0;
x.m(j) = 0;
x.lo('i1') = 0.125;
x.fx('i2') = 0.125;
x.up('i8') = 0.5;
x.fx('i9') = 0.5;

매개변수
  d(j)
  xL(j) /
    i1 0.125
    i2 0.125
    i3 0.209821428571423
    i4 0.28571428571429
    i5 0.35714285714286
    i6 0.428571428571429
    i7 0.561224489795917
    i8 0.5
    i9 0.5
    i10 0.795918367346933
    i11 0.785714285714291
    i12 0.857142857142859
    i13 0.928571428571431
    i14 1
  /
  xM(j) /
    i1 .0870535714285743
    i2 .0133928571428617
    i8 -.183673469387751
    i9 -.244897959183668
  /;

mcp를 사용하여 libexmcp1c64를 해결합니다.
* mcp를 사용하여 m을 해결합니다.

* $출구

Execute_unload 'mcp6';
d(j) = x.l(j) - xL(j);
중단$[sumj, abs(d(j)) > 1e-6] '잘못된 xL', d, x.l, xL;
d(j) = x.m(j) - xM(j);
중단$[sumj, abs(d(j)) > 1e-6] '잘못된 xM', d, x.m, xM;