2011年全国大学生数学建模竞赛全国一等奖论文(4)

2019-08-30 15:48

导刊,第24卷:103-104,2010

[8]侠名,Folyd算法详解,http://www.docin.com/p-187161584.html,2010.09.10

附录

1.0 Floyd函数

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)

1.1 第一题第一问分配各平台管辖区域的matlab程序 A=xlsread('location'); A1=zeros(582,582); for i=1:582 for j=1:582

A1(i,j)=((A(i,1)-A(j,1))*(A(i,1)-A(j,1))+(A(i,2)-A(j,2))*(A(i,2)-A(j,2)))^0.5;

end ?:任意两点间的直线距离 end

Lath=xlsread('lath'); A2=inf(582,582); for i=1:928

A2(Lath(i,1),Lath(i,2))=0;

A2(Lath(i,2),Lath(i,1))=0; ¢:表示任意两点间直接连通关系的矩阵 end

A1=A1+A2; for i=1:582

A1(i,i)=0; ?:初始邻接矩阵

13

end

Ftime=floyd(A1)/10; %Ftime:最短时间矩阵

Af=Ftime(1:92,1:92); ˉ:A区所有点对点全时间矩阵 G=xlsread('Gl'); %G:所有路口发生事故的次数 Ag=G(1:92,:); %Ag:A区路口发生事故的次数 At=Af(1:20,:); At1=At; for i=1:20 for j=1:92

if At(i,j)>3 At1(i,j)=0; end end end

tem=sum(At1); for j=21:92

if tem(1,j)==0 for i=1:20

if At(i,j)==min(At(:,j)) At1(i,j)=At(i,j); end end end end

for i=1:20 for j=21:92

if At1(i,j)==0 At1(i,j)=inf; end end end

for i=1:20 for j=1:20

At1(i,j)=inf; end end

for i=1:20

At1(i,i)=0; %At1:矩阵 end

Att=zeros(20,92); for i=1:20 for j=1:92

if At1(i,j)<10 Att(i,j)=1; end end end

At2=zeros(20,92); for i=1:20

筛选后20个平台对92个点的时间14

k=0;

for j=1:92

if At1(i,j)<10 k=k+1;

At2(i,k)=j; end end end

At3=zeros(92,20); for i=1:92 k=0;

for j=1:20

if At1(j,i)<10 k=k+1;

At3(i,k)=j; end end end

xlswrite('Att',Att) xlswrite('Alltime',At) xlswrite('time',At1) An=zeros(20,92); for j=1:92 for i=1:20

if At(i,j)==min(At(:,j))

An(i,j)=1; %An:最快反应时间下平台对路口的直接分配关系矩阵,0代表不分配,1代表分配 end end end

An1=zeros(20,92); for i=1:20 k=0;

for j=1:92

if An(i,j)==1 k=k+1;

An1(i,k)=j; %An1:最快反应时间下的范围矩阵 end end end

xlswrite('answer1',An1) Agzl=An*Ag; Dy3=[]; for i=1:20 k=0;

for j=1:92

if An(i,j)==1&Af(i,j)>3 k=k+1;

Dy3(i,k)=j; end

15

end end

xlswrite('最短时间下工作量',Agzl) xlswrite('最短时间下大于3',Dy3) Ax=xlsread('x'); Agzl=Ax*Ag; Dy3=[]; for i=1:20 k=0;

for j=1:92

if Ax(i,j)==1&Af(i,j)>3 k=k+1;

Dy3(i,k)=j; end end end

xlswrite('优化后工作量',Agzl) xlswrite('优化后大于3',Dy3) 优化工作量的lingo程序 model: sets:

supply/1..20/:c; need/1..92/:a;

link1(supply,need):t,x; endsets data:

@ole('D:\\x.xls',x)=x; a=@ole('D:\\a.xls',a);

t=@ole('D:\\time.xls',time); enddata

min=@sum(supply(i):(0.05*@sum(supply(i):c(i))-c(i))^2); @for(supply(i):c(i)=@sum(need(j):a(j)*x(i,j))); @for(need(j):@sum(supply(i):x(i,j))=1); @for(link1(i,j)|t(i,j)#ge#20:x(i,j)=0); @for(link1(i,j):@bin(x(i,j))); end

1.2 第一题第二问计算封锁交通要道方案的lingo程序 model: sets:

supply/1..20/;

need/12,14,16,21,22,23,24,28,29,30,38,48,62/; links(supply,need):t,x; endsets data:

@ole('D:/x12.xls',x)=x; t=@ole('D:/t1.xls',t); enddata

min=@max(links(i,j):t(i,j)*x(i,j));

@for(supply(i):@sum(need(j):x(i,j))<=1);

16

@for(need(j):@sum(supply(i):x(i,j))=1); @for(links(i,j):@bin(x(i,j))); end

1.3 第一题第三问计算增加平台个数和位置的lingo程序 model: sets:

supply/1..92/:c; point/1..92/:z,a;

links(point,point):t,x; endsets data:

@ole('D:\\z13.xls',z)=z; @ole('D:\\x13.xls',x)=x; @ole('D:\\z13.xls',work)=c; a=@ole('D:\\a.xls',a);

t=@ole('D:\\atime.xls',atime); enddata min=n;

@for(point(i):x(i,i)=z(i));

m=@sum(links(i,j)|t(i,j)#ge#3:x(i,j)); m<=4;

@for(links(i,j)|t(i,j)#ge#4:x(i,j)=0); z(1)=1; z(2)=1; z(3)=1; z(4)=1; z(5)=1; z(6)=1; z(7)=1; z(8)=1; z(9)=1; z(10)=1; z(11)=1; z(12)=1; z(13)=1; z(14)=1; z(15)=1; z(16)=1; z(17)=1; z(18)=1; z(19)=1; z(20)=1;

n=@sum(point(i):z(i)); n>=22; n<=25;

@for(links(i,j):x(i,j)<=z(i));

@for(point(i):c(i)=@sum(point(j):a(j)*x(i,j))); @for(point(i):c(i)>=z(i)*2.5); @for(point(i):c(i)<=z(i)*6.5);

17


2011年全国大学生数学建模竞赛全国一等奖论文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:ai认证001

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: