1

我目前正在使用RGP作为遗传编程库。如果有人对另一个库有想法(更好的文档,更积极的开发等),我想听听你的建议。

问题相当简单:给定 R 中具有 n 个参数的函数,我如何使用遗传编程找到全局最小值。我尝试修改其中一个示例程序,但似乎这个示例使用了线性回归,我认为这不适合我的情况。

有人有我可以使用的示例代码吗?

4

2 回答 2

3

我可以推荐使用HeuristicLab。实现了一些算法:遗传算法、进化策略、模拟退火、粒子群优化等,如果您正在研究实值函数的最小化,这些可能会很有趣。该软件用 C# 实现并在 Windows 上运行。它提供了一个 GUI,您可以在其中优化几个提供的测试功能(Rosenbrock、Schaffer、Ackley 等)。还有一个非常好的遗传编程 (GP) 实现,但从我的印象来看,你不需要 GP。在遗传编程中,您可以根据未知函数的输出数据进化出一个函数。我认为在你的情况下,函数是已知的,你需要找到那些最小化函数输出的参数。

该软件的最新主要版本于 2010 年向公众发布,此后在几个次要版本中得到了进一步开发。我们现在每年大约发布两次。有一个 google 小组,您可以在其中寻求帮助,该小组越来越活跃,并且有一些视频教程展示了该功能。观看 youtube 上的导览视频,不到 3 分钟即可概述这些功能。围绕着 Affenzeller 教授(元启发式研究领域的研究员)的研究小组开发了这个软件,并位于奥地利。我也是这个组的一员。

查看howtos如何在 GUI 中实现您的功能,或者,如果您了解 C#,如何将您的问题实现为插件。

于 2012-06-10T11:03:45.110 回答
2

您可以使用遗传算法而不是 GP 来找到具有 n 个变量的函数的最小值。

基本上你要做的是:

  • 分配初始值
  • 生成 n 个染色体的初始种群
  • 虽然(真)
    • 评估每个染色体的适应度 f(x, y)
      • 如果我们达到 f(x, y) 的满意解 → 退出循环
    • 创建选择方案(比赛选择)
    • 选择染色体(选择):
      • 精英主义
      • 交叉
    • 创建突变
    • 改变重复的染色体
    • 替换原来的染色体群体
  • 结束而
于 2012-08-17T09:11:16.230 回答