酷项目使用遗传算法?

时间:2009-01-23 06:00:36

标签: machine-learning genetic-algorithm

我正在寻找使用遗传算法的实际应用。有些想法是:

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

但是没有人真的突然出现在我面前。因此,如果您有一些空闲时间(几个月)花在遗传算法项目上,您会选择解决什么?

12 个答案:

答案 0 :(得分:19)

一个有很多可能性的话题是使用进化算法来演化游戏策略。人们已经使用进化来制作扑克,跳棋/选秀,围棋和许多其他游戏的策略。 J-GAP人使用遗传编程为Robocode进化机器人。

我最近发布了关于进化计算的introductory article。它包括一些用于演化算法的细节。 Adam Marczyk还写了一篇很好的文章,里面有很多例子。 Genetic Argonaut blog包含许多有趣的进化项目的链接。

一种不太常见的进化算法类型是learning classifier system。这演变了一组分类输入的规则。它可以应用于神经网络所使用的同类问题。为特定问题开发LCS可能会很有趣,例如尝试根据表格预测运动结果。

答案 1 :(得分:11)

您可能对Roger Alsing的Mona Lisa

等感兴趣

答案 2 :(得分:11)

到目前为止,我认为evolving lego structures是GA最有趣的玩具项目。

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

答案 3 :(得分:5)

我已经阅读过类似于自动测试用例生成的提议。实际上它恰恰相反。您指定测试用例,然后让算法(遗传编程)创建将通过的代码。这样您就可以提供规范并繁殖程序。如果你稍微谷歌,你可以找到一些研究 我发现这是一个非常有趣的想法。当然现在没有人会创建这样的应用程序,但这是一个很好的学习领域。

答案 4 :(得分:3)

或许寻找旅行推销员之旅。我最近试图在巴黎的66个地点找一个徒步旅行,我发现所有这些东西的编码非常有趣。我认为我的兴奋源于两个来源:事实上我可以画出游览(也是关于蒙娜丽莎想法的一件好事,或者工程是你的东西,乐高结构)以及有这么多方法的事实你可以比较:

  • 您可以使用简单的启发式方法,例如“从某处开始并始终前往最近,未访问的位置”。
  • 您可以使用更复杂的启发式方法,例如“通过增加成本来保持按顺序添加边缘(任何地方),除非它会导致三个边缘脱离一个顶点或更小的周期”。
  • 如果您的成本满足三角不等式,您可以使用近似算法,例如an easy one based on minimum spanning trees。作为奖励,您可以编写最小生成树(也许您甚至可以在那里使用GA,尽管可以使用快速简便的算法)。如果您有信心,可以根据最小生成树和完美匹配编写更难的(3/2) - 近似算法。
  • 如果您有任何旅行推销员之旅并且它自己穿过,您可以通过“不交叉”来改进它。同样,这假定了成本函数的一些条件。
  • 你甚至可以尝试自己找一个游览,看看你是否可以击败你的电脑。
  • 最后但并非最不重要的,遗传算法!这个问题非常适合于GA,因为它具有非常清晰的适应度函数和非常简单的重组方式。

答案 5 :(得分:3)

答案 6 :(得分:3)

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

Palle Dahlstedt的论文中阅读补丁算法背后的理论。现在似乎已经下降了......

答案 7 :(得分:3)

遗传算法非常适合优化和调度。一个例子是安排一组机器,随着时间的推移有部件和操作员来完成一组任务。虽然可能不是最激动人心的项目,但它会有真实世界的应用程序。

答案 8 :(得分:2)

我相信我看到提到a project使用一个尝试并找出最佳键盘布局 - 将“击败Dvorak”,就像它一样。 :d

答案 9 :(得分:2)

我很高兴和康威的生命游戏和遗传算法一起玩 试图发展先进的生命形式..不确定它是否会让你忙碌 几个月虽然..

答案 10 :(得分:2)

回到大学时我做了多维函数最小化..假设你有af(x),它取参数x1,x2,x3,...,xn并生成一个值Y ..你需要找到参数x1, ..,xn这样Y = Y1 ..不那么困难..但有趣的学习方法。虽然Nedlermead的效率更高......但这并不容易陷入局部极限。

答案 11 :(得分:2)

生成音乐作品!阅读David Cope和他的节目Emily Howell。