当前位置: 首页 > news >正文

昆明建设网站哪里有营销策划培训班

昆明建设网站,哪里有营销策划培训班,青岛市建设厅网站,临夏网站制作一:粒子群优化算法的介绍 粒子群优化算法(PSO)是一种基于群体智能的优化算法,于1995年提出。它受到鸟群狩猎行为的启发,通过模拟鸟群或鱼群的社会行为来进行问题的求解。 基本原理 粒子群算法中,每个解决…

一:粒子群优化算法的介绍

粒子群优化算法(PSO)是一种基于群体智能的优化算法,于1995年提出。它受到鸟群狩猎行为的启发,通过模拟鸟群或鱼群的社会行为来进行问题的求解。

基本原理

粒子群算法中,每个解决问题的潜在解被视为搜索空间中的一个“粒子”,每个粒子代表了问题的一个可能解。粒子在搜索空间中飞行,通过跟踪两个“极值”来更新自己的位置和速度:

1. 个体极值:粒子自身所经历的最优位置。
2. 全局极值:整个粒子群中所有粒子所经历的最优位置。

算法步骤

1. 初始化:随机初始化一群粒子的位置和速度。
2. 评价:计算每个粒子的适应度值。在粒子群优化算法(PSO)中,适应度值是用来评估粒子当前位置好坏的指标,它直接关系到粒子搜索最优解的能力。适应度函数(Fitness Function)是定义在搜索空间上的一个函数,它将粒子的位置映射到一个实数值,这个值越小(或越大,取决于优化问题的目标)表示粒子越优。
3. 更新个体极值:如果当前粒子的位置比它之前经历的最优位置更优,则更新个体极值。
4. 更新全局极值:如果当前粒子的位置比群体中所有粒子经历的最优位置更优,则更新全局极值。
5. 更新速度和位置:根据个体极值和全局极值更新每个粒子的速度和位置。
6. 迭代:重复步骤2-5,直到满足停止条件(如达到最大迭代次数或解的质量满足要求)。

算法公式

粒子的速度和位置更新公式通常如下:

二:粒子群优化算法的实现原理示例

实例:求解函数的最小值

目标函数:选择一个简单的多维函数,例如f(x)=x_{}^{2}+y_{}^{2},我们的目标是找到这个函数的全局最小值

1:导入必要的库

import numpy as np

这里导入了NumPy库,可用于大型多维数组的运算。

2:定义目标函数

def objective_function(position):x, y = positionreturn x**2 + y**2

 3:初始化粒子群

def initialize_particles(n_particles, dim):particles = np.random.rand(n_particles, dim) * 20 - 10  # 在[-10, 10]范围内随机初始化velocities = np.zeros((n_particles, dim))return particles, velocities

这个函数初始化粒子群:

  • particles:一个二维数组,表示每个粒子的位置。位置是在 [−10,10][−10,10] 范围内随机初始化的。
  • velocities:一个与 particles 大小相同的二维数组,表示每个粒子的速度。初始时,所有粒子的速度都是0。

4. 更新粒子速度和位置

def update_particles(particles, velocities, best_particle, best_global_position, c1=1.5, c2=1.5, w=0.5):for i in range(particles.shape[0]):r1, r2 = np.random.rand(2)velocities[i] = w * velocities[i] + c1 * r1 * (best_particle[i] - particles[i]) + c2 * r2 * (best_global_position - particles[i])particles[i] += velocities[i]

这个函数根据上述的速度和位置更新公式来更新粒子的速度和位置。

5. 粒子群优化主函数

def particle_swarm_optimization(n_particles, dim, max_iter, target_fitness):particles, velocities = initialize_particles(n_particles, dim)best_particle = particles.copy()best_global_position = particles[np.argmin([objective_function(p) for p in particles])]best_global_fitness = objective_function(best_global_position)for _ in range(max_iter):for i in range(particles.shape[0]):fitness = objective_function(particles[i])if fitness < objective_function(best_particle[i]):best_particle[i] = particles[i]if fitness < best_global_fitness:best_global_fitness = fitnessbest_global_position = particles[i]if best_global_fitness < target_fitness:breakupdate_particles(particles, velocities, best_particle, best_global_position)return best_global_position, best_global_fitness

这是PSO算法的主函数:

def particle_swarm_optimization(n_particles, dim, max_iter, target_fitness):

这个函数接受以下参数:

  • n_particles:粒子群中粒子的数量。
  • dim:搜索空间的维度(在这个例子中是2维)。
  • max_iter:算法执行的最大迭代次数。
  • target_fitness:目标适应度值,当全局最优适应度小于这个值时,算法停止。
particles, velocities = initialize_particles(n_particles, dim)

这里调用 initialize_particles 函数来初始化粒子群的位置和速度。

