数学建模

您所在的位置:网站首页 算法源码是什么意思呀 数学建模

数学建模

2024-07-16 19:49:38| 来源: 网络整理| 查看: 265

文章目录 一、粒子群优化算法(PSO)是什么?二、粒子群优化算法有什么用?三、粒子群优化算法的适用范围?四、算法简介(有助于理解)五、算法流程第一步:初始化第二步:计算粒子的适应度第三步:更新个体极值与全局最优解第四步:更新个体的速度和位置第五步:设置终止条件 六、matlab代码实现七、运行结果1、各粒子的初始状态位置2、各粒子的状态位置变化图3、各粒子的最终收敛位置4、收敛过程 七、粒子群优化算法的使用流程图八、粒子群优化算法的特点:九、拓展知识十、总结:十一、参考附录:

敲到码穷处,望尽天涯路。🍋

数学建模系列文章——总结篇:《数模美一国一退役选手的经验分享[2021纪念版]》.

一、粒子群优化算法(PSO)是什么?

  粒子群优化算法(Particle Swarm optimization,PSO) 是一种通过 模拟鸟群觅食行为 而发展起来的一种 基于群体协作 的 随机搜索 算法。

  设想这样一个场景:一群🐦在随机搜索🐛。在这个区域处处分散着虫子。所有的🐦都不知道🐛最集中的地方在哪里。   但是它们知道各自目前位置的虫子密度 和 其他鸟周围的虫子密度。那么找到目标地点的最优策略是什么呢?

  最简单有效的策略就是:

1. 众鸟一起去搜寻 目前在虫子密度区域最大的鸟 的周围区域。

2. 根据自己飞行的经验,来判断虫子密度最大的区域的所在。

算法核心思想:PSO的基础是 信息的“社会共享”

二、粒子群优化算法有什么用?

  和蚁群算法、遗传算法类似,包括粒子群算法,这三者都属于 无约束 的优化算法,属于全局搜索算法,是 启发式 算法。

  它只能够得到 全局最优的近似解 ,可能得不到全局最优解。

  这些算法可以用在全局路径搜索、网络路由规划、寻找复杂函数的最值点等应用,比如 TSP路线搜索。

三、粒子群优化算法的适用范围?

   该算法可以用在,关于 大数据、复杂度高、目标函数复杂的 要求要解出最优值 的问题中。

   也可将其作为辅助模型来搭配主流模型,将两个模型的结果做一个对比、分析。看看智能优化算法与主流模型的差距。

四、算法简介(有助于理解)

  在PSO中,搜索空间中的每一只鸟 对应 优化问题的每个解。我们将 “鸟” 称之为 “粒子” 。

  所有的粒子都有一个 “随身携带” 的属性,即需优化的目标函数所计算出的适应值(fitness value)。每个粒子还有两个属性一个是飞翔的速度,另一个是当前的位置。   然后粒子们就追随当前的 最优 粒子,动态地在解空间中搜索全局最优解。

五、算法流程

  我们以两个例子(第2个例子在 十、拓展 一栏)作跳板,从 1维 到 多维 , 由易到难。

  假设我现在要解决 1维 空间的问题(比如:求如下函数的最大值问题) f ( x ) = − ( x − 10 ) 2 + x × s i n ( x ) c o s ( 2 x ) − 5 x × s i n ( 3 x ) , 其 中 , x ∈ [ 0 , 20 ] f(x)= - (x - 10) ^ 2 + x\times sin(x) cos(2x) - 5 x \times sin(3x) ,其中,x∈[0,20] f(x)=−(x−10)2+x×sin(x)cos(2x)−5x×sin(3x),其中,x∈[0,20]

在这里插入图片描述

第一步:初始化

  在 D = 1 D=1 D=1 维的空间里,初始化有 N N N 个粒子,这些粒子分别初始化有以下属性 ( 因为这些粒子只能在 x x x轴上运动,所以我称之为一维 ):

  ①第 i i i 个粒子的位置: x i , i = 1 , 2 , . . . , N x_i,i=1,2,...,N xi​,i=1,2,...,N

  ②第 i i i 个粒子的速度: v i , i = 1 , 2 , . . . , N v_i,i=1,2,...,N vi​,i=1,2,...,N

  ③第 i i i 个粒子所经过的最好的位置: p b e s t i , i = 1 , 2 , . . . , N pbest_i,i=1,2,...,N pbesti​,i=1,2,...,N   注:“pbest” 中的 “p” 指得是 “PSO” 中的 “P” → Particle(中文翻译:粒子)

  ④整个粒子群所经过的最好的位置: g b e s t gbest gbest   注:“gbest” 中的 “g” 指得是 Group .

  ⑤给所有粒子的 位置 加上限制: x l i m i t i ∈ [ X m i n , X m a x ] , i = 1 , 2 , . . . , N xlimit_i∈[X_{min},X_{max}],i=1,2,...,N xlimiti​∈[Xmin​,Xmax​],i=1,2,...,N。   在上面这个例子里面就是 x l i m i t i ∈ [ 0 , 20 ] , i = 1 , 2 , . . . , N xlimit_i∈[0,20],i=1,2,...,N xlimiti​∈[0,20],i=1,2,...,N

  ⑥给所有粒子的 速度 加上限制: v l i m i t i ∈ [ V m i n , V m a x ] , i = 1 , 2 , . . . , N vlimit_i∈[V_{min},V_{max}],i=1,2,...,N vlimiti​∈[Vmin​,Vmax​],i=1,2,...,N

  ⑦设置迭代次数 i t e r iter iter。这个例子我假设 i t e r = 50 iter=50 iter=50 。

  ⑧设在每次迭代过程中,粒子们的自我学习因子 c 1 c_1 c1​ 。它用来调节 粒子每次移动的步长 受 “自我” 的影响因素大小。

  ⑨设在每次迭代过程中,粒子们的群体学习因子 c 1 c_1 c1​ 。它用来调节 粒子每次移动的步长 受 “群体” 的影响因素大小。

  ⑩设在每次迭代过程中,粒子们的惯性权重为 w w w 。它是一个非负数,用来体现 继承上一刻自己速度的 “能力”。

