代码之家  ›  专栏  ›  技术社区  ›  splattne

遗传编程的典型用例是什么?

  •  35
  • splattne  · 技术社区  · 17 年前

    this blog entry by Roger Alsing 关于如何绘制 Mona Lisa 仅使用50个半透明多边形。

    我对它着迷 the results 对于那个特殊的案例,我想知道(这是我的问题): 遗传编程是如何工作的 还有什么 通过遗传编程?

    8 回复  |  直到 13 年前
        1
  •  31
  •   Dan Dyer    17 年前

    关于罗杰的《蒙娜丽莎》节目是否成功还有一些争论 Genetic Programming 完全它似乎更接近a(1+1) Evolution Strategy . 这两种技术都是进化计算更广泛领域的例子,其中也包括 Genetic Algorithms

    遗传编程(GP)是进化计算机程序的过程(通常以树的形式-通常是Lisp程序)。如果你特别询问GP,John Koza被广泛认为是领先的专家。他的 website 包含许多指向更多信息的链接。GP通常是计算密集型的(对于非平凡问题,它通常涉及一个大型的机器网格)。

    如果你问的是更一般的问题,进化算法(EAs)通常用于为无法使用其他技术轻松解决的问题(如NP难问题)提供良好的近似解。许多优化问题都属于这一类。可能计算量太大,无法找到精确的解决方案,但有时一个接近最优的解决方案就足够了。在这些情况下,进化技术是有效的。由于其随机性,进化算法永远不能保证为任何问题找到最优解,但如果存在,它们通常会找到一个好的解。

    fitness function .

    一些例子

    编辑: 免费提供的书, A Field Guide to Genetic Programming 人类竞争

        3
  •  8
  •   FryGuy    17 年前

    遗传算法可以用来解决大多数优化问题。然而,在很多情况下,有更好、更直接的方法来解决这些问题。它属于元编程算法类,这意味着它能够适应几乎任何你可以扔给它的东西,因为你可以生成一种方法来编码潜在的解决方案,组合/变异解决方案,并决定哪些解决方案比其他解决方案更好。与其他元编程算法相比,遗传算法具有一个优势,即它可以比模拟退火等纯爬山算法更好地处理局部极大值。

        4
  •  6
  •   splattne    17 年前

    我在论文中使用了遗传编程来模拟基于地形的物种进化,但这当然是遗传算法的A-life应用。

    遗传算法擅长的问题是 hill-climbing problems . 问题是,通常情况下,手工解决这些问题更容易,除非定义问题的因素未知,换句话说,你无法以其他方式获得知识,比如说与社会和社区有关的知识,或者在你有一个好的算法但需要微调参数的情况下,这里GA非常有用。

    我所做的微调是根据相同的算法对几个奥赛罗AI玩家进行微调,赋予每个玩家不同的游戏风格,从而使每个对手都具有独特性和自己的怪癖,然后我让他们竞争挑选出我在游戏中使用的前16个AI。优势在于他们都是技术相当的优秀玩家,因此对人类对手来说很有趣,因为他们无法轻易猜出AI。

        6
  •  5
  •   Guido    17 年前

    你应该问自己:“我能(先验地)定义一个函数来确定一个特定的解决方案相对于其他解决方案有多好?”

    在《蒙娜丽莎》的例子中,你可以很容易地确定新画是否比前一幅画看起来更像源图像,因此遗传编程可以“轻松”应用。

        7
  •  4
  •   Paulo Guedes    17 年前

    我有一些使用遗传算法的项目。遗传算法是优化问题的理想选择,当你不能开发一个完全连续的、精确的算法来解决问题时。例如:汽车特性的最佳组合是什么,使其更快,同时更经济?

    目前,我正在开发一个简单的GA来制作播放列表。我的GA必须找到相似的更好的专辑/歌曲组合(这种相似性将在last.fm的帮助下“计算”),并为我建议播放列表。

        8
  •  2
  •   Eugene Yokota    17 年前

    机器人学中有一个新兴领域叫做 Evolutionary Robotics w:Evolutionary Robotics ),它大量使用遗传算法(GA)。

    看见 w:Genetic Algorithm :

    1. 选择初始总体
    2. 评估人群中每个人的健康状况
    3. 选择排名最佳的个体进行复制
    4. 通过交叉和/或变异(遗传)培育新一代 (操作)并产生
    5. 评估后代的个体适应性
    6. 用后代取代人口中排名最差的部分

    Crossover 和 Mutation .

    推荐文章