遗传算法 (GA)
- class pypop7.optimizers.ga.ga.GA(problem, options)[源代码]
遗传算法 (GA)。
这是所有 GA 类的抽象类。请使用其任何实例化的子类来优化手头的黑箱问题。
注意
GA 是与进化规划(EP)和进化策略(ES)并列的三种最早的进化算法之一。GA 的最初历史可以追溯到 1962 年 Holland 在 JACM 上发表的里程碑式论文,题为《自适应系统逻辑理论纲要》(outline for a logical theory of adaptive systems)。“GA之父” John H. Holland 是 2003 年 IEEE 进化计算先驱奖的获得者。值得注意的是,正如 [Goldberg, 1989] 所指出的,Hans Bremermann(加州大学伯克利分校的名誉教授)和 Woody Bledsoe(IJCAI-1977 年主席 / AAAI-1983 年当选主席)都独立完成了与现代 GA 概念最接近的工作。关于 John Holland 对 GA 起源的访谈,请参考例如 《历史中的机械心智》(The Mechanical Mind in History)一书。
“仅举几例让您对这些问题有所了解:通用电气公司曾使用 GA 实现飞机部分设计的自动化,洛斯阿拉莫斯国家实验室曾用其分析卫星图像,约翰迪尔公司曾用其实现装配线调度的自动化,德州仪器公司曾用其进行计算机芯片设计。在 2003 年的电影《指环王:王者归来》中,GA 被用来生成逼真的计算机动画马匹,并在电影《特洛伊》中为演员生成逼真的计算机动画替身。许多制药公司正在使用 GA 辅助新药的发现。一些金融机构已将 GA 用于各种任务:检测欺诈交易(伦敦证券交易所)、分析信用卡数据(Capital One),以及预测金融市场和投资组合优化(First Quadrant)。在 1990 年代,由交互式 GA 创作的艺术品集合在包括巴黎蓬皮杜中心在内的多家博物馆展出。这些例子只是 GA 应用方式的一小部分。”——[Mitchell, 2009, 《复杂:一个导览》 – 2010 年 Phi Beta Kappa 科学图书奖得主]
关于 GA 在不同领域的有趣应用,请参考 [Lyu et al., 2024, Science]、[Truong-Quoc et al., 2024, Nature Materials]、[Castanha et al., 2024, PNAS]、[Lucas et al., 2023, Nature Photonics]、[Villard et al., 2023, JCTC]、[Kanal&Hutchison, 2017]、[Groenendaal et al., 2015, PLoS Computational Biology]、[Tang et al., 2000, EJOR] 等,仅举几例。
- 参数:
problem (dict) –
- 问题参数,包含以下通用设置 (键)
'fitness_function' - 需要被最小化的目标函数 (func),
'ndim_problem' - 维度数量 (int),
'upper_boundary' - 搜索范围的上边界 (array_like),
'lower_boundary' - 搜索范围的下边界 (array_like).
options (dict) –
- 优化器选项,包含以下通用设置 (键)
'max_function_evaluations' - 函数评估的最大次数 (int, 默认: np.inf),
'max_runtime' - 允许的最大运行时间 (float, 默认: np.inf),
'seed_rng' - 随机数生成器的种子,需要明确设置 (int);
- 以及以下特定设置 (key)
'n_individuals' - 种群大小 (int,默认值:100)。
- n_individuals
种群大小。
- 类型:
int
参考文献
Whitley, D., 2019. 下一代遗传算法:用户指南和教程。 In Handbook of Metaheuristics (pp. 245-274). Springer, Cham.
De Jong, K.A., 2006. 进化计算:统一方法。 MIT Press.
Mitchell, M., 1998. 遗传算法入门。 MIT Press.
Levine, D., 1997. 评论——遗传算法:从业者视角。 INFORMS Journal on Computing, 9(3), pp.256-259.
Goldberg, D.E., 1994. 遗传和进化算法走向成熟。 Communications of the ACM, 37(3), pp.113-120.
De Jong, K.A., 1993. 遗传算法是函数优化器吗? Foundations of Genetic Algorithms, pp.5-17.
Forrest, S., 1993. 遗传算法:应用于计算的自然选择原理。 Science, 261(5123), pp.872-878.
Mitchell, M., Holland, J. and Forrest, S., 1993. 遗传算法何时会优于爬山法? Advances in Neural Information Processing Systems (pp. 51-58).
Holland, J.H., 1992. 自然和人工系统中的适应性:应用于生物学、控制和人工智能的介绍性分析。 MIT press.
Holland, J.H., 1992. 遗传算法。 Scientific American, 267(1), pp.66-73.
Goldberg, D.E., 1989. 搜索、优化和机器学习中的遗传算法。 Reading: Addison-Wesley.
Goldberg, D.E. and Holland, J.H., 1988. 遗传算法和机器学习。 Machine Learning, 3(2), pp.95-99.
Holland, J.H., 1973. 遗传算法与试验的最优分配。 SIAM Journal on Computing, 2(2), pp.88-105.
Holland, J.H., 1962. 自适应系统逻辑理论纲要。 Journal of the ACM, 9(3), pp.297-314.