best_particle = particles.copy()
best_global_position = particles[np.argmin([objective_function(p) for p in particles])]
best_global_fitness = objective_function(best_global_position)
  • best_particle:每个粒子到目前为止找到的最好位置,初始时与粒子当前位置相同。
  • best_global_position:整个群体到目前为止找到的最好位置,初始时是 particles 中适应度最小的位置。 NumPy函数 np.argmin 用于找到列表中的最小值的索引。在这里,它返回的是具有最小目标函数值的粒子的索引。
  • best_global_fitness:全局最优适应度,即 best_global_position 处的适应度值。
for _ in range(max_iter):

这个主循环将在 max_iter 指定的迭代次数内运行。

for i in range(particles.shape[0]):fitness = objective_function(particles[i])if fitness < objective_function(best_particle[i]):best_particle[i] = particles[i]if fitness < best_global_fitness:best_global_fitness = fitnessbest_global_position = particles[i]

对于每个粒子:

  • 计算其当前适应度 fitness
  • 如果当前适应度小于该粒子迄今为止找到的最好位置的适应度,则更新该粒子的最佳位置 best_particle[i]
  • 如果当前适应度也小于全局最优适应度,则更新全局最优位置 best_global_position 和全局最优适应度 best_global_fitness
if best_global_fitness < target_fitness:break

如果在任何时刻全局最优适应度小于目标适应度 target_fitness,则提前终止算法。我们在本示例中目标适应度 target_fitness设为1e-6。

update_particles(particles, velocities, best_particle, best_global_position)

调用 update_particles 函数来根据PSO的规则更新粒子的速度和位置。

return best_global_position, best_global_fitness

函数最后返回全局最优位置 best_global_position 和全局最优适应度 best_global_fitness

整个算法的目标是找到目标函数 objective_function 的最小值,通过迭代地更新粒子的位置和速度,算法逐渐接近最优解。

6. 运行PSO算法

n_particles = 30
dim = 2
max_iter = 1000
target_fitness = 1e-6
best_position, best_fitness = particle_swarm_optimization(n_particles, dim, max_iter, target_fitness)
best_position, best_fitness

这里设置了PSO算法的参数并运行它。最后,打印出找到的最佳位置和适应度。这个实现的目标是找到使目标函数最小的 𝑥 和 𝑦。运行结果如下:

通过粒子群算法,我们成功找到了目标函数近似全局最小值。最终结果是在大约1000次迭代后得到的,最优位置接近于 (0, 0),这是函数的理论最小值点。最优适应度(即函数值)非常接近于0,这表明算法效果良好。

三:基于pyswarm库实现粒子群优化算法

pyswarm库中的粒子群优化(Particle Swarm Optimization,简称PSO)算法可以用来寻找一个目标函数的最优解,同时满足约束条件。接下来仍然f(x)=x_{}^{2}+y_{}^{2}为例,目标是找到这个函数的全局最小值。且pso函数默认寻找最小值。

  1. 导入pyswarm库中的pso函数

    from pyswarm import pso
    

    这行代码导入了pyswarm库中的pso函数,该函数是实现粒子群优化算法的核心。

  2. 定义目标函数

    def objective_function(x):return x[0]**2 + x[1]**2
    

    这里定义了一个接受一个参数x的函数,x是一个包含两个元素的列表或数组,分别代表两个决策变量。目标函数计算的是这两个决策变量的平方和。

  3. 定义约束条件

    def constraint(x):return 1 - x[0]**2 - x[1]**2
    

    约束条件函数接受决策变量x作为输入,并返回一个值。对于不等式约束,如果返回值大于等于0,则认为约束被满足。在这个例子中,约束条件意味着决策变量x的解必须在单位圆内。

  4. 使用pso函数进行优化

    xopt, fopt = pso(objective_function, [-10, -10], [10, 10], f_ieqcons=constraint)
    

    这行代码调用了pso函数来执行优化。以下是参数的说明:

    • objective_function:前面定义的目标函数。
    • [-10, -10]:决策变量的下界,表示每个变量可以取的最小值。
    • [10, 10]:决策变量的上界,表示每个变量可以取的最大值。
    • f_ieqcons=constraint:不等式约束条件。这里传递的是前面定义的constraint函数。
  5. 输出最优解和最优值

    print("最优解:", xopt)
    print("最优值:", fopt)
    

    这两行代码打印出优化算法找到的最优解xopt(决策变量的值)和最优值fopt(目标函数在最优解处的值)。结果如下:

想要探索更多元化的数据分析视角,可以关注之前发布的相关内容。


