【PSO算法学习笔记2】matlab学习之路

博客详细介绍了如何对粒子群优化算法(PSO)的代码进行优化,提高代码的复用性和可读性。首先,将PSO问题封装为一个独立函数,通过调整函数参数来改变问题设置。然后,通过添加速度和位置的边界判断,确保解的合法性。最后,引入带收缩系数的PSO模型,调整相关参数以提升算法性能,并展示了改进后的算法迭代效果。代码示例和运行结果表明,优化后的算法在保持相似性能的同时,代码更简洁且易于维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接着上篇文章继续,之前记录的是视频课的前面两节课,分别介绍了PSO算法的内容,以及代码设计,虽然这个代码可以实现优化,但是却不够简洁,代码的重复利用度不高。最后一节课就是对基本编码的优化。

代码的优化

前面基础设计,可以看出每次循环问题都有着5个模块,那么是否可以将PSO问题抽离出来,设计成一个函数,这样想要更改问题的参数直接更改函数的参数即可,不用打开代码一个个进行修改。
首先设计一个PSO函数,使其包含问题,和参数属性

function out = PSO (problem,params)

problem中的属性


CostFunction = problem.CostFunction;   %目标函数可以更改

nVar = problem.nVar;                          %决策变量的个数

VarSize = [1 nVar];                %决策变量的矩阵大小

VarMin = problem.VarMin;
VarMax = problem.VarMax;                    %变量的上下界

params的属性

%% Parameters of PSO

MaxIt = params.MaxIt;        %最大迭代次数
nPop = params.nPop;         %种群个数
w = params.w;
wdamp=params.wdamp;         %阻尼惯性系数
c1 = params.c1;
c2 = params.c2;         %公式里面的系数
% 在命令行窗口显示迭代信息,true显示,fals
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值