1.动态规划解最短路:
model: sets: cities/A,B,C,D,E,F,G/: FL; roads(cities,cities)/A,B A,C B,D B,E B,F C,D C,E C,F D,G E,G F,G/:W,P; endsets data: W=2 4 3 3 1 2 3 1 1 3 4; enddata N=@SIZE(CITIES); FL(N)=0; @for(cities(i) |i #LT# N:FL(i)=@MIN(roads(i,j):W(i,j)+FL(j))); @for(roads(i,j):P(i,j)=@IF(FL(i) #EQ# W(i,j)+FL(j),1,0)); end
2.TSP
3.最小生成树和最优连线:
如果图的边有权,则权的总和达到最小的生成树成为最小生成树(minimal spanning tree,MST),最小生成树不一定唯一。
model: sets: city/1..7/:u; link(city,city): dist,x; endsets n=@size(city); data: dist=0 3 4 7 100 100 100 3 0 3 2 4 100 100 4 3 0 100 5 7 100 7 2 100 0 2 100 6 100 4 5 2 0 1 4 100 100 7 100 1 0 2 100 100 100 6 4 2 0; enddata min=@SUM(link:dist*x); U(1)=0; @for(link:@bin(x));!定义x为0-1变量; @for(city(K)|K#GT#1 :@SUM(city(I)|I#ne#k:x(I,K))=1; @for(city(J)|J#GT#1 #and# J#ne#K: u(J)>=u(K)+X(K,J)-(N-2)*(1-X(K,J))+(N-3)*X(J,K););); @sum(city(J)|J#GT#1 :x(1,J))>=1; @for(city(K)|K#GT#1: U(K)>=1;U(K)<=N-1-(N-2)*X(1,K);); end
4.最大流问题(最小费用)
Ford-Fulkerson标号算法和Edmonds-Karp算法
model: sets: CHSH/1..6/; LINKS(CHSH,CHSH)/1,2 1,3 2,4 2,5 3,4 3,5 4,6 5,6 6,1/:C,F; endsets data: C=16,20,10,10,6,6,10,16,1000; enddata max=F(6,1); @for(LINKS(I,J):F(I,J)<=C(I,J)); @FOR(CHSH(I):@SUM(LINKS(J,I):F(J,I))=@SUM(LINKS(I,J):F(I,J))); end