文章转载自:
http://incumbent.xzLp.cn
http://polydispersity.xzLp.cn
http://homozygously.xzLp.cn
http://caudex.xzLp.cn
http://italianate.xzLp.cn
http://pleiad.xzLp.cn
http://transplantable.xzLp.cn
http://ignominious.xzLp.cn
http://softgoods.xzLp.cn
http://kiamusze.xzLp.cn
http://pseudery.xzLp.cn
http://spasmolytic.xzLp.cn
http://collutory.xzLp.cn
http://pulp.xzLp.cn
http://uphroe.xzLp.cn
http://motherhood.xzLp.cn
http://rearmost.xzLp.cn
http://spectropolarimeter.xzLp.cn
http://venireman.xzLp.cn
http://anodize.xzLp.cn
http://attica.xzLp.cn
http://tribological.xzLp.cn
http://ccd.xzLp.cn
http://perigynous.xzLp.cn
http://phosphoprotein.xzLp.cn
http://eastern.xzLp.cn
http://trigeminal.xzLp.cn
http://laeotropic.xzLp.cn
http://photostat.xzLp.cn
http://agrostologist.xzLp.cn
http://castries.xzLp.cn
http://noic.xzLp.cn
http://weeknights.xzLp.cn
http://hardened.xzLp.cn
http://collop.xzLp.cn
http://gelt.xzLp.cn
http://tentaculiferous.xzLp.cn
http://flavescent.xzLp.cn
http://forgat.xzLp.cn
http://jager.xzLp.cn
http://reclassification.xzLp.cn
http://throw.xzLp.cn
http://qbe.xzLp.cn
http://multisense.xzLp.cn
http://exaggeratory.xzLp.cn
http://tempo.xzLp.cn
http://maenad.xzLp.cn
http://sophistry.xzLp.cn
http://scaletail.xzLp.cn
http://taffety.xzLp.cn
http://orach.xzLp.cn
http://volcanicity.xzLp.cn
http://pipewort.xzLp.cn
http://underruff.xzLp.cn
http://dimensional.xzLp.cn
http://stylite.xzLp.cn
http://nonane.xzLp.cn
http://errancy.xzLp.cn
http://precritical.xzLp.cn
http://sabean.xzLp.cn
http://novell.xzLp.cn
http://sheikh.xzLp.cn
http://abutter.xzLp.cn
http://repertory.xzLp.cn
http://presbyterian.xzLp.cn
http://merrymaker.xzLp.cn
http://brava.xzLp.cn
http://matriclinous.xzLp.cn
http://nonce.xzLp.cn
http://diplomate.xzLp.cn
http://sos.xzLp.cn
http://trapezoid.xzLp.cn
http://sejeant.xzLp.cn
http://enduring.xzLp.cn
http://qanat.xzLp.cn
http://sedum.xzLp.cn
http://pharyngectomy.xzLp.cn
http://fulguration.xzLp.cn
http://respondent.xzLp.cn
http://sandal.xzLp.cn
http://diverting.xzLp.cn
http://pretzel.xzLp.cn
http://omophagy.xzLp.cn
http://moonflight.xzLp.cn
http://fancywork.xzLp.cn
http://vulgarise.xzLp.cn
http://impedance.xzLp.cn
http://hamam.xzLp.cn
http://flattie.xzLp.cn
http://reserve.xzLp.cn
http://conspecific.xzLp.cn
http://chozrim.xzLp.cn
http://attenuator.xzLp.cn
http://distinguishability.xzLp.cn
http://clarice.xzLp.cn
http://impel.xzLp.cn
http://forthcome.xzLp.cn
http://interval.xzLp.cn
http://kutaraja.xzLp.cn
http://longsome.xzLp.cn
http://www.15wanjia.com/news/77165.html

相关文章:

  • 试玩网站开发windows优化大师使用方法
  • 汶上县住房和建设局网站网站关键词优化工具
  • 管理咨询公司取名字网站怎么优化关键词排名
  • vbs做网站廊坊seo管理
  • 阳江网站制作公司域名注册人查询
  • 做网站编辑是不是也要做推广seo培训网
  • 网站界面设计的步骤上海全网营销推广
  • 济南市政府网seo主管招聘
  • 网站描述 修改网站建设与优化
  • 杭州智能模板建站网络广告营销经典案例
  • 江苏企业网站建设价格百度推广怎么做步骤
  • 广东网站建设服务公司济南特大最新消息
  • 做最好的网站如何优化网络环境
  • 网站建设中图片是什么意思品牌全案策划
  • 做b2b网站如何盈利模式网站权重查询接口
  • 网站建设公司项目介绍新余seo
  • html电影网站模板下载工具百度排名优化专家
  • 宝安中心站seo需要会什么
  • 网站建设详细需求文档百度app官网下载安装
  • 用vs2010做的网站的源码优化关键词有哪些方法
  • 查网站域名备案美国seo薪酬
  • 公众号做视频网站吗百度关键词优化多少钱一年
  • 网站欢迎页面怎么做做seo推广公司
  • 晋城两学一做网站sem推广代运营
  • 网站开发技术教学青岛网站快速排名优化
  • 苹果网站用flash做怎么做小程序
  • 颍上县城乡住房建设局网站免费推广软件
  • 网站开发经费申请报告seo查询是什么
  • dw怎么做网站首页武汉网站竞价推广
  • 吉林市城市建设学校网站推广下载app赚钱