重庆邮电大学站址规划
摘 要
本报告以通信网理论为理论基础,对重庆邮电大学进行站址规划问题的求解。由于重庆邮电大学的相关地理位置资料有限,故对问题做出了简化处理,简化了接入点数量以及规模,均以坐标点进行表示,以坐标点对应实际地理位置,且对应接入点的权重也按照一定的等级进行取值,虽未求出实际值,但总体的方法及思路无误。经编程求解,若设单站,求出设站位置坐标点为(7,3),对应实际地理位置为知行苑附近,路径费用为892;若设两站,求出设站位置坐标点为(2,3)和(8,3),对应实际地理位置为风雨操场和樱花、延生食堂,路径费用为602;若设三站,求出设站位置坐标点为(2,3),(7,1)和(9,4),对应实际地理位置为风雨操场,信科大楼附近和明理苑,路径费用为488。
关键词:站址规划;单中点问题;k中点问题;穷举法
一、问题提出
以重庆邮电大学的地理位置为基础,对重庆邮电大学进行站站址规划,考虑到设站费用有限,总设站个数不超过三个,需满足校园内所有用户的接入需求,结合流量、路径、费用最低进行站址规划。
图1 重庆邮电大学可视化校园图
二、问题求解
2.1 位置简化
1)鉴于重庆邮电大学南部校区仍处在开发建设当中,故主要考虑已建设校区的地理位置简化成为坐标点,先将已建设校区划分为19个区域,如图2所示。
图2 划分为19个区域
2)对每个区域选定一个坐标点表示其地理位置,再结合坐标轴进行坐标点的赋值,赋值结果如图3所示。
图3 坐标点表示其地理位置
2.2 接入点赋权值
按照接入点容量:信科>教学楼>食堂>图书馆>宿舍>办公区等级进行赋值。(注:该部分赋权值过于主观,且权值对最终站址规划结果影响较大,应查阅相关资料进行实际权重比较赋值,本文鉴于时间和查阅资料有限故采取该赋值方式)
表1 各接入点权值
代号 | 地理位置 | 权值 |
---|---|---|
A | 三、四教学楼、逸夫楼 | 15 |
B | 五、八教 | 10 |
C | 风雨操场、留学生楼 | 8 |
D | 办公楼、居民楼 | 9 |
E | 兴业苑 | 14 |
F | 居民楼、校演播厅 | 5 |
G | 莘莘食堂、居民楼 | 12 |
H | 知行苑 | 12 |
I | 二教学楼、马院 | 7 |
J | 居民楼、教室公寓 | 9 |
K | 明理苑 | 16 |
L | 延生、中心、老图 | 13 |
M | 信科大楼 | 14 |
O | 宁静苑 | 12 |
P | 茶花园 | 8 |
Q | 紫竹园 | 9 |
R | 宁静苑、四海苑 | 16 |
S | 教室公寓 | 15 |
T | 校团委办公室 | 6 |
2.3 模型建立及求解
设站问题目标函数:
其中:
L是设站代价
wj是第j个用户点的权值
dij是第i个站与第j个用户点联线的费用
设待选的站址已定为3个,分别为qi(i=1,2,3),每个站的费用都是否是f;用户点有19个,分别以代号A、B…表示,相应的权值如表1所示。
1)单站求解
经Matlab编程单站求解坐标点为(7,3),对应实际地理位置为知行苑附近,路径费用为892,得总代价为
图4 单站位置规划
2)两站求解
经Matlab编程两站求解坐标点(2,3)和(8,3),对应实际地理位置为风雨操场和樱花、延生食堂,路径费用为602,得总代价为
L_2=2f+602
图5 两站位置规划
3)三站求解
经Matlab编程求出设站位置坐标点为(2,3),(7,1)和(9,4),对应实际地理位置为风雨操场,信科大楼附近和明理苑,路径费用为488,得总代价为
L_3=3f+488
图6 三站位置规划
4)求最优解
将L1,L2,L3的函数关系绘图,可见最优解与设站费用f有关,即:
当f≤114时,三站解L3为最优。
当114≤f≤290,两站解L2最优。
当f≥290,单站解L1最优。
图7 最优站址选择
三、总结
通过通信网理论知识的学习,让我们在这次站址规划问题中找到了明确的求解方向,通过k中点问题的理解,再加以运用到实际的生活中,并通过编程实现求解得到最终结果让我们更深刻的认识到有关理论知识。
附录:
软件:Matlab
1、单站求解
clc;
close all;
clear all;
str=['A( 0,3)'; 'B( 0,5)'; 'D( 2,1)'; 'C( 2,4)'; 'E( 4,5)'; 'T( 4,3)'; 'F( 3,0)'; 'I( 5,1)'; 'H( 6,3)'; 'G( 6,5)'; 'L( 7,2)'; 'M( 7,0)'; 'P( 8,0)'; 'K( 8,4)'; 'Q( 9,1)'; 'O( 9,3)'; 'J( 9,5)'; 'S(11,1)'; 'R(11,3)'];
x=[0 0 2 2 3 4 4 5 6 6 7 7 8 8 9 9 9 11 11];%横坐标
y=[3 5 1 4 0 3 5 1 3 5 2 0 0 4 1 3 5 1 3];%纵坐标
value=[15 10 9 8 14 6 5 7 12 12 13 14 8 16 9 12 9 15 16];%各区域权值,可更改
scatter(x,y,400,'.');
grid on;
for i=1:19
tn=str(i,:);
text(x(i),y(i),tn,'fontsize',12);
end
sum=0;
result=[0 0];
k=[0 0];
min_result=5000;
for m=1:11
for n=1:6
k(1)=m;
k(2)=n;
sum=0;
for j=1:19
sum=sum+(abs(k(1)-x(j))+abs(k(2)-y(j)))*value(j);
end
if(min_result>=sum)
min_result=sum;
result=[k(1) k(2)];
end
end
end
figure(2);
scatter(x,y,400,'.');
for i=1:19
tn=str(i);
text(x(i),y(i),tn,'fontsize',12);
end
grid on;
hold on;
for p=1:19
plot([x(p) result(1)],[y(p) result(2)]);
end
2、两站求解
clc;
close all;
clear all;
str=['A( 0,3)'; 'B( 0,5)'; 'D( 2,1)'; 'C( 2,4)'; 'E( 4,5)'; 'T( 4,3)'; 'F( 3,0)'; 'I( 5,1)'; 'H( 6,3)'; 'G( 6,5)'; 'L( 7,2)'; 'M( 7,0)'; 'P( 8,0)'; 'K( 8,4)'; 'Q( 9,1)'; 'O( 9,3)'; 'J( 9,5)'; 'S(11,1)'; 'R(11,3)'];
x=[0 0 2 2 3 4 4 5 6 6 7 7 8 8 9 9 9 11 11];
y=[3 5 1 4 0 3 5 1 3 5 2 0 0 4 1 3 5 1 3];
value=[15 10 9 8 14 6 5 7 12 12 13 14 8 16 9 12 9 15 16];
scatter(x,y,400,'.');
grid on;
for i=1:19
tn=str(i,:);
text(x(i),y(i),tn,'fontsize',12);
end
result1=[0 0];
result2=[0 0];
result3=[];
panduan=zeros(2,19);
k1=[0 0];
k2=[0 0];
sum=0;
min_result=50000;
for p=1:11
for m=1:6
for n=1:11
for o=1:6
k1(1)=p;
k1(2)=m;
k2(1)=n;
k2(2)=o;
if(p==n&&m==o)
break;
end
sum=0;
panduan=zeros(2,19);
for i=1:19
[a,b]=min([(abs(k1(1)-x(i))+abs(k1(2)-y(i))) (abs(k2(1)-x(i))+abs(k2(2)-y(i)))]);
panduan(b,i)=1;
end
for j=1:19
sum=sum+(abs(k1(1)-x(j))+abs(k1(2)-y(j)))*value(j)*panduan(1,j)+(abs(k2(1)-x(j))+abs(k2(2)-y(j)))*value(j)*panduan(2,j);
end
if(min_result>sum)
min_result=sum;
result1=[k1(1) k1(2)];
result2=[k2(1) k2(2)];
result3=panduan;
end
end
end
end
end
figure(2);
scatter(x,y,400,'.');
for i=1:19
tn=str(i);
text(x(i),y(i),tn,'fontsize',12);
end
grid on;
hold on;
for p=1:19
if(result3(1,p)==1)
plot([x(p) result1(1)],[y(p) result1(2)]);
else
plot([x(p) result2(1)],[y(p) result2(2)]);
end
end
3、三站求解
clc;
close all;
clear all;
str=['A( 0,3)'; 'B( 0,5)'; 'D( 2,1)'; 'C( 2,4)'; 'E( 4,5)'; 'T( 4,3)'; 'F( 3,0)'; 'I( 5,1)'; 'H( 6,3)'; 'G( 6,5)'; 'L( 7,2)'; 'M( 7,0)'; 'P( 8,0)'; 'K( 8,4)'; 'Q( 9,1)'; 'O( 9,3)'; 'J( 9,5)'; 'S(11,1)'; 'R(11,3)'];
x=[0 0 2 2 3 4 4 5 6 6 7 7 8 8 9 9 9 11 11];
y=[3 5 1 4 0 3 5 1 3 5 2 0 0 4 1 3 5 1 3];
value=[15 10 9 8 14 6 5 7 12 12 13 14 8 16 9 12 9 15 16];
scatter(x,y,400,'.');
grid on;
for i=1:19
tn=str(i,:);
text(x(i),y(i),tn,'fontsize',12);
end
result1=[0 0];
result2=[0 0];
result3=[0 0];
result4=[];
panduan=zeros(3,19);
k1=[0 0];
k2=[0 0];
k3=[0 0];
sum=0;
min_result=50000;
for p=1:11
for m=1:6
for n=1:11
for o=1:6
for t=1:11
for e=1:6
k1(1)=p;
k1(2)=m;
k2(1)=n;
k2(2)=o;
k3(1)=t;
k3(2)=e;
if((p==n&&m==o)||(p==t&&m==e)||(n==t&&o==e))
break;
end
sum=0;
panduan=zeros(3,19);
for i=1:19
[a,b]=min([(abs(k1(1)-x(i))+abs(k1(2)-y(i))) (abs(k2(1)-x(i))+abs(k2(2)-y(i))) (abs(k3(1)-x(i))+abs(k3(2)-y(i)))]);
panduan(b,i)=1;
end
for j=1:19
sum=sum+(abs(k1(1)-x(j))+abs(k1(2)-y(j)))*value(j)*panduan(1,j)+(abs(k2(1)-x(j))+abs(k2(2)-y(j)))*value(j)*panduan(2,j)+(abs(k3(1)-x(j))+abs(k3(2)-y(j)))*value(j)*panduan(3,j);
end
if(min_result>sum)
min_result=sum;
result1=[k1(1) k1(2)];
result2=[k2(1) k2(2)];
result3=[k3(1) k3(2)];
result4=panduan;
end
end
end
end
end
end
end
figure(2);
scatter(x,y,400,'.');
for i=1:19
tn=str(i);
text(x(i),y(i),tn,'fontsize',12);
end
grid on;
hold on;
for p=1:19
if(result4(1,p)==1)
plot([x(p) result1(1)],[y(p) result1(2)]);
end
if(result4(2,p)==1)
plot([x(p) result2(1)],[y(p) result2(2)]);
end
if(result4(3,p)==1)
plot([x(p) result3(1)],[y(p) result3(2)]);
end
end
4、站址优化
clc;
close all;
clear all;
x=0:400;
k=[1 2 3];
b=[892 602 488];
hold on;
for i=1:3
plot(x,k(i).*x+b(i));
end
xlabel('f');ylabel('L');