第二步:计算粒子的适应度

  这里的适应度函数就是 f ( x ) = − ( x − 10 ) 2 + x × s i n ( x ) c o s ( 2 x ) − 5 x × s i n ( 3 x ) f(x)= - (x - 10) ^ 2 + x\times sin(x) cos(2x) - 5 x \times sin(3x) f(x)=−(x−10)2+x×sin(x)cos(2x)−5x×sin(3x)

  将第 i i i 个粒子当前的位置 x i x_i xi​ 带入即可得到 该粒子当前的适应度 f ( x i ) f(x_i) f(xi​) 。

第三步:更新个体极值与全局最优解

   更新 第 i i i 个粒子的个体最佳适应度 f p b e s t ( x i ) f_{pbest}(x_i) fpbest​(xi​) 和 群体整体的最佳适应度 f g b e s t f_{gbest} fgbest​。这两个不仅可以用来画后面的 收敛图,还可以用到 第五步中的方案② 。

  再根据 f p b e s t ( x i ) f_{pbest}(x_i) fpbest​(xi​) 更新 粒子的最佳位置 p b e s t i , i = 1 , 2 , . . . , N pbest_i,i=1,2,...,N pbesti​,i=1,2,...,N。

  再从这些 最佳位置 p b e s t i pbest_i pbesti​ 中找到一个群体的最佳位置 g b e s t gbest gbest ,叫做 本次迭代 的全局最佳位置。

第四步:更新个体的速度和位置

  更新公式如下: v i = v i × w + c 1 × r a n d ( ) × ( p b e s t i − x i ) + c 2 × r a n d ( ) × ( g b e s t − x i ) v_i = v_i \times w + c_1 \times rand() \times ( pbest_i - x_i) + c_2 \times rand() \times (gbest - x_i) vi​=vi​×w+c1​×rand()×(pbesti​−xi​)+c2​×rand()×(gbest−xi​) x i = x i + v i x_i=x_i+v_i xi​=xi​+vi​  说明:①rand() 是 matlab 里面的一个产生 [0,1]之间的随机数函数 。

     ②若在迭代过程中,第 i i i 个粒子的位置 x i x_i xi​ 超过了边界 [ X m i n , X m a x ] [X_{min},X_{max}] [Xmin​,Xmax​] ,则该粒子的 x i x_i xi​ 被调节为 X m i n X_{min} Xmin​ 或 X m a x X_{max} Xmax​。(看它是超过了下限还是上限)。同理,对于 v i v_i vi​ 也是这样处理。

第五步:设置终止条件

  终止条件一般有这两种方案:

    ①达到设定迭代次数。

    ②某一指标与理想目标的差值满足某一最小界限。(可以理解为精度达到某一要求)

  若未达到终止条件,则转到第二步。对于这个样例,我采用的是 “终止方案①”。

六、matlab代码实现 clc;clear;close all; f= @(x) - (x - 10) .^ 2 + x .* sin(x) .* cos(2 * x) - 5 * x .* sin(3 * x) ; % 适应度函数表达式(求这个函数的最大值) figure(1); fplot(f, [0 20], 'b-'); % 画出初始图像 d = 1; % 空间维数(该例子是1维) N = 15; % 初始种群个数 x_limit = [0, 20]; % 设置位置限制 v_limit = [-1, 1]; % 设置速度限制 x = x_limit(1) + (x_limit(2) - x_limit(1)) * rand(N, d); %初始每个粒子的位置 v = rand(N, d); % 初始每个粒子的速度 pbest = x; % 初始化每个个体的历史最佳位置 gbest = zeros(1, d); % 初始化种群的历史最佳位置 fp_best = zeros(N, 1); % 初始化每个个体的历史最佳适应度 为 0 fg_best = -inf; % 初始化种群历史最佳适应度 为 负无穷 iter = 50; % 最大迭代次数 w = 0.8; % 惯性权重 c1 = 0.5; % 自我学习因子 c2 = 0.2; % 群体学习因子 hold on; plot(x, f(x), 'ro'); title('初始状态图'); record = zeros(iter, 1); % 记录器(用于记录 fg_best 的变化过程) figure(2); i = 1; while i


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