灾情巡视路线模型
来源:互联网 发布:u盘装ubuntu 编辑:程序博客网 时间:2024/05/17 07:53
此模型用到的程序。
M=inf;
a=矩阵(方阵);b=a+a';b(find(b==0))=M;
for i=1:53
b(i,i)=0;
end
[D,path] = floyd(b);
fenzu1 = [15 16 17 18 20 21 22 23 24 25 26 27 28 44 46 48 49 50 51];
zuyi = D(fenzu1,fenzu1);
fenzu2=[2 5 6 7 8 9 10 11 12 13 14 19 40 41 42 43 45 47 50];
zuer=D(fenzu2,fenzu2);
fenzu3=[1 3 4 29 30 31 32 33 34 35 36 37 38 39 50 52 53]
zusan=D(fenzu3,fenzu3);
model:
sets:
city / 1.. 17/: u;
link( city, city):
dist, ! 距离矩阵;
x;
endsets
n = @size( city);
data: !距离矩阵,它并不需要是对称的;
dist =@ole('E:\完全图.xls','dist4');//dist是floyd算法产生的方阵;例如:zuyi ,zuer,zusan;
!随机产生,这里可改为你要解决的问题的数据;
enddata
!目标函数;
min = @sum( link: dist * x);
@FOR( city( K):
!进入城市K;
@sum( city( I)| I #ne# K: x( I, K)) = 1;
!离开城市K;
@sum( city( J)| J #ne# K: x( K, J)) = 1;
);
!保证不出现子圈;
@for(city(I)|I #gt# 1:
@for( city( J)| J#gt#1 #and# I #ne# J:
u(I)-u(J)+n*x(I,J)<=n-1);
);
!限制u的范围以加速模型的求解,保证所加限制并不排除掉TSP问题的最优解;
@for(city(I) | I #gt# 1: u(I)<=n-2 );
!定义X为0\1变量;
@for( link: @bin( x));
end
//用此程序需改两处,第一: city / 1.. 17/: u;中的17改成所算矩阵的维数;
第二:data.dist =@ole('E:\完全图.xls','dist4');//dist是floyd算法产生的方阵即可。
%floyd算法通用程序,输入a为赋权邻接矩阵
%输出为距离矩阵D,和最短路径矩阵path
function [D,path]=floyd(a)
n=size(a,1);
D=a;
path=zeros(n,n);
for i=1:n
for j=1:n
if D(i,j)~=inf
path(i,j)=j;
end
end
end
for k=1:n
for i=1:n
for j=1:n
if D(i,k)+D(k,j)<D(i,j)
D(i,j)=D(i,k)+D(k,j);
path(i,j)=path(i,k);
end
end
end
end
%配合floyd算法的后续程序,s为源点,t为宿点
%L为长度,R为路由
function [L,R]=router(D,path,s,t)
L=zeros(0,0);
R=s;
while 1
if s==t
L=fliplr(L);
L=[0,L];
return
end
L=[L,D(s,t)];
R=[R,path(s,t)];
s=path(s,t);
end
//如何用:
首先对path的说明:这里的D是用floyd算出的距离矩阵,path是最短路径矩阵。
path是这样的,他的结果是任意两点最短距离所经过的最后一个中间节点。比如
说是path[2,10]=7;这就说明2号节点到10号节点距离时,当添加7号节点能够缩
短他们之间的距离,当然7号节点是最后一个能缩短他们之间距离的中间节点。
//router何时用:比如说对于灾难巡视模型,一个人走完所有村庄,经过的路程最短,(类似TSP问题)
这个问题你可以用hamilton圈解决,先把一般图转化为完全图,因为完全图一定可以找到hamiltom圈,找到之后形成一条回路,比如
1-2-3-4-5-6;但在原图(一般图)中2-3没有边相连,这时你需要,找出2-3最短路程的的路径,这时可以用调用 [L,R]=router(D,path,2,3),
R就是路径(走法)
- 灾情巡视路线模型
- 中国的灾情
- 关注灾情,心系九寨18
- 一、【word2vec学习路线】神经网络语言模型
- 外场巡视录01
- 外场巡视2
- 北京大学巡视整改,出人意外!
- 路线
- 路线
- 路线
- 路线
- 路线
- 路线
- web表现层的开发技术模型和路线
- 二、【word2vec学习路线】语言模型分层优化
- 习近平亲自决定中央专项巡视及巡视对象
- 使用Inspectors(巡视器)
- 巡视中的 清华大学与北京大学
- LeetCode239 Sliding Window Maximum
- _DataStructure_C_Impl:链栈
- volley跟ssh服务结合使用
- 《深入理解Java虚拟机》读书笔记——Java内存区域与内存溢出异常
- POJ_1986_Distance Queries(LCA+tarjan)
- 灾情巡视路线模型
- Joke with permutation
- android_菜单的创建_xUtils框架使用
- FFmpeg源代码结构图 - 编码
- 连接SSO CAS的代码示例
- 记我的WiFi音箱之一个网络在线播放及本地播放音乐器(一)
- jQuery - 自定义li元素的FocusColor
- Java学习笔记(九) Bitset
- hdoj 2078 复习时间