接着上篇文章继续,之前记录的是视频课的前面两节课,分别介绍了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