2011B交巡警服务平台的设置与调度模型
本帖最后由 一匹狼 于 2013-8-9 11:17 编辑有做过2011交巡警服务平台那道题的吗,想请教下A区交通路口分布图怎么画的,邻接矩阵我已经求出,用的gplot画的很丑,很不理想,真心求教%A_gplot.m
close;clear;clc
A1=xlsread('A区网络图邻接矩阵.xlsx');
B=xlsread('A区交通路口坐标.xlsx');
c=xlsread('出入A区的入口标号.xlsx');
=size(B);
for i=1:length(A1(:,1))
for j=1:length(A1(1,:))
if A1(i,j)==65535%inf在excel为65535
A1(i,j)=inf;
end
end
end
D=B(:,2:3);
gplot(A1,D,'k')
hold on
plot(B((1:20),2),B((1:20),3),'ro');
plot(B(c,2),B(c,3),'r*');
plot(B(:,2),B(:,3),'.');
hold off
hold on
for k=1:m
text(B(k,2),B(k,3),['\leftarrow',num2str(k)]);
end
title('A区交通路口分布图');
axis tight
hold off由于excel文件上传不了,把分离数据的代码贴上来,%load_data.m
clear;
file='cumcm2011B附件2_全市六区交通网路和平台设置的数据表.xls';
A_file_node='A区交通路口坐标.xlsx';
A_file_routine='A区交通路口的路线.xlsx';
A_file_entrance='出入A区的入口标号.xlsx';
disp('正在载入相关数据...');
node_data=xlsread(file,1,'A2:C93');
routine_data=xlsread(file,2,'A2:B144');
A_entrance_data=xlsread(file,4,'C2:C14');
xlswrite(A_file_node,node_data);
xlswrite(A_file_entrance,A_entrance_data);
disp('载入完毕!');
disp('修改路线的起始点在不同区域的数据点...');
for i=1:length(routine_data(:,2))
if routine_data(i,2)>92
routine_data(i,2)=routine_data(i,1);
xlswrite(A_file_routine,routine_data);
%路线的起始点在不同区域的数据在求解邻接矩阵时不计算其欧氏距离
end
end
disp('修改完毕!');%A_linjie.m
clear;clc
B=xlsread('A区交通路口坐标.xlsx');
C=xlsread('A区交通路口的路线.xlsx');
=size(B);%B行列数m*n
%A为邻接矩阵
A=zeros(m,m)+inf;
for i=1:92
A(i,i)=0;
end
=size(C);
for i=1:m
a=sqrt((B(C(i,1),2)-B(C(i,2),2))^2+(B(C(i,1),3)-B(C(i,2),3))^2);
;%起始点欧氏距离,即权值
if a>30%两路口相距大于3km,超出该区该地最近处交巡警服务平台的管辖范围
A(C(i,1),C(i,2))=inf;
else
A(C(i,1),C(i,2))=a;
end
A(C(i,2),C(i,1))=A(C(i,1),C(i,2));
end
xlswrite('A区网络图邻接矩阵.xlsx',A);愿意共同探讨建模的朋友可以加q1053664955 本帖最后由 一匹狼 于 2013-8-9 11:28 编辑
2011B数据.m及excel文件,也可以i用上述代码生成,不知道附件为什么默认下载就消耗2体力
弄好了,发现即使获国一奖论文中的程序也不一定是正确,你没办法得到第一手数据,自己慢慢破解,静下心来折腾还是出结果的哈~ 尽量在关键部分注释,希望对大家有帮助
code_1%load_aqudian.m
clear;clc
file='cumcm2011B附件2_全市六区交通网路和平台设置的数据表.xls';
disp('载入数据ing...');
x=xlsread(file,1,'B2:B93');
y=xlsread(file,1,'C2:C93');
x1=xlsread(file,2,'A2:A144');
y1=xlsread(file,2,'B2:B144');
disp('载入完毕!');
disp('修改数据ing...');
j=find(y1>92);%查找y1>92的角标j
for i=j
x1(i)=[];
y1(i)=[];
end
disp('修改完毕');
clear file i j
save aqudian_datacode_2%aqudian_data.m
clf
plot(x,y,'.')%绘制C区交通路口节点
%grid on
for i=1:92
text(x(i),y(i),num2str(i))%绘制C区交通路口标号,从1开始而不是166
end
hold on
%z=zeros(140,1); %空矩阵,避免散乱地分布在内存中,提高运行效率
for i=1:140
% z(i)=sqrt((x(x1(i))-x(y1(i))).^2+(y(x1(i))-y(y1(i))).^2);%两交通路口节点的距离
m=;
%x1为路线起点,y1为路线终点,x(x1(i))为x1的横坐标;x(y1(i))为x2的横坐标
n=;
%x1为路线起点,y1为路线终点,x(x1(i))为x1的纵坐标;x(y1(i))为x2的纵坐标
plot(m,n,'b')%
end
%axis tight
hold off 非常感谢楼主的分享,正在做这道题呢1 楼主,感激之情无以言表啊! 谢谢楼主分享 赞··························· 赞··············
页:
[1]