clc;
clear;
close all;
%% Problem Definition
load('phlap_20.mat'); % Load Model
CostFunction=@(xhat) MyCost(xhat,model); % Cost Function
VarSize=[model.N model.N]; % Decision Variables Matrix Size
nVar=prod(VarSize); % Number of Decision Variables
VarMin=0; % Lower Bound of Decision Variables
VarMax=1; % Upper Bound of Decision Variables
%% PSO Parameters
MaxIt=250; % Maximum Number of Iterations
nPop=150; % Population Size (Swarm Size)
w=1; % Inertia Weight
wdamp=0.99; % Inertia Weight Damping Ratio
c1=1.5; % Personal Learning Coefficient
c2=2.0; % Global Learning Coefficient
% Velocity Limits
VelMax=0.1*(VarMax-VarMin);
VelMin=-VelMax;
%% Initialization
empty_particle.Position=[];
empty_particle.Cost=[];
empty_particle.Sol=[];
empty_particle.Velocity=[];
empty_particle.Best.Position=[];
empty_particle.Best.Cost=[];
empty_particle.Best.Sol=[];
particle=repmat(empty_particle,nPop,1);
BestSol.Cost=inf;
for i=1:nPop
% Initialize Position
particle(i).Position=unifrnd(VarMin,VarMax,VarSize);
% Initialize Velocity
particle(i).Velocity=zeros(VarSize);
% Evaluation
[particle(i).Cost, particle(i).Sol]=CostFunction(particle(i).Position);
% Update Personal Best
particle(i).Best.Position=particle(i).Position;
particle(i).Best.Cost=particle(i).Cost;
particle(i).Best.Sol=particle(i).Sol;
% Update Global Best
if particle(i).Best.Cost<BestSol.Cost
BestSol=particle(i).Best;
end
end
BestCost=zeros(MaxIt,1);
%% PSO Main Loop
for it=1:MaxIt
for i=1:nPop
% Update Velocity
particle(i).Velocity = w*particle(i).Velocity ...
+c1*rand(VarSize).*(particle(i).Best.Position-particle(i).Position) ...
+c2*rand(VarSize).*(BestSol.Position-particle(i).Position);
% Apply Velocity Limits
particle(i).Velocity = max(particle(i).Velocity,VelMin);
particle(i).Velocity = min(particle(i).Velocity,VelMax);
% Update Position
particle(i).Position = particle(i).Position + particle(i).Velocity;
% Velocity Mirror Effect
IsOutside=(particle(i).Position<VarMin | particle(i).Position>VarMax);
particle(i).Velocity(IsOutside)=-particle(i).Velocity(IsOutside);
% Apply Position Limits
particle(i).Position = max(particle(i).Position,VarMin);
particle(i).Position = min(particle(i).Position,VarMax);
% Evaluation
[particle(i).Cost, particle(i).Sol] = CostFunction(particle(i).Position);
% Mutation
NewParticle=particle(i);
NewParticle.Position=Mutate(particle(i).Position, model);
[NewParticle.Cost, NewParticle.Sol]=CostFunction(NewParticle.Position);
if NewParticle.Cost<=particle(i).Cost || rand < 0.1
particle(i)=NewParticle;
end
% Update Personal Best
if particle(i).Cost<particle(i).Best.Cost
particle(i).Best.Position=particle(i).Position;
particle(i).Best.Cost=particle(i).Cost;
particle(i).Best.Sol=particle(i).Sol;
% Update Global Best
if particle(i).Best.Cost<BestSol.Cost
BestSol=particle(i).Best;
end
end
end
% Local Search based on Mutation
for k=1:3
NewParticle=BestSol;
NewParticle.Position=Mutate(BestSol.Position, model);
[NewParticle.Cost, NewParticle.Sol]=CostFunction(NewParticle.Position);
if NewParticle.Cost<=BestSol.Cost
BestSol=NewParticle;
end
end
BestCost(it)=BestSol.Cost;
disp(['Iteration ' num2str(it) ': Best Cost = ' num2str(BestCost(it))]);
w=w*wdamp;
% Plot Best Solution
figure(1);
PlotSolution(BestSol.Sol,model);
pause(0.01);
end
%% Results
figure;
plot(BestCost,'LineWidth',2);
xlabel('Iteration');
ylabel('Best Cost');
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
CSDN海神之光上传的全部代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:pso.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,可私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开pso.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博主博客文章底部QQ名片; 4.1 CSDN博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 智能优化算法物流选址问题系列程序定制或科研合作方向: 4.4.1 遗传算法GA/蚁群算法ACO物流选址 4.4.2 粒子群算法PSO物流选址问题 4.4.3 灰狼算法GWO/狼群算法WPA物流选址问题 4.4.4 鲸鱼算法WOA/麻雀算法SSA物流选址问题 4.4.5 萤火虫算法FA/差分算法DE物流选址问题
资源推荐
资源详情
资源评论






















收起资源包目录












共 10 条
- 1


海神之光
- 粉丝: 6w+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 云南大学网络课多媒体技术基础作业.doc
- 考虑品种差异的冷鲜猪肉含水率高光谱信号补正算法.pdf
- 网络安全宣传周节目收获感悟8篇.docx
- 数据库安全审计建设立项申请报告【模板范本】.pdf
- 计算机中级培训学习心得.docx
- 上海大学数据库上机作业上机练习5作业.doc
- C#期末试卷B.pdf
- 2022年福建省施工企业三类人员网络继续教育培训班测试题课件.doc
- 软件等保二级基本要求.doc
- 中华建设咨询网-网站首页.pptx
- 项目管理培训课程五大过程九大知识ppt课件.ppt
- 基于单片机的矿井瓦斯监测系统的设计.doc
- 网络与信息安全保密总体方案及策略.docx
- 西门子S7-SCL编程与应用.ppt
- 基于网络消费文化的体验营销研究毕业论文.doc
- 微课制作——录屏软件的使用方式技巧.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

- 1
- 2
前往页