遗传算法(GA)和遗传规划(GP)是一个有趣的研究领域。
我想知道你使用GA/GP解决的具体问题,以及如果你没有自己的库/框架,你使用了什么库/框架。
问题:
你用GA/GP解决过什么问题? 你使用了哪些库/框架?
我在寻找第一手的经验,所以请不要回答,除非你有。
遗传算法(GA)和遗传规划(GP)是一个有趣的研究领域。
我想知道你使用GA/GP解决的具体问题,以及如果你没有自己的库/框架,你使用了什么库/框架。
问题:
你用GA/GP解决过什么问题? 你使用了哪些库/框架?
我在寻找第一手的经验,所以请不要回答,除非你有。
当前回答
我做了一些生活在这个小世界里的小动物。他们有一个神经网络大脑,从世界上接收一些输入,输出是其他行动的运动矢量。他们的大脑就是基因。
该项目从随机的动物群体开始,它们的大脑是随机的。输入和输出神经元是静止的,但中间的神经元不是。
环境中有食物和危险。食物可以增加能量,当你有足够的能量时,你就可以交配了。危险会降低能量,如果能量为0,他们就会死亡。
最终,这些生物进化到可以在世界各地移动,寻找食物和躲避危险。
于是我决定做一个小实验。我给这个生物的大脑一个输出神经元叫做“嘴”,一个输入神经元叫做“耳朵”。重新开始,惊讶地发现它们进化到最大化空间,每个生物都呆在各自的部分(食物是随机放置的)。他们学会了相互合作,不妨碍彼此。凡事总有例外。
然后我尝试了一些有趣的事情。死去的生物将成为食物。猜猜发生了什么事!进化出了两种生物,一种是成群攻击,另一种是高度回避。
那么这里的教训是什么呢?沟通意味着合作。一旦你引入了一个元素,即伤害他人意味着你获得了一些东西,那么合作就会被破坏。
我想知道这对自由市场和资本主义体系有何影响。我的意思是,如果企业可以伤害他们的竞争并侥幸逃脱,那么很明显,他们会尽其所能来伤害竞争。
编辑:
我用c++写的,没有使用框架。我自己写了神经网络和GA代码。埃里克,谢谢你这么说。人们通常不相信GA的力量(尽管其局限性很明显),直到他们玩过它。GA很简单,但不过分简单化。
对于怀疑者来说,神经网络已经被证明能够模拟任何功能,只要它们有不止一层。遗传算法是一种非常简单的方法,可以在解空间中找到局部和全局最小值。将遗传算法与神经网络结合起来,你就有了一个很好的方法来寻找函数,为一般问题找到近似解。因为我们使用的是神经网络,所以我们是针对某些输入优化函数,而不是像其他人使用遗传算法那样对某个函数的某些输入进行优化
下面是生存示例的演示代码:http://www.mempko.com/darcs/neural/demos/eaters/ 建立产品说明:
安装darcs, libboost, liballegro, gcc, cmake, make Darcs克隆——懒惰http://www.mempko.com/darcs/neural/ cd神经 cmake。 使 cd演示/吃 吃。/
其他回答
我不知道家庭作业算不算…
在我学习期间,我们推出了自己的程序来解决旅行推销员问题。
我们的想法是对几个标准进行比较(映射问题的难度,性能等),我们还使用了其他技术,如模拟退火。
它运行得很好,但我们花了一段时间来理解如何正确地进行“复制”阶段:将手头的问题建模成适合遗传编程的东西,这对我来说是最难的部分……
这是一门有趣的课程,因为我们也涉猎了神经网络之类的知识。
我想知道是否有人在“生产”代码中使用这种编程。
我构建了一个简单的GA,用于在音乐播放时从频谱中提取有用的模式。输出用于驱动winamp插件中的图形效果。
输入:一些FFT帧(想象一个二维浮点数组) 输出:单个浮点值(输入的加权和),阈值为0.0或1.0 基因:输入权重 适应度函数:占空比、脉宽、BPM在合理范围内的组合。
我将一些ga调整到频谱的不同部分以及不同的BPM限制,所以它们不会趋向于收敛到相同的模式。来自每个种群的前4个的输出被发送到渲染引擎。
一个有趣的副作用是,整个人群的平均健康状况是音乐变化的一个很好的指标,尽管通常需要4-5秒才能发现。
There was an competition on codechef.com (great site by the way, monthly programming competitions) where one was supposed to solve an unsolveable sudoku (one should come as close as possible with as few wrong collumns/rows/etc as possible).What I would do, was to first generate a perfect sudoku and then override the fields, that have been given. From this pretty good basis on I used genetic programming to improve my solution.I couldn't think of a deterministic approach in this case, because the sudoku was 300x300 and search would've taken too long.
这是一段时间以前的事了,但我滚动了一个GA来进化实际上是图像处理内核的东西,以从哈勃太空望远镜(HST)图像中去除宇宙射线痕迹。标准的方法是用哈勃望远镜进行多次曝光,只保留所有图像中相同的东西。由于HST时间是如此宝贵,我是一个天文学爱好者,最近参加了进化计算大会,我考虑使用GA来清理单次曝光。
这些个体以树的形式存在,以3x3像素的区域作为输入,执行一些计算,并决定是否以及如何修改中心像素。通过将输出图像与用传统方法(即叠加曝光)清理的图像进行比较来判断适合度。
这实际上是可行的,但还不足以让我们放弃原来的方法。如果我的论文没有时间限制,我可能已经扩展了算法可用的遗传部分。我很确定我可以大大提高它。
使用的库:如果我没记错的话,用于天文图像数据处理和I/O的IRAF和cfitsio。
As part of my thesis I wrote a generic java framework for the multi-objective optimisation algorithm mPOEMS (Multiobjective prototype optimization with evolved improvement steps), which is a GA using evolutionary concepts. It is generic in a way that all problem-independent parts have been separated from the problem-dependent parts, and an interface is povided to use the framework with only adding the problem-dependent parts. Thus one who wants to use the algorithm does not have to begin from zero, and it facilitates work a lot.
你可以在这里找到代码。
你可以用这个算法找到的解决方案已经在科学工作中与最先进的算法SPEA-2和NSGA进行了比较,并且已经证明 算法的性能相当,甚至更好,这取决于您用来衡量性能的指标,特别是取决于您正在关注的优化问题。
你可以在这里找到它。
同样,作为我的论文和工作证明的一部分,我将这个框架应用于项目组合管理中的项目选择问题。它是关于选择对公司增加最大价值的项目,支持公司的战略或支持任何其他任意目标。例如,从特定类别中选择一定数量的项目,或最大化项目协同作用,……
我的论文将该框架应用于项目选择问题: http://www.ub.tuwien.ac.at/dipl/2008/AC05038968.pdf
之后,我在一家财富500强公司的投资组合管理部门工作,在那里他们使用了一种商业软件,该软件还将GA应用于项目选择问题/投资组合优化。
更多资源:
框架文档: http://thomaskremmel.com/mpoems/mpoems_in_java_documentation.pdf
mPOEMS演示论文: http://portal.acm.org/citation.cfm?id=1792634.1792653
实际上,只要有一点热情,每个人都可以很容易地将通用框架的代码适应任意的多目标优化问题。