代码之家  ›  专栏  ›  技术社区  ›  shuttle87 Bhargav Boda

C++中的遗传程序设计,图书馆的建议?

  •  7
  • shuttle87 Bhargav Boda  · 技术社区  · 14 年前

    我想在我参与的一个运筹学项目中加入一些遗传算法。目前,我们有一个程序可以帮助优化一些调度,我们希望以遗传算法的形式添加一些启发式算法。C++中有通用的遗传编程/算法的好的库吗?或者你建议我自己编写代码?

    我要补充的是,虽然我不是C++新手,但在C++中进行这种数学优化工作是相当新的,因为我以前工作过的小组倾向于使用专有的优化包。

    我们有一个计算量相当大的适应度函数,我们有一个集群在上面运行它,所以并行代码是非常理想的。

    那么C++是一个很好的语言吗?如果没有,请推荐一些其他的,因为我愿意学习另一种语言,如果它使生活更容易。

    谢谢!

    4 回复  |  直到 14 年前
        1
  •  3
  •   Inverse    14 年前

    我建议你自己滚。全科医生90%的工作是编码基因型,如何操作,以及适合度计算。这些是为每个不同的问题/项目而改变的部分。实际的进化算法部分通常相当简单。

    外面有几个公共图书馆( http://en.wikipedia.org/wiki/Symbolic_Regression#Implementations )不过,我会用这些作为例子和参考。

    对于GP来说,C++是一个很好的选择,因为它们往往是计算密集型的。通常,适应度函数是瓶颈,因此至少有必要对这部分进行编译/优化。

        2
  •  1
  •   Guillaume Massé    14 年前

    我用 GAUL

    这是一个C库,有你想要的一切。
    (pthread/fork/openmp/mpi)
    (各种交叉/变异功能)
    (非GA优化:爬山,N-M单纯形,模拟退火,tabu…)

    既然有这么强大的工具,为什么还要建立自己的库呢????

        3
  •  1
  •   Nick    14 年前

    我还没有亲自使用过这个,但是 Age Layered Population Structure (ALPS) 该方法已被用来产生人类的竞争结果,并已被证明在粗略的适应度景观中,在寻找最优解方面优于几种常用的方法。此外,该链接包含在C++ FTW中的源代码。

        4
  •  -1
  •   JohnIdol    14 年前

    我建议您研究一下Matlab优化工具包-它附带了 GAs out of the box 你只需要编码适应度函数(和函数最终生成初始种群),我相信Matlab有一些C++互操作性,所以你可以在C++中对函数进行编码。我将它用于我的实验,一个非常好的特性是你也可以从盒子里取出各种各样的图表。

    所以,如果你的目标是学习遗传算法,你最好编码它,但是如果你只想运行实验,MATLAB和C++(甚至MATLAB)是一个不错的选择。