SpeedyGA:一个快速简单的遗传算法

一个简单的遗传算法的矢量化实现在Matlab中

24.7 k下载

更新11月21日

查看许可协议

SpeedyGA是Matlab编程语言中遗传算法的向量化实现。没有花哨的东西,它忠实地实现了M. Mitchell的GA书中第10页和第11页给出的简单GA规范。详细信息请参见代码中的注释。

这个脚本在对遗传算法(包括具有统一交叉的算法)的适应能力的新的统一解释的发展中发挥了至关重要的作用,称为生成固定假设。看到http://cs.brandeis.edu/~kekib/dissertation.html

Matlab是为执行数组操作而优化的。循环,尤其是嵌套循环,在Matlab中往往运行缓慢。通过将循环转换为数组操作,可以显著提高Matlab程序的性能。这个过程叫做向量化。Matlab提供了一组丰富的函数和许多有表现力的索引方案,使向量化代码成为可能。这样的代码不仅运行得更快,而且更短,更易于理解和更改(当然,前提是您对Matlab有一定的了解)。

用C/ c++或Java实现的遗传算法通常有多个嵌套循环。因此,将这种实现直接移植到Matlab将运行得非常慢。在典型的GA实现中发现的许多嵌套循环已经从SpeedyGA中消除了。生成的代码简短、快速且简单。编程语言的结构与编程任务匹配得如此之好,以至于可以如此简洁地编写程序,这确实是一个令人愉快的巧合。

SpeedyGA证明了Matlab是一种快速原型遗传算法的有用语言。这一点,再加上Matlab广泛的数据可视化能力,使Matlab成为GAs实验分析的一个非常有用的平台。

SpeedyGA已在Matlab 7 (R14)下创建并测试。它根据最大适应度函数来进化种群。皇家道路健身功能也包括在内,但目前还没有被调用。如果你发现SpeedyGA有用或发现任何bug,请告诉我。

享受吧!

附注:对于可能显著提高解决方案返回质量的实验遗传算法,请参阅TurboGA (万博 尤文图斯//www.tianjin-qmedu.com/matlabcentral/fileexchange/24053

引用作为

Keki Burjorjee(2023)。SpeedyGA:一个快速简单的遗传算法(//www.tianjin-qmedu.com/matlabcentral/fileexchange/15164-speedyga-a-fast-simple-genetic-algorithm), MATLAB中央文件交换。检索

MATLAB版本兼容性
使用R14创建
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!
版本 发表 发布说明
1.22.0.0

不更新代码。改变了描述,提到了生成固定假说

1.21.0.0

更新描述

1.20.0.0

更新描述

1.19.0.0

SpeedyGA现在作为脚本运行(更容易用于研究目的)。没有了花言巧语,它现在忠实地实现了M. Mitchell的GA书中第10页和第11页给出的简单GA规范。详细信息请参见代码中的注释。

1.13.0.0

1.12.0.0

1)每一代的最佳个体不再展示
2)在运行结束时绘制每一代的最大和平均适应度
3)完成后,返回跑步的最佳个体及其适合度

1.5.0.0

更正了描述字段中的一个错别字

1.4.0.0

增加了可视化比特频率的选项(方便学习GA动态)

1.3.0.0

预生成交叉和突变掩码,显著提高性能

1.0.0.0

不同titme