traffic.gms : 트래픽 할당 모델

설명

간단한 트래픽 할당 문제:
 - 하나 이상의 물건을 사용하여 5개의 물건을 A에서 B로 최대한 빨리 이동하세요.
   A와 B 사이의 N개 경로 p1..pN 중
 - 각 경로의 지연 d는 해당 경로의 트래픽 양에 따라 달라집니다.
   경로:
      d(p) = a(p) + x(p) + x(p)**1.5

이것은 VI를 사용하여 계산하는 방법을 보여주는 간단한 예입니다.
 유효 지연*, 즉 0이 아닌 모든 경로에 대한 최대 지연
흐름, 즉 모든 물질이 목적지에 도달하는 데 걸리는 시간
목적지.  중요하지 않은 네트워크와 관련된 예는 다음을 참조하세요.
이 라이브러리의 Traffic2 모델.

기고자: Steven Dirkse, 2009년 1월

소형 모델 유형 :VI


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


메인 파일 : traffic.gms

$title 트래픽 할당 모델(TRAFFIC,SEQ=3)

$onText

간단한 트래픽 할당 문제:
 - 하나 이상의 물건을 사용하여 5개의 물건을 A에서 B로 최대한 빨리 이동하세요.
   A와 B 사이의 N개 경로 p1..pN 중
 - 각 경로의 지연 d는 해당 경로의 트래픽 양에 따라 달라집니다.
   경로:
      d(p) = a(p) + x(p) + x(p)**1.5

이것은 VI를 사용하여 계산하는 방법을 보여주는 간단한 예입니다.
*유효 지연*, 즉 0이 아닌 모든 경로에 대한 최대 지연
흐름, 즉 모든 물질이 목적지에 도달하는 데 걸리는 시간
목적지.  중요하지 않은 네트워크와 관련된 예는 다음을 참조하세요.
이 라이브러리의 Traffic2 모델.

기고자: Steven Dirkse, 2009년 1월

$offText

세트
   p 'A에서 B로의 경로' / p1 * p4 /;
스칼라
   b '이동할 물건의 양' / 5 /;
매개변수
   a(p);

초과 = 1;
a(p) = 균일(0,100);

양의 변수
  x(p) '경로 흐름';
방정식
  d(p) '지연', 수요;

d(p).. a(p) + x(p) + x(p)**1.5 =N= 0;
수요..sump, x(p) =G= b;

모델 vi / d, 수요 /;

* vi에 대한 보완 쌍을 정의
파일 myinfo / '%emp.info%' /;
putclose myinfo 'vi d x 수요';

emp를 사용하여 vi를 해결하십시오.
abort$[vi.modelstat <> %modelStat.locallyOptimal%] 'vi에 대한 잘못된 modelstat';
abort$[vi.solvestat <> %solveStat.normalCompletion%] 'vi에 대한 잘못된 Solvestat';

* 보고서 라벨의 경우 ed = 유효 지연
매개변수
  보고서(*)
  보고서2(p,*);

Report2(p,'흐름') = x.l(p);
Report2(p,'delay') = d.l(p);

보고서('ed_marg') = 수요.m;
report('ed_calc') = smax(p$[x.l(p) > 1e-8], report2(p,'delay'));
보고서('ed_diff') = abs(report('ed_calc')-report('ed_marg'));

보고서 표시, 보고서2;

abort$[report('ed_diff') > 1e-6] '잘못된 에드';