优化算法Tent混沌映射的粒子群算法含Matlab源码 940期

Posted 紫极神光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优化算法Tent混沌映射的粒子群算法含Matlab源码 940期相关的知识,希望对你有一定的参考价值。

一、简介

1 粒子群算法的概念
粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation)。源于对鸟群捕食的行为研究。粒子群优化算法的基本思想:是通过群体中个体之间的协作和信息共享来寻找最优解.
PSO的优势:在于简单容易实现并且没有许多参数的调节。目前已被广泛应用于函数优化、神经网络训练、模糊系统控制以及其他遗传算法的应用领域。

2 粒子群算法分析
2.1基本思想
粒子群算法通过设计一种无质量的粒子来模拟鸟群中的鸟,粒子仅具有两个属性:速度和位置,速度代表移动的快慢,位置代表移动的方向。每个粒子在搜索空间中单独的搜寻最优解,并将其记为当前个体极值,并将个体极值与整个粒子群里的其他粒子共享,找到最优的那个个体极值作为整个粒子群的当前全局最优解,粒子群中的所有粒子根据自己找到的当前个体极值和整个粒子群共享的当前全局最优解来调整自己的速度和位置。下面的动图很形象地展示了PSO算法的过程:

2 更新规则
PSO初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次的迭代中,粒子通过跟踪两个“极值”(pbest,gbest)来更新自己。在找到这两个最优值后,粒子通过下面的公式来更新自己的速度和位置。

公式(1)的第一部分称为【记忆项】,表示上次速度大小和方向的影响;公式(1)的第二部分称为【自身认知项】,是从当前点指向粒子自身最好点的一个矢量,表示粒子的动作来源于自己经验的部分;公式(1)的第三部分称为【群体认知项】,是一个从当前点指向种群最好点的矢量,反映了粒子间的协同合作和知识共享。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。以上面两个公式为基础,形成了PSO的标准形式。

公式(2)和 公式(3)被视为标准PSO算法。
3 PSO算法的流程和伪代码

二、源代码

%_________________________________________________________________________%
% 基于Tent混沌映射改进的粒子群优化算法             %
%_________________________________________________________________________%

% 使用方法
%__________________________________________
% fobj = @YourCostFunction        设定适应度函数
% dim = number of your variables   设定维度
% Max_iteration = maximum number of generations 设定最大迭代次数
% SearchAgents_no = number of search agents   种群数量
% lb=[lb1,lb2,...,lbn] where lbn is the lower bound of variable n  变量下边界
% ub=[ub1,ub2,...,ubn] where ubn is the upper bound of variable n   变量上边界
clear all
clc
close all
SearchAgents_no=10; % 种群数量
Function_name='F4'; % Name of the test function that can be from F1 to F23 (Table 1,2,3 in the paper) 设定适应度函数
Vmax=5;%速度上限
Vmin=-5;%速度下限
Max_iteration=50;% 进化次数
a=0.5;%混沌系数
c1 = 1.49445;%个体学习率
c2 = 1.49445;%群体学习率
% Load details of the selected benchmark function
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);  %设定边界以及优化函数
%lb%粒子最小值
%ub%粒子最大值
%dim%粒子维数
[Best_pos_tent,pso_curve_tent,Best_score_tent]=psoNew(SearchAgents_no,Max_iteration,lb,ub,dim,fobj,Vmax,Vmin,a,c1,c2); %tent混沌粒子群
[Best_pos,pso_curve,Best_score]=pso(SearchAgents_no,Max_iteration,lb,ub,dim,fobj,Vmax,Vmin,c1,c2); %基本粒子群

figure('Position',[269   240   660   290])
%Draw search space
subplot(1,2,1);
func_plot(Function_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])

%Draw objective space
subplot(1,2,2);
plot(pso_curve_tent,'Color','r')
hold on;
plot(pso_curve,'Color','b')
title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');

axis tight
grid on
box on
 
%
display(['The best solution obtained by Tent混沌策略PSO is : ', num2str(Best_pos_tent)]);
display(['The best optimal value of the objective funciton found by Tent混沌策略PSO is : ', num2str(Best_score_tent)]);
display(['The best solution obtained by PSO is : ', num2str(Best_pos)]);
display(['The best optimal value of the objective funciton found by Tent混沌策略PSO is : ', num2str(Best_score)]);

三、运行结果

四、备注及代码

版本:2014a

以上是关于优化算法Tent混沌映射的粒子群算法含Matlab源码 940期的主要内容,如果未能解决你的问题,请参考以下文章

优化求解基于tent混沌改进粒子群优化算法

优化算法粒子群算法和混沌搜索协同优化算法含Matlab源码 1299期

优化算法Tent映射的混合灰狼优化算法含Matlab源码 1570期

优化算法Tent映射的混合灰狼优化算法含Matlab源码 1570期

优化预测基于matlab混沌粒子群算法优化极限学习机ELM预测含Matlab源码 1586期

单目标优化求解基于matlab粒子群混沌混合蝴蝶优化算法求解最优目标问题(HPSOBOA)含Matlab源码 1538期