你有没有在实际应用中使用遗传algorithm?
我想知道在商业代码中find遗传algorithm的方法有多普遍。
在我看来,某些types的调度器可以从GA引擎中受益,作为主algorithm的补充。
遗传algorithm已被广泛应用于商业。 优化列车路线是一个早期的应用程序。 最近战斗机已经使用GA来优化机翼devise。 我在工作中广泛地使用了GAs来为具有非常大的search空间的问题生成解决scheme。
许多问题不太可能从GAs中受益。 我不同意托马斯的看法,他们太难理解了。 GA实际上很简单。 我们发现,通过优化遗传algorithm来解决一个特殊的问题是非常困难的,因为总是pipe理大量的并行计算对许多程序员来说仍然是一个问题。
一个会从GA中受益的问题将具有以下特征:
- 编码潜在解决scheme的好方法
- 一种计算数值分数来评估解决scheme质量的方法
- 一个大的多维search空间,答案是不明显的
- 一个好的解决scheme是足够好的,并不需要一个完美的解决scheme
有许多问题可能会受益于GAs,未来他们可能会更广泛地部署。 我相信,GAs被用于尖端工程领域比人们想象的要多,但大多数人(比如我的公司)都非常密切地保护这些秘密。 只是在揭示了使用了GAs的事实之后。
大多数处理“正常”应用程序的人可能对他们没有多大用处。
如果你想find一个例子,请看Postgres的查询计划器。 它使用了许多技术,而恰恰恰好是遗传的。
http://developer.postgresql.org/pgdocs/postgres/geqo-pg-intro.html
我在硕士论文中使用了遗传algorithm,但之后在日常工作中我没有发现任何遗传algorithm可以解决的问题,我无法用其他algorithm更快地求解。
我没有,但我听说过这家公司(不记得他们的名字),它使用变异,遗传algorithm来计算从我的朋友的天线(或东西)的位置和长度。 他们应该(根据我的朋友)在这方面取得了巨大的成功。 我猜GA对于“普通的Joe开发者”来说太复杂了,不能成为主stream。 有点像地图减less – 壮观的酷,但方式太先进,打“主stream”…
我认为在日常商业代码中find遗传algorithm并不常见。 它们更常见于学术/研究代码中,其中find“最佳algorithm”的需求比仅仅find问题的良好解决scheme的需要更重要。
尽pipe如此,我已经咨询了几个使用GAs的商业项目(主要是因为我参与了GAUL )。 我认为最有趣的例子是在一家生物技术公司。 他们使用GA来优化用于虚拟筛选的评分function,作为其药物发现应用的一部分。
今年早些时候,在我目前的公司 ,我添加了一个新function,我们的产品使用另一个遗传algorithm。 我想我们可能会从下个月开始营销。 基本上,GA用于探索具有与蛋白质结合的潜力的分子,因此可以作为靶向该蛋白质的药物进一步研究。 EA发明者也是使用GA的竞争产品。
作为论文的一部分,我为多目标优化algorithmmPOEMS(多目标原型优化和演化改进步骤)编写了一个通用的Java框架,这是一个使用进化概念的遗传algorithm。 所有与问题无关的部分都与问题相关的部分是分开的,而且一个接口被强制使用,只添加与问题相关的部分。 因此,想要使用该algorithm的人不必从零开始,并且使得工作非常方便。
你可以在这里find代码。
在这个algorithm中可以find的解决scheme已经在科学研究中与最先进的algorithmSPEA-2和NSGA进行了比较,并且已经certificatealgorithm的性能相当甚至更好,取决于你的指标采取措施来衡量的性能,特别是取决于你正在寻找的优化问题。
你可以在这里find它。
作为我的论文和工作certificate的一部分,我将这个框架应用于项目组合pipe理中的项目select问题。 select对公司增值最大的项目,支持公司的大部分战略或支持任何其他任意目标。 例如,从特定类别中select一定数量的项目,或者最大化项目协同效应,…
我的论文将这个框架应用于项目select问题: http : //www.ub.tuwien.ac.at/dipl/2008/AC05038968.pdf
之后,我在财富500强之一的一个投资组合pipe理部门工作,在那里他们使用了一个商业软件,该软件也将GA应用于项目select问题/投资组合优化。
更多资源:
该框架的文档: http : //thomaskremmel.com/mpoems/mpoems_in_java_documentation.pdf
mPOEMS演示文稿: http ://portal.acm.org/citation.cfm?id=1792634.1792653
实际上,每个人都可以很容易地将通用框架的代码调整为任意的多目标优化问题。