700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【布局优化】基于粒子群算法求解集线器位置分配问题附matlab代码

【布局优化】基于粒子群算法求解集线器位置分配问题附matlab代码

时间:2020-01-07 16:25:26

相关推荐

【布局优化】基于粒子群算法求解集线器位置分配问题附matlab代码

1 内容介绍

​本文基于MATLAB软件结合粒子群算法,实现了粒子群算法中粒子的适应度计算,极大的减少了优化计算耗时,对适应度计算较为耗时的优化计算,有着明显的效果;最后本文采用粒子群优化算法优化计算了集线器位置分配仿真证明粒子群算法可以极大的减少优化耗时.

2 仿真代码

function sol=ParseSolution(xhat,model)

N=model.N;

P=model.P;

c=model.c;

alpha=model.alpha;

f=model.f;

r=model.r;

xii=diag(xhat)';

if any(xii>=0.5)

[~, so]=sort(xii,'descend');

nHub=0;

for i=so

if xii(i)<0.5 || nHub>=P

break;

end

xii(i)=1;

nHub=nHub+1;

end

xii(xii<1)=0;

else

[~, imax]=max(xii);

xii(:)=0;

xii(imax)=1;

end

Hubs=find(xii==1);

x=xhat;

for i=1:N

if xii(i)==0

x(i,:)=0;

else

x(:,i)=0;

x(i,i)=1;

end

end

h=zeros(1,N);

for i=1:N

XI=x(:,i);

XI(xii==0)=-inf;

[~, h(i)]=max(XI);

x(:,i)=0;

x(h(i),i)=1;

end

oc=zeros(N,N);

for i=1:N

for j=1:N

if i==j

oc(i,j)=0;

else

k=h(i);

l=h(j);

oc(i,j)=c(i,k)+alpha*c(k,l)+c(l,j);

end

end

end

ocr=oc.*r;

SumOCR=sum(ocr(:));

xiif=xii.*f;

SumXF=sum(xiif);

TotalCost=SumOCR+SumXF;

sol.x=x;

sol.h=h;

sol.Hubs=Hubs;

sol.SumOCR=SumOCR;

sol.SumXF=SumXF;

sol.TotalCost=TotalCost;

end

3 运行结果

4 参考文献

[1]王光源, 徐鹏飞, 赵勇. 基于粒子群优化算法求解火力分配问题[J]. 舰船电子工程, , 33(11):34-36.

[2]侯志荣, 吕振肃. 基于MATLAB的粒子群优化算法及其应用[J]. 计算机仿真, , 20(10):3.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。