基本粒子群优化算法(PSO)的matlab实现

粒子群优化算法是一种模拟鸟群社会行为的群体搜素算法。它分为全局最佳粒子优化和局部最佳粒子优化,对于全局最佳PSO,或者叫做gbest PSO,每个粒子的邻域都是整个群,其算法伪代码如下:



创建并初始化一个n维的粒子群

repeat

for 每个粒子i=1,2,…n do

//设置个体最佳位置

if f(i)<y then

y=f(i);

end

//设置全局最佳位置

if y<Y then

Y=y;

end

end

for 每个粒子i=1,2,…n do

用速度方程更新速度

用位置方程更新位置

end

until 满足终止条件



gbest PSO的matlab实现代码如下:



tic   %该函数表示计时开始

%------初始格式化--------------------------------------------------

clear all;

clc;

format long;

%------给定初始化条件----------------------------------------------

c1=1.4962;             %加速常数即学习因子1

c2=1.4962;             %加速常数即学习因子2

w=0.7298;              %惯性权重

MaxDT=10000;           %最大迭代次数

D=10;                  %搜索空间维数(测试函数sphere中未知数个数)

N=40;                  %初始化群体个体数目

eps=10^(-7);           %设置精度(在已知最小值时候用)

%------初始化种群的个体(可以在这里限定位置和速度的范围)------------

for i=1:N

for j=1:D

x(i,j)=randn;  %产生一个服从正态分布的随机数作为初始化位置

v(i,j)=randn;  %产生一个服从正态分布的随机数作为初始化速度

end

end

%------先计算各个粒子的适应度,并初始化个体最优位置y和全局最优位置Pg--------

for i=1:N

p(i)=sphere(x(i,:),D);%计算适应度,测试函数为sphere

y(i,:)=x(i,:);    %初始化个体最优位置y为在时间步t=0时的粒子位置

end

Pg=x(1,:);             %Pg为全局最优位置

for i=2:N

if sphere(x(i,:),D)<sphere(Pg,D)

Pg=x(i,:);%更新全局最优位置

end

end

%------进入主要循环,按照公式依次迭代,直到满足精度要求------------

for t=1:MaxDT

for i=1:N

v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(Pg-x(i,:));

x(i,:)=x(i,:)+v(i,:);

if sphere(x(i,:),D)<p(i)

p(i)=sphere(x(i,:),D);%更新适应度

y(i,:)=x(i,:);%更新个体最佳位置

end

if p(i)<sphere(Pg,D)

Pg=y(i,:);%更新群体最佳位置

end

end

Pbest(t)=sphere(Pg,D);%保存每一代的群体最佳位置

end

toc %该函数表示计时结束

%------最后给出计算结果

disp(‘*************************************************************‘)

disp(‘函数的全局最优位置为:‘)

for i=1:D

fprintf(‘x(%d)=%s\n‘,i,Pg(i));

end

fprintf(‘最后得到的优化极值为:%s\n‘,sphere(Pg,D));

disp(‘*************************************************************‘)



sphere函数如下:



%适应度函数源程序(sphere.m)

%参数x为变量名,参数D为维数

function result=sphere(x,D)

sum=0;

for i=1:D

sum=sum+x(i)^2;

end

result=sum;



程序运行结果:

Elapsed time is 2.943799 seconds.

*************************************************************

函数的全局最优位置为:

x(1)=6.654911e-009

x(2)=5.739281e-009

x(3)=-3.207077e-009

x(4)=-1.107863e-011

x(5)=9.756758e-009

x(6)=6.682152e-009

x(7)=-2.828295e-010

x(8)=2.533800e-009

x(9)=3.868910e-009

x(10)=1.740554e-009

最后得到的优化极值为:2.518562e-016

*************************************************************

从运行结果可以看出,程序运行时间约为3秒,找到的sphere函数的最小值点接近0,在坐标原点附近,符合预期结果。

时间: 2024-11-24 03:03:03

基本粒子群优化算法(PSO)的matlab实现的相关文章

粒子群优化算法PSO及matlab实现

算法学习自:MATLAB与机器学习教学视频 1.粒子群优化算法概述 粒子群优化(PSO, particle swarm optimization)算法是计算智能领域,除了蚁群算法,鱼群算法之外的一种群体智能的优化算法,该算法最早由Kennedy和Eberhart在1995年提出的,该算法源自对鸟类捕食问题的研究. • PSO算法首先在可行解空间中初始化一群粒子,每个粒子都代表极值优化问题的一个潜在最优解,用位置.速度和适应度值三项指标表示该粒子特征. • 粒子在解空间中运动,通过跟踪个体极值Pb

粒子群优化算法(PSO)

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

粒子群优化算法(PSO)找最优解

关于粒子群优化算法(PSO)的解释:http://blog.csdn.net/myarrow/article/details/51507671 (等网上各种参考资料) 用PSO找函数极值. function [ f ] = fun( x, y ) %UNTITLED2 此处显示有关此函数的摘要 % 此处显示详细说明 a = 50; b = 50; f = (x-a)^2 + (y-b)^2; end 构造了一个二元函数,很明显,有极小值,在(50, 50). 用五个粒子去找.每个点对应的函数输出

粒子群优化算法

2011-12-05 19:49:55 标签:群智能 休闲 蚁群优化 粒群优化 粒子群优化 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://nxlhero.blog.51cto.com/962631/734212 粒子群优化算法属于群智能(swarm intelligence)优化算法.群智能分两种,一种是粒群优化,另一种是蚁群优化. 群智能概念 假设你和你的朋友正在寻宝,每个人有个探测器,这个探测器可以知道宝藏到探测器的距离

粒子群优化算法简介

好好学数学. 一.问题来源 经朋友介绍,接了一份工作,就是做PSO及其优化,恰好我导师也研究这个,刚开学也有接触,那我就接了.......赚点生活费. 欢迎大家和我联系做算法类项目,QQ:791909235,Tel:13137910179. 二.背景介绍 2.1 人工生命 人工生命:研究具有某些生命基本特征的人 工系统.包括两方面的内容: 1.研究如何利用计算技术研究生物现象: 2. 研究如何利用生物技术研究计算问题. 我们关注的是第二点.已有很多源于生物现象的计算技巧,例如神经网络和遗传算法.

【CI】一种多尺度协同变异的微粒群优化算法

[论文标题]一种多尺度协同变异的微粒群优化算法 (2010) [论文作者]陶新民,刘福荣, 刘  玉 , 童智靖 [论文链接]Paper(14-pages) [摘要] 分析了变异操作对微粒群算法(PSO)的影响,针对变异单一,收敛速度慢,易陷入局部极小点等缺点,提出一种新的多尺度协同变异的粒子群优化算法,并证明了该算法以概率 1 收敛到全局最优解.该算法采用多尺度高斯变异机制实现局部解逃逸.在算法的初期阶段,利用大尺度变异及均匀变异算子能够实现全局最优解空间的快速定位,随着适应值的提升变异尺度会

量子粒子群优化算法

参考文献: 量子行为粒子群优化算法研究[D] ,孙俊,博士论文2.4节. #include <iostream> #include <math.h> #include <time.h> using namespace std; #define M 50 //群体数目50 #define N 4 //每个粒子的维数4 //测试类 class TestFunction { public: double resen(double x1,double x2,double x3,

粒子群优化算法及其java实现

憋了两周终于把开题报告憋出来了,再一次证明自己不适合搞学术,哎--,花了点时间把报告中提到的粒子群算法看了看,看了些资料,用java跑起来. 算法简介 粒子群算法最先由Barnhart博士和Kennedy博士于1995 年提出,是一种源于对鸟群捕食行为的研究而发明的进化计算技术,原理是模仿鸟群寻觅食物的搜索过程,设想鸟群在一定区域搜寻食物,在不知道食物确切位置的情况下,鸟群依靠群体中个体判断距离食物的远近程度来调节飞行方向和飞行速度,最终通过群体的经验和自身记忆的智慧找到食物. 算法原理 算法描

粒子群优化算法-python实现

PSOIndividual.py 1 import numpy as np 2 import ObjFunction 3 import copy 4 5 6 class PSOIndividual: 7 8 ''' 9 individual of PSO 10 ''' 11 12 def __init__(self, vardim, bound): 13 ''' 14 vardim: dimension of variables 15 bound: boundaries of variables