49

我正在寻找一个使用遗传算法的实际应用程序。想到的一些事情是:

  • 网站界面优化
  • 使用物理模拟器进行车辆优化
  • 遗传编程
  • 自动测试用例生成

但没有一个人真的突然出现在我身上。所以如果你有一些空闲时间(几个月)花在遗传算法项目上,你会选择解决什么问题?

4

12 回答 12

19

一个有很多可能性的主题是使用进化算法来进化游戏策略。人们已经使用进化来生成扑克、跳棋/跳棋、围棋和许多其他游戏的策略。J-GAP人员使用基因编程为Robocode进化了机器人。

我最近发表了一篇关于进化计算的介绍性文章。它包括一些进化算法已经用于的细节。 Adam Marczyk还写了一篇很棒的文章,里面有很多例子。遗传 Argonaut 博客包含许多有趣的进化项目的链接。

一种不太常见的进化算法类型是学习分类器系统。这演变出一组用于对输入进行分类的规则。它可以应用于与神经网络相同的问题。为特定问题开发 LCS 可能很有趣,例如尝试根据形式预测运动结果。

于 2009-01-23T12:48:10.813 回答
11

你可能对罗杰·阿尔辛的蒙娜丽莎之类的东西感兴趣

于 2009-01-23T06:06:57.973 回答
11

我认为到目前为止,进化乐高结构是 GA 最有趣的玩具项目。

http://static.23.nu/md/Pictures/ZZ099735B6.jpg

于 2009-01-23T06:13:03.013 回答
4

我已经阅读了类似于自动测试用例生成的问题。其实恰恰相反。您指定测试用例,然后让算法(遗传编程)创建将通过的代码。通过这种方式,您可以提供规范并培育您的程序。如果你用谷歌搜索一下,你可以找到一些关于它的研究。
我觉得这是一个非常有趣的想法。当然,现在没有人会创建这样的应用程序,但这是一个很好的研究领域。

于 2009-11-04T18:55:42.940 回答
3

我玩康威的生命游戏和遗传算法玩得很开心,
尝试进化高级生命形式。但不确定它是否会让你忙
几个月。

于 2009-01-23T06:56:25.813 回答
3

也许找一个旅行推销员旅行。我最近尝试在巴黎的大约 66 个地点进行徒步旅行,我发现编写所有这些东西非常有趣。我认为我的兴奋源于两个来源:我可以绘制旅行团(蒙娜丽莎的想法也是一件好事,或者如果工程是你的事,乐高结构)以及有很多方法你可以比较:

  • 您可以使用简单的启发式方法,例如“从某个地方开始,总是去最近的、未访问的位置”。
  • 您可以使用更复杂的启发式方法,例如“通过增加成本继续按顺序添加边(任何地方),除非它会导致三个边超出一个顶点或更小的循环”。
  • 如果您的成本满足三角不等式,您可以使用近似算法,例如基于最小生成树的简单算法。作为奖励,您可以编写最小生成树(也许您甚至可以在那里使用 GA,尽管可以使用快速简便的精确算法)。如果您有信心,您可以编写基于最小生成树和完美匹配的更难的(3/2)近似算法。
  • 如果您有任何旅行推销员之旅并且它自己交叉,您可以通过“uncrossing it”来改进它。同样,这假设了成本函数的一些条件。
  • 你甚至可以尝试自己找一个游览,看看你能不能打败你的电脑。
  • 最后但同样重要的是,遗传算法!这个问题非常适合 GA,因为它有一个非常清晰的适应度函数和一个非常简单的重组方法。
于 2009-01-23T07:11:18.107 回答
3

请参阅使用遗传编程可以解决哪些问题?

我认为车辆制造真的很酷。

于 2009-01-23T07:19:50.150 回答
3

它已被用于复杂的合成器中以生成声音补丁(例如Clavia Nord Modular G2)。我也会在其他机器上尝试它,我想到了 Yamaha DX7,但我想那里有很多软件替代品。或图像生成。

在Palle Dahlstedt的论文中阅读补丁算法背后的理论。不过现在好像下线了……

于 2009-01-23T09:23:26.437 回答
3

遗传算法非常适合优化和调度。一个例子是调度一组机器,让零件和操作员随着时间的推移完成一组任务。虽然可能不是最令人兴奋的项目,但它会有现实世界的应用。

于 2009-01-28T19:59:03.490 回答
3

生成音乐作品!阅读有关 David Cope 和他的程序 Emily Howell 的信息。

于 2009-11-04T19:01:04.793 回答
2

我相信我看到有人提到一个项目,该项目使用一个来尝试找出最佳键盘布局将是——“击败德沃夏克”。:D

于 2009-01-23T06:50:33.063 回答
2

回到大学我做了多维函数最小化..假设你有 af(x) 它接受参数 x1,x2,x3,...,xn 并生成一个值 Y..你需要找到参数 x1,.., xn 使得 Y=Y1.. 没那么难.. 有趣的学习方式。尽管内德米德的效率更高……但这不容易陷入局部最小值。

于 2009-01-23T09:29:40.373 回答