跳转到主要内容

高级遗传算法工具包

项目描述

此软件包在Python包装pgapy的基础上实现了并行遗传算法包PGAPack的一些高级算法。以下我们用GA表示遗传算法。

目前我们涵盖了两种概率模型构建GAs的变体,其他作者也称之为估计分布算法(EDA)。此处实现的变体都操作于二进制基因。

您可以通过研究pgapy的文档和PGAPack(与pgapy的安装捆绑在一起)的用户指南,在顶部实现自己的优化问题求解器。此外,通过查看欺骗函数的实现,可以清楚地了解如何编写自己的问题。

该软件包旨在作为一个工具包,您可以在此处混合和匹配各种高级GA算法。

欺骗函数

为了测试这些算法,已经提出了欺骗函数[DG92],这些函数作用于 k 位的字符串,除了一个值之外,都会将遗传算法引向错误的方向。一个具体的例子是 k 位的陷阱函数。该函数的值是 1 位的数量减去 1,除了 全部为零的情况,此时评估值为 k。因此,对于所有值,算法在添加更多 1 位时都会获得收益,但所有 0 位的情况是最优的。这些陷阱函数可以被连接成一个更复杂的问题,评估是所有单独陷阱函数的总和。

deceptive.py 中给出了 k 阶陷阱函数的实现,可以在命令行上指定位数和连接的陷阱函数的数量。默认情况下,所有陷阱函数按顺序连接,使得问题可以通过简单的遗传算法解决。使用 --shuffle 选项,属于单个陷阱函数的位在整个基因中会被打乱。由于简单遗传算法中交叉的破坏性影响,当基因打乱后,简单的遗传算法就不再能解决这些问题。

较新的算法在优化期间构建一个概率模型。该模型可以检测哪些基因具有高度相关性,应该被视为一个单元。这使得即使是打乱的欺骗问题也可以用这些算法解决。

概率模型构建遗传算法(PMBGA)

这实现了文献中的一些概率模型构建遗传算法。我们还实现了所谓的欺骗函数的典型测试函数。它需要一个基础,即 PGApy,它是围绕并行遗传算法库的包装,PGApack。对于后者,我最近实现了限制锦标赛替换[Har95],作为替换策略之一,比标准替换方案更好地保留了遗传多样性。

PMBGAs 通常用搜索期间构建的统计模型替换传统遗传算法的变异和交叉算子 [Hol75][Gol89]。而不是交叉和变异,模型被抽样以创建下一代。

扩展紧凑遗传算法(ECGA)

ECGA 由 Harik [Har99] 首先提出,它通过在每一代中构建和抽样种群统计模型来替换遗传算法的变异和交叉。该模型使用最小描述长度(MDL)模型。更好的描述和示例可以在 [HLS06] 中找到。注意,我们使用的是限制锦标赛替换,最初被称为限制锦标赛选择[Har94][Har95],后来由 Pelikan [Pel05] 命名为限制锦标赛替换,最近已在遗传算法库 PGApack 中实现。注意,目前我们只支持位串(bool)基因。由于我们使用模型构建而不是标准的 GA 操作,我们通过将变异概率设置为 0 来禁用变异。

层次贝叶斯优化算法(hBOA)

贝叶斯优化,最初作为贝叶斯优化算法(BOA)[PGC99]被引入,使用贝叶斯网络来模拟个体基因之间的依赖关系。后来扩展到贝叶斯网络中包含局部结构,这允许更细粒度的模型构建,并命名为hBOA [Pel05]。hBOA最初由Pelikan和Goldberg [PG00][PG01]提出,并在Pelikan的论文《贝叶斯优化算法》[Pel02]中描述,该书是关于贝叶斯优化算法的书籍 [Pel05],构建贝叶斯网络来模拟遗传算法中变量的依赖关系。与其他PMBGAs一样,它采样生成的模型以生成下一代的个体。它使用限制锦标赛替换(RTR)[Har95]作为替换策略。在PGApy中实现时,我们使用最近引入的PGApack中的RTR策略。在构建模型时,它使用贝叶斯Dirichlet度量以及一个惩罚过于复杂的模型([Pel05]第113页)的项。在代码中,此项被称为cutoff,因为它阻止进一步向贝叶斯网络添加边。后来发现,当使用锦标赛选择等噪声选择策略时,该算法会添加虚假依赖[LLPG10][LLPG11],特别是在每个网络构建阶段的最后阶段。这可以通过向cutoff参数添加惩罚因子来抵消。根据测试,最佳值是锦标赛大小,例如二进制锦标赛为2,这就是为什么因子被称为s-penalty。为了进一步限制生成的虚假依赖,代码还有一个额外的参数min_split,当受影响的样本数低于由min_split参数给出的阈值时,它不会进一步分割图。

