R:通过遗传编程找到最小函数

时间:2012-05-20 14:10:12

标签: r genetic-algorithm genetic-programming

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

问题很简单:给定R中具有n个参数的函数,如何使用遗传编程找到全局最小值。我尝试修改其中一个example programs ,但似乎这个例子使用的是线性回归,我觉得这种情况并不合适。

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

2 个答案:

答案 0 :(得分:3)

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

该软件的最新主要版本于2010年向公众发布,并在几个次要版本中进一步开发。我们现在每年发布一次大约两次。有一个谷歌小组,你可以请求帮助,越来越活跃,有一些视频教程,显示功能。查看youtube上的tour video,它会在不到3分钟的时间内概述这些功能。围绕Metaheuristics领域的研究员Affenzeller教授的研究小组开发了这个软件,位于奥地利。我也是这个小组的成员。

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

答案 1 :(得分:2)

您可以使用遗传算法代替GP来查找具有n个变量的函数的最小值。

基本上你做的是:

  • 指定初始值
  • 生成n个染色体的初始种群
  • 虽然(真实)
    • 评估每条染色体的适应度f(x,y)
      • 如果我们达到满意的f(x,y)解决方案→退出循环
    • 创建选择方案(锦标赛选择)
    • 选择染色体(选择):
      • 精英
      • 交叉
    • 创造突变
    • 改变重复的染色体
    • 替换原始的染色体群
  • 结束时