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版本兼容性
平台的兼容性
窗户 macOS Linux标签
版本 | 发表 | 发布说明 | |
---|---|---|---|
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)每一代的最佳个体不再展示 |
||
1.5.0.0 | 更正了描述字段中的一个错别字 |
||
1.4.0.0 | 增加了可视化比特频率的选项(方便学习GA动态) |
||
1.3.0.0 | 预生成交叉和突变掩码,显著提高性能 |
||
1.0.0.0 | 不同titme |