[DG92]

卡利安莫伊·德布和大卫·E·戈德堡。分析陷阱函数中的欺骗。在L. Darrell Whitley编辑的《遗传算法基础》(FOGA)2中,第93-108页。Elsevier,1992。

[Gol89]

大卫·E·戈德堡。遗传算法在搜索、优化与机器学习中的应用。Addison Wesley,1989年10月。

[Har94]

乔治·R·哈里克。在难度有限的难题中寻找多个解。IlliGAL报告94002,伊利诺伊遗传算法实验室,1994年5月。

[Har95] (123)

乔治·R·哈里克。使用限制锦标赛选择寻找多个模态解。在Larry J. Eshelman编辑的《遗传算法国际会议》(ICGA)论文集中,第24-31页。Morgan Kaufmann,1995年7月。

[Har99]

乔治·R·哈里克。在ECGA中通过概率建模进行链接学习。IlliGAL报告99010,伊利诺伊遗传算法实验室,1999年1月。

[HLS06]

乔治·R·哈里克、费尔南多·G·洛博和库马拉·萨斯特里。在扩展紧凑遗传算法(ECGA)中通过概率建模进行链接学习。在Martin Pelikan、库马拉·萨斯特里和Erick Cantú-Paz编辑的《通过概率建模的可扩展优化:从算法到应用》(Studies in Computational Intelligence)第33卷中,第39-61页。Springer,2006。

[Hol75]

约翰·霍兰德。自然和人工系统中的适应。密歇根大学出版社,安娜堡,密歇根州,1975年。

[LLPG10]

克劳迪奥·F·利马,费尔南多·G·洛博,马丁·佩利卡,和大卫·E·高博。贝叶斯优化算法中的模型精度。IlliGAL报告2010002,伊利诺伊遗传算法实验室,2010年3月。

[LLPG11]

克劳迪奥·F·利马,费尔南多·G·洛博,马丁·佩利卡,和大卫·E·高博。贝叶斯优化算法中的模型精度。软计算,15(7):1351–1371,2011年7月。

[Pel02]

马丁·佩利卡。贝叶斯优化算法:从单层到层次。学位论文,密歇根大学,2002年。IlliGAL报告No. 2002023。

[Pel05] (1,2,3,4)

马丁·佩利卡。层次贝叶斯优化算法:迈向新一代进化算法,模糊性和软计算研究系列第170卷。斯普林格出版社,2005年。

[PG00]

马丁·佩利卡和大卫·E·高博。贝叶斯优化算法的层次问题求解。在L. Darrell Whitley,David E. Goldberg,Erick Cantú-Paz,Lee Spector,Ian C. Parmee和Hans-Georg Beyer主编的遗传和进化计算GECCO 2000,第267-274页,内华达州拉斯维加斯,2000年7月。Morgan Kaufmann。

[PG01]

马丁·佩利卡和大卫·E·高博。通过有能力的遗传算法逃离层次陷阱。在Lee Spector,Erik D. Goodman,Annie Wu,William B. Langdon和Hans Michael Voigt主编的遗传和进化计算会议(GECCO-2001),第511-518页,华盛顿州西雅图,2001年7月。Morgan Kaufmann。

[PGC99]

马丁·佩利卡,大卫·E·高博,和Erick Cantú-Paz。BOA:贝叶斯优化算法。在Wolfgang Banzhaf,Jason M. Daida,A. E. Eiben,Max H. Garzon,Vasant G. Honavar,Mark J. Jakiela和Robert E. Smith主编的遗传和进化计算GECCO 1999,第525-532页,佛罗里达州奥兰多,1999年7月。Morgan Kaufmann。

版本0.2:更新初始发布

  • 切换到pyproject.toml

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

GA_kit-0.2.1.tar.gz (14.1 kB 查看散列)

上传时间

构建分发

GA_kit-0.2.1-py3-none-any.whl (17.8 kB 查看散列)

上传时间 Python 3

支持者