설명
세 가지 다른 모델이 교통 균형을 계산하는 데 사용됩니다. 이들은 혼합 상보성 공식과 원시 및 이중 공식 NLP를 사용합니다.
대형 모델 유형 :MCP nlp
카테고리 : 슬롯 모델 라이브러리
메인 파일 : traffic.gms
$title 교통 균형 문제 (TRAFFIC,SEQ=169)
$onText
교통 평형을 계산하기 위해 세 가지 다른 모델이 사용됩니다. 이들은
혼합 상보성 공식과 원시 및 이중 공식
NLP를 사용합니다.
Ferris, MC, Meeraus, A 및 Rutherford, T F, 컴퓨팅 Wardropian
상보성 프레임워크의 균형. 최적화 방법 및
소프트웨어 10(1999), 669-685.
키워드: 혼합 상보성 문제, 비선형 계획법, 교통 평형,
운송, 복합상품 흐름
$offText
세트
n '노드'
a(n,n) '방향성 호';
매개변수
trip(n,n) '여행 테이블'
ca (n,n) '비용 계수 A'
cb (n,n) '비용 계수 B'
ck (n,n) '비용 계수 K';
별칭(n,i,j,k);
변수
t(i,j) '노드 i에서 노드 j로 이동하는 데 걸리는 시간'
v(i,j) '호 형태 i에서 j까지 이동하는 데 걸리는 시간'
y(i,j,k) '호 i-j를 따라 k로 흐름'
x(i,j) '호 i-j의 총 흐름'
objpnlp 'nlp 공식화의 목표'
objdnlp 'nlp 공식화의 목표';
양의 변수 y;
방정식
Balance(i,j) '물질수지'
vdef(i,j) '호 여행 시간 정의'
rational(i,j,k) '비용 최소화 조건'
xdef(i,j) '집계 흐름 정의'
defpnlp는 '기본 nlp 공식화에 대한 목표를 정의합니다'
defdnlp '이중 nlp 공식화에 대한 목표를 정의합니다';
잔액(i,k)$(동일하지 않음(i,k)).. sum(a(i,j), y(a,k)) =e= sum(a(j,i), y(a,k)) + 여행(i,k);
rational(a(i,j),k)$(not sameas(i,k)).. v(a) + t(j,k) =g= t(i,k);
vdef(a).. v(a) =e= ca(a) + cb(a)*power(x(a)/ck(a),4);
xdef(a).. x(a) =e= sum(k, y(a,k));
defpnlp.. objpnlp =e= sum(a, ca(a)*x(a) + cb(a)*power(x(a)/ck(a),5)*ck(a)/5);
defdnlp.. objdnlp =e= sum((i,k), 여행(i,k)*t(i,k))
- 합계(a, (4/5)*(ck(a)/cb(a)**(1/4))*(v(a) - ca(a))**1.25);
모델
pnlp '기본 nlp 공식' / defpnlp, 균형, xdef /
dnlp '이중 nlp 공식' / defdnlp, 합리적 /
mcp 'mcp 공식' /rational.y,balance.t,xdef,vdef.v/;
$sTitle 수폴스 테스트 데이터
$eolCom //
세트
n '노드 정의' / 1*24 /
param '아크 비용 테이블 헤더' / a, b, k /;
별칭(i,j,k,n);
테이블 arc_cost(n,n,param) '아크 비용 데이터'
abk
1.2 6 .90 25.9002
2.6 5 .75 4.9582
3.12 4 .60 23.4035
4.11 6 .90 4.9088
5.9 5 .75 10.0000
7.8 3 .45 7.8418
8.9 10 1.50 5.0502
9.10 3 .45 13.9158
10.15 6 .90 13.5120
10.17 8 1.20 4.9935
11.14 4 .60 4.8765
13.24 4 .60 5.0913
14.23 4 .60 4.9248
15.22 4 .60 10.3150
16.18 3 .45 19.6799
18.20 4 .60 23.4035
20.21 6 .90 5.0599
21.22 2 .30 5.2299
22.23 4 .60 5.0000
1.3 4 .60 23.4035
3.4 4 .60 17.1105
4.5 2 .30 17.7828
5.6 4 .60 4.9480
6.8 2 .30 4.8986
7.18 2 .30 23.4035
8.16 5 .75 5.0458
10.11 5 .75 10.0000
10.16 5 .75 5.1335
11.12 6 .90 4.9088
12.13 3 .45 25.9002
14.15 5 .75 5.1275
15.19 4 .60 15.6508
16.17 2 .30 5.2299
17.19 2 .30 4.8240
19.20 4 .60 5.0026
20.22 5 .75 5.0757
21.24 3 .45 4.8854
23.24 2.30 5.0785;
arc_cost(i,j,param) $= arc_cost(j,i,param); // 값을 미러링
옵션 arc_cost:4; arc_cost 표시; // 값 확인
매개변수 ca(i,j), cb(i,j), ck(i,j);
ca(i,j) = arc_cost(i,j,"a");
cb(i,j) = arc_cost(i,j,"b");
ck(i,j) = arc_cost(i,j,"k");
Table trip(i,j) 'i에서 j까지의 대칭 트립 행렬'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
1 0 1 1 5 2 3 5 8 5 13 5 2 5 3 5 5 4 1 3 3 1 4 3 1
2 0 1 2 1 4 2 4 2 6 2 1 3 1 1 4 2 0 1 1 0 1 0 0
3 0 2 1 3 1 2 1 3 3 2 1 1 1 2 1 0 0 0 0 1 1 0
4 0 5 4 4 7 7 12 14 6 6 5 5 8 5 1 2 3 2 4 5 2
5 0 2 2 5 8 10 5 2 2 1 2 5 2 0 1 1 1 2 1 0
6 0 4 8 4 8 4 2 2 1 2 9 5 1 2 3 1 2 1 1
7 0 10 6 19 5 7 4 2 5 14 10 2 4 5 2 5 2 1
8 0 8 16 8 6 6 4 6 22 14 3 7 9 4 5 3 2
9 0 28 14 6 6 6 9 14 9 2 4 6 3 7 5 2
10 0 40 20 19 21 40 44 39 7 18 25 12 26 18 8
11 0 14 10 16 14 14 10 1 4 6 4 11 13 6
12 0 13 7 7 7 6 2 3 4 3 7 7 5
13 0 6 7 6 5 1 3 6 6 13 8 8
14 0 13 7 7 1 3 5 4 12 11 4
15 0 12 15 2 8 11 8 26 10 4
16 0 28 5 13 16 6 12 5 3
17 0 6 17 17 6 17 6 3
18 0 3 4 1 3 1 0
19 0 12 4 12 3 1
20 0 12 24 7 4
21 0 18 7 5
22 0 21 11
23 0 7
24 0;
여행(i,j) $= 여행(j,i); // 값을 미러링
여행(i,j) = 여행(i,j)*0.11; // 원래 값으로 되돌립니다.
옵션 여행:2; 전시여행; // 기사의 값과 일치해야 합니다.
a(i,j) = ca(i,j); // 흐름 비용 매개변수 a를 사용하여 호를 식별합니다.
디스플레이 a;
$sTitle 바운드 정의 및 솔루션
t.fx(i,i) = 0;
v.lo(a) = ca(a);
y.fx(a(i,j),i) = 0;
옵션 domLim = 100000;
pnlp.workFactor = 3;
매개변수 rep(i,k,*) '요약 보고서';
mcp를 사용하여 mcp를 해결합니다. 담당자(i,j,'mcp') = t.l(i,j);
objpnlp를 최소화하는 nlp를 사용하여 pnlp를 해결합니다. rep(i,j,'primal') = 균형.m(i,j);
objdnlp를 최대화하는 nlp를 사용하여 dnlp를 해결합니다. rep(i,j,'dual') = t.l(i,j);
디스플레이 담당자;