目录

前言

1.粒子群算法寻优

1.1 求目标函数最大值

1.2 求目标函数最小值

2.遗传算法寻优


前言

个人认为粒子群算法和遗传算法思想都很接近,都是一个通过对比去寻找最优解的过程,如果对比我比你的"好",那么我便取代你的思想。

遗传算法的主要步骤为初始化、编码、通过比叫去选择和交叉以及变异几个过程。

粒子群算法的主要步骤为初始化、粒子速度和位置更新、通过比对极值更新几个过程。

Pi表示个体极值位置更新(所有粒子自己本身在迭代过程中搜索的位置,如:第i个粒子在迭代中的数据为Pi(i,:)),Pg表示群体极值位置(1个粒子),Xi表示当代种群所有粒子的位置。

注:应该先速度更新,再位置更新!

下面我们采用同一个例子对其求最大值和最小值的分析

1.粒子群算法寻优

由于粒子群需要初始化位置和速度,这里暂定位置范围/x自变量取值范围为[pi/2  10],速度[-0.5 0.5],这里采用动态惯性权重,推荐读者先把我的上篇文章进行阅读:

粒子群算法PSO求解最大值和最小值案例(超详细注释)_Mr. 邹的博客-CSDN博客

1.1 求目标函数最大值

适应度函数:

function y = fobj(x)
%x    输入粒子的位置
%y    输出粒子适应度值
y = -5*sin(x(1))*sin(x(2))*sin(x(3))*sin(x(4))*sin(x(5))-...
sin(5*x(1))*sin(5*x(2))*sin(5*x(3))*sin(5*x(4))*sin(5*x(5))+8;

主程序(运行文件):

clear all
clc
%参数
p = struct('popsize',50,'T',500,'c1',2,'c2',2,'w_init',0.9,'w_end',0.4,'vmax',0.5,'vmin',-0.5);
lb = pi/2;ub = 10;%位置范围
dim = 5;       %维度/变量个数
N = p.popsize; %种群大小/规模
T = p.T;       %迭代/搜索次数
c1 = p.c1;     %个体加速度因子
c2 = p.c2;     %群体加速度因子
% 初始化
v = rand(N,dim);%定义初始时刻粒子速度为0
%  v = p.vmax*rand(N,dim);%不定义为0也可以
x = (ub - lb)*rand(N,dim) + lb;%初始化粒子位置
for i = 1:Nfitness(i) = fobj(x(i,:));%取目标函数为适应度函数
end
[bestf,index] = max(fitness);%求目标函数最小值,也是适应度函数的最小值
gbest = x(index,:);%全局最优的一个粒子位置
pbest = x;%pbest指当代所有粒子的位置
pfitness = fitness;%个体适应度值,即将所有粒子的位置代入适应度函数求得
% 迭代寻优
t = 1;
while t<T% 计算惯性因子w = (p.w_init - p.w_end)*(T-t)/T + p.w_end;for i = 1:N% 更新速度v(i,:) = w*v(i,:) + c1*rand*(pbest(i,:) - x(i,:)) + c2*rand*(gbest - x(i,:));Flagvmax = v(i,:)>p.vmax;Flagvmin = v(i,:)<p.vmin;v(i,Flagvmax) = p.vmax;v(i,Flagvmin) = p.vmin;% 更新位置x(i,:) = x(i,:) + v(i,:);Flagub = x(i,:)>ub;Flaglb = x(i,:)<lb;v(i,Flagub) = ub;v(i,Flaglb) = lb;end% 计算适应度值for i = 1:Nfitness(i) = fobj(x(i,:));end% 更新gbestif bestf < max(fitness)[bestf,index] = max(fitness);gbest = x(index,:);end% 更新pbestfor i = 1:Nif pfitness(i) < fitness(i)pfitness(i) = fitness(i);pbest(i,:) = x(i,:);endendC(t) = bestf;t = t+1;
end
plot(C)

寻优结果:

1.2 求目标函数最小值

只需将上述程序稍作修改即可:

[bestf,index] = min(fitness);%求目标函数最小值,也是适应度函数的最小值if bestf > min(fitness)%如果前一代找到的最优解>当前种群中某个最小值,那么当前最优值取为该最小值[bestf,index] = min(fitness);if pfitness(i) > fitness(i)

2.遗传算法寻优

在上篇博客上已经介绍,这里不再复述了

遗传算法、遗传算法库函数ga和gamultiobj、遗传算法工具箱GADS实例介绍_Mr. 邹的博客-CSDN博客

粒子群算法和遗传算法求多元函数的最大值、最小值对比相关推荐

  1. 【图像分割】利用粒子群算法与遗传算法实现图像的自适应多阈值的快速分割

    文章目录 前言 一.自适应多阈值分割 1.最大类间差方法 2.最大熵方法 二.代码部分(以粒子群算法与遗传算法优化自适应双阈值分割为例) 1. 利用粒子群算法优化最大类间差双阈值分割 1.1 概述 1 ...

  2. 演化计算(蚁群算法、粒子群算法、遗传算法、演化规则......)

    演化计算(蚁群算法.粒子群算法.遗传算法.演化规则......) 1.概念 2.传统算法和演化计算 3.一般步骤 1.概念   演化计算主要用于解决预测优化问题.由于演化计算利用一组解求解,所以这一组 ...

  3. 优化算法:粒子群算法,遗传算法,差分进化算法

    目录 1.粒子群算法(PSO) 2.遗传算法 3.差分进化算法 1.粒子群算法(PSO) 整个粒子群优化算法的算法框架如下: step1种群初始化,可以进行随机初始化或者根据被优化的问题设计特定的初始 ...

  4. 数学建模国赛 常考赛题类型(模拟退火算法、粒子群算法、遗传算法)

    不知小伙伴们有没有发现,在1992~2020年历年国赛赛题中,优化类赛题所占的比例非常大,如在近五年的题目中: 2016A:系泊系统的设计: 2017B:"拍照赚钱"的任务定价 2 ...

  5. 【ELM数据预测】基于matlab粒子群算法优化ELM数据预测(含前后对比)【含Matlab源码 449期】

    一.粒子群算法优化极限学习机ELM简介 PSO-ELM优化算法预测模型 ELM模型在训练之前可以随机产生ω和b, 只需要确定隐含层神经元个数及隐含层神经元激活函数, 即可实现ELM预测模型的构建.在E ...

  6. 粒子群算法和遗传算法的比较 退火算法

    粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation).源于对鸟群捕食的行为研究.粒子群优化算法的基本 ...

  7. 计算机视觉与深度学习 | 粒子群算法与遗传算法(GA)及与蚁群算法(ACO)比较

    ================================================ 博主github:https://github.com/MichaelBeechan 博主CSDN:h ...

  8. 美赛 8:模拟退火算法、遗传算法、粒子群算法(智能算法篇)

    目录 一.模拟退火算法(Simulated annealing algorithm,SA) 1.SA的基本理论 2.SA求解函数最值 3.SA工具箱 二.遗传算法(Genetic Algorithm, ...

  9. C语言实现粒子群算法(PSO)一

    C语言实现粒子群算法(PSO)一 最近在温习C语言,看的书是<C primer Plus>,忽然想起来以前在参加数学建模的时候,用过的一些智能算法,比如遗传算法.粒子群算法.蚁群算法等等. ...

最新文章

  1. 超20亿!2018年国家自然科学基金(重点项目)出炉!
  2. 架构师之路 — 数据库设计 — 关系型数据库应用程序设计
  3. C++ FAQs 第二版
  4. 关于Verilog中begin···end语句执行顺序
  5. Java 面试之技术框架
  6. 谈论源码_为什么每个人都在谈论WebAssembly
  7. 三步搞定android应用底部导航栏
  8. Spring Cloud Stream与RabbitMQ 死信队列
  9. 通州区机器人比赛活动总结_机器人科技活动总结.doc
  10. linux测试硬盘速度命令,Linux下的硬盘读写速度测试
  11. 安装此计算机程序代码18,我安装VS15,运行程序代码的时候显示的是计算机丢失msv...
  12. swfupload 无法加载_解决 KindEditor SWFUpload 批量上传检测用户登录状态的问题
  13. 线上幽灵:世界头号黑客米特尼克自传
  14. 天正建筑2016破解版 64位/32位最新版
  15. Python拉宾米勒(判断素数)
  16. 《Visual C++数字图像模式识别技术详解(第2版)》一2.2 Visual C++数字图像处理
  17. iOS12加密相册、保险箱、加密相册Pro、保险箱Pro打开就闪退的,不要删除app,关闭4g和WiFi即可正常使用。
  18. 大学生毕业后的档案问题如何处理
  19. 新型冠状肺炎——这个不一般的春节
  20. PHP BC 函数

热门文章

  1. SAP系统和微信集成的系列教程之二:如何通过微信公众号消费API
  2. 模式识别中的最优分类超平面与线性支持向量机
  3. Revit二开 批量链接模型
  4. 强势测试思维和弱势测试思维
  5. 【笔记分享】十一种滤波算法
  6. border-box宽度计算方式
  7. DeepMind 新发布的聊天机器人很好,但还不够好
  8. AVL右旋转思路分析与图解
  9. 这篇文章说到了程序化交易的本质!
  10. 嵌入式分享合集122