图像缩略图

约束粒子群优化

版本1.31.4(40.6KB)由 山姆
用与遗传算法工具箱相同的语法实现PSO算法。

34.6K下载

更新2018年11月5日

来自GitHub

在GitHub上查看许可证

以前的标题是“另一个粒子群工具箱”

介绍
粒子群优化(PSO)是一种无导数的全局最优解算器。它的灵感来源于一群简单动物令人惊讶的组织行为,如成群的鸟、成群的鱼或成群的蝗虫。在该算法中,个体生物或“粒子”是原始的,只知道四件简单的事情:1&2)它们在搜索空间中的当前位置和适应值,3)它们以前的个人最佳位置,以及4)所有粒子在“群”中找到的总体最佳位置。没有梯度或黑森人来计算。每个粒子根据这些信息不断调整其在搜索空间中的速度和轨迹,通过每次迭代更接近全局最优。正如在《自然》中所看到的那样,尽管单个粒子很简单,但这个计算群显示出显著的一致性和协调性。

易用性
如果您已经在使用MATLAB的全局优化工具箱中包含的遗传算法(GA),那么此PSO工具箱将为您节省大量时间。可以使用与GA相同的语法从MATLAB命令行调用它,并提供一些特定于PSO的附加选项。这将允许PSO工具箱和GA工具箱之间的高度代码可重用性。某些特定于GA的参数,如交叉和变异函数,显然不适用于PSO算法。然而,遗传算法工具箱的许多常用选项可以与粒子群优化交替使用,因为它们都是基于种群的迭代解算器。有关更多详细信息,请参见>>帮助pso(来自./psopt目录)。

特征
*使万博1manbetx用MATLAB的并行计算工具箱支持分布式计算。
*完全支持有界万博1manbetx、线性和非线性约束。
*模块化和可定制。
*二进制优化。详见PSO二进制函数。
*向量化适应度函数。
*使用类似于现有MATLAB优化解算器的“选项”结构控制解算器参数。
*用户定义的自定义绘图可以使用与GA绘图函数相同的模板编写。
*另一个优化解算器可以称为“混合函数”,以优化PSO结果。

包括一个演示函数和一个小的测试函数库。要运行演示,请从psopt目录调用>>psodemo,无需输入或输出。

欢迎错误报告和功能请求。

特别感谢以下人员提供代码和错误修复:
香港大学贲欣康
汉诺威大学Christian Hansen
*来自MATLAB中央社区的Erik Schreurs
*杨百翰大学J.奥利弗
*虹膜工具箱的迈克尔·约翰斯顿
*陈自强

参考文献
*J肯尼迪,RC埃伯哈特,YH Shi。群体智能。学术出版社,2001年。
*粒子群优化。http://en.wikipedia.org/wiki/Particle_swarm_optimization
*RE Perez,K Behdinan.结构设计优化的粒子群方法.计算机与结构85(2007)1579–1588。
*SM Mikki,AA Kishk。粒子群优化:一种基于物理的方法。摩根和克莱普,2008年。

附录A
形式为c(x)的非线性不等式约束≤ 0和形式为ceq(x)=0的非线性等式约束现已完全实现。“惩罚”约束边界强制方法现在是默认值。它经过了广泛的重新设计和测试,应该能够处理所有类型的约束。

有关定义非线性约束函数的正确语法,请参见以下文档://www.tianjin-qmedu.com/help/optim/ug/writing-constraints.html#brhkghv-16.
要查看使用叠加在Rosenbrock函数上的四叶树的非线性不等式约束演示,请运行PSODEMO并选择“非线性CONSTRDEMO”作为测试函数。

附录B
请参阅GA工具箱文档中的以下指南,以开始使用并行计算工具箱。
//www.tianjin-qmedu.com/help/gads/genetic-algorithm-options.html#f17234

附录C
如果您刚刚开始并希望学习在工作或学校中使用此工具箱,以下是一些必要的阅读资料:
*MATLAB的优化工具箱://www.tianjin-qmedu.com/help/optim/index.html
*MATLAB的全局优化工具箱://www.tianjin-qmedu.com/help/gads/index.html
*MATLAB的遗传算法://www.tianjin-qmedu.com/help/gads/genetic-algorithm.html

附录D
现在,全局优化工具箱中包含一个粒子群优化器。如果安装了最新版本的全局优化工具箱,则需要在代码中适当设置路径以使用此工具箱。

引用为

陈胜胜。约束粒子群优化(2009-2018)。MATLAB文件交换。//www.tianjin-qmedu.com/matlabcentral/fileexchange/25986.

MATLAB版本兼容性
使用R2017a创建
与任何版本兼容
平台兼容性
窗户 马科斯 Linux

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始打猎吧!
要查看或报告此GitHub加载项中的问题,请访问GitHub存储库.
要查看或报告此GitHub加载项中的问题,请访问GitHub存储库.