설명
간단한 트래픽 할당 문제:
- 하나 이상의 물건을 사용하여 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] '잘못된 에드';