clc;
clear;
close all;
warning off;
addpath(genpath(pwd));
load('Weight_mat.mat')
load('trainset.mat')
load('testset.mat')
var_num=71;
VarSize=[1 var_num];
VarMin=-5;
VarMax= 5;
%PSO Parameters
max_epoch=50;
ini_pop=25;
% Constriction Coefficients
phi1=2.1;
phi2=2.1;
phi=phi1+phi2;
khi=2/(phi-2+sqrt(phi^2-4*phi));
w=khi; % Inertia Weight
wdamp=0.99; % Inertia Weight Damping Ratio
c1=khi*phi1; % Personal Learning Coefficient
c2=khi*phi2; % Global Learning Coefficient
% Velocity Limits
VelMax=0.1*(VarMax-VarMin);
VelMin=-VelMax;
% Initialization
empty_particle.Position=[];
empty_particle.Cost=[];
empty_particle.Velocity=[];
empty_particle.Best.Position=[];
empty_particle.Best.Cost=[];
particle=repmat(empty_particle,ini_pop,1);
GlobalBest.Cost=inf;
Cost_Test= zeros(50,1);
for i=1:ini_pop
% Initialize Position
particle(i).Position= WEIGHTS(i ,:);
% Initialize Velocity
particle(i).Velocity=zeros(VarSize);
% Evaluation
particle(i).Cost=mape_calc(particle(i).Position,trainset);
Cost_Test(i)=mape_calc(particle(i).Position,testset);
% Update Personal Best
particle(i).Best.Position=particle(i).Position;
particle(i).Best.Cost=particle(i).Cost;
% Update Global Best
if particle(i).Best.Cost<GlobalBest.Cost
GlobalBest=particle(i).Best;
end
end
BestCost_Train=zeros(max_epoch,1);
BestCost_Test=zeros(max_epoch,1);
[~, SortOrder]=sort(Cost_Test);
Cost_Test =Cost_Test(SortOrder);
% PSO Main Loop
for it=1:max_epoch
for i=1:ini_pop
% Update Velocity
particle(i).Velocity = w*particle(i).Velocity ...
+c1*rand(VarSize).*(particle(i).Best.Position-particle(i).Position) ...
+c2*rand(VarSize).*(GlobalBest.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;
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 = mape_calc(particle(i).Position,trainset);
for l= 1:ini_pop
Cost_Test(l)=mape_calc(particle(l).Position,testset);
end
[~, SortOrder]=sort(Cost_Test);
Cost_Test =Cost_Test(SortOrder);
BestCost_Test(it) = Cost_Test(1);
% 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;
% Update Global Best
if particle(i).Best.Cost<GlobalBest.Cost
GlobalBest=particle(i).Best;
end
end
end
BestCost_Train(it)=GlobalBest.Cost;
disp(['epochs ' num2str(it) ', cost on train data = ' num2str(BestCost_Train(it)) ', cost on test data = ' num2str(BestCost_Test(it))]);
w=w*wdamp;
end
% Results
figure;
plot(BestCost_Train,'LineWidth',2);
xlabel('epochs');
ylabel('train costs');
grid on;
figure;
plot(BestCost_Test,'LineWidth',2);
xlabel('epochs');
ylabel('test costs');
grid on;
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
通过PSO优化神经网络权值的matlab仿真+含代码操作演示视频 运行注意事项:使用matlab2021a或者更高版本测试,运行里面的Runme.m文件,不要直接运行子函数文件。运行时注意matlab左侧的当前文件夹窗口必须是当前工程所在路径。具体可观看提供的操作录像视频跟着操作。
资源推荐
资源详情
资源评论
收起资源包目录
通过PSO优化神经网络权值的matlab仿真.rar (6个子文件)
7_通过PSO优化神经网络权值的matlab仿真
main.m 4KB
操作录像0008.avi 66.77MB
mape_calc.m 561B
trainset.mat 53KB
testset.mat 7KB
weight_mat.mat 5KB
共 6 条
- 1
资源评论
- m0_711513982022-06-09用户下载后在一定时间内未进行评价,系统默认好评。
- csdd1235622024-01-11总算找到了想要的资源,搞定遇到的大问题,赞赞赞!
fpga和matlab
- 粉丝: 17w+
- 资源: 2621
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Visual Basic .Net及Python技术的学校需求解决方案设计源码
- 基于Java语言的Web开发学习Demo设计源码
- 基于Java的医院排队叫号系统界面原型设计源码
- 基于Java语言的Himalaya仿喜马拉雅设计源码
- 基于PHP+HTML+CSS+JavaScript的智能电车管家设计源码
- 基于Emscripten编译的纯H5直播流播放器jessibuca设计源码
- 基于react-native的Android隐私合规配置与代码集成设计源码
- 基于JavaFX技术的全功能色彩管理器设计源码
- erlang-21.3-1.el7.x86-64.rpm
- eclipse-inst-jre-win64.exe
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功