什么是遗传算法会产生有趣/令人惊讶的结果而没有枯燥/明显的终点?

时间:2011-01-28 04:27:30

标签: simulation genetic-algorithm genetic-programming

我发现像this这样的遗传算法模拟非常令人难以置信,我觉得制作自己的模型很有趣。但是像这样的大多数模拟的问题在于它们通常只有hill climbing一个可预测的理想结果,可以很容易地通过人工指导来制作。一个有趣的模拟会有无数不同的解决方案,这些解决方案彼此之间会有很大的不同,并且会让观察它们的人感到惊讶。

那么我将如何尝试创造类似的东西呢?期望达到我所描述的目标是否合理?是否有任何“标准”模拟(从某种意义上说生命游戏是标准化的),我可以从中汲取灵感?

4 个答案:

答案 0 :(得分:3)

取决于有趣的的含义。这是一个非常主观的术语。我曾编程一个图形分析器以获得乐趣。该程序首先允许您绘制您选择的任何f(x)并设置边界。第二步是创建一个树,在随机生成的x函数中保存最常用的二元运算符(+ - * /)。该程序将创建一个这样的随机函数池,测试它们与所讨论的原始曲线的匹配程度,然后杂交并改变池中的一些函数。

结果非常酷。一个完全奇怪的函数往往是一个很好的近似查询函数。也许不是最有用的程序,但仍然很有趣。

答案 1 :(得分:1)

嗯,对于初学者来说,遗传算法没有进行爬山,否则会陷入第一个局部最大/最小值。

另外,你怎么说它不会产生令人惊讶的结果呢?查看this vehicle here例如我试过的其中一个运行的第7代产生的例子。这是一个非常古老的自行车模型。当人类花了几千年才拿出同样的模型时,你怎么能说这并不是一个令人惊讶的结果呢?

答案 2 :(得分:1)

为了获得有趣的紧急行为(这是不可预测但有用的),可能有必要为遗传算法提供一个有趣的学习任务,而不仅仅是一个简单的优化问题。

例如,您提到的Car Builder(虽然本身相当不错)只是使用固定道路作为健身功能。这使得遗传算法很容易找到最佳解决方案,但是如果道路会稍微改变,那么最优解决方案可能不再适用,因为解决方案的适用性可能依赖于景观中的细微小细节而不是强大的改变它。实际上,汽车并没有在一条固定的测试道路上发展,而是在许多不同的道路和地形上。使用不断变化的道路作为(动态)适应度函数,由随机因素产生,但在斜坡等的某些现实边界内,将是一个更现实和有用的适应度函数。

答案 3 :(得分:1)

我认为EvoLisa是一个产生有趣结果的GA。从某种意义上说,当您尝试匹配已知图像时,输出是可预测的。另一方面,输出的细节非常酷。