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有用或发现任何错误,请让我知道。
享受吧!
注:对于可能显著提高返回解决方案质量的实验性遗传算法,请查看TurboGA (万博 尤文图斯//www.tianjin-qmedu.com/matlabcentral/fileexchange/24053)
引用作为
Keki Burjorjee(2022)。SpeedyGA:一种快速的简单遗传算法(//www.tianjin-qmedu.com/matlabcentral/fileexchange/15164-speedyga-a-fast-simple-genetic-algorithm), MATLAB中央文件交换。检索.