遗传算法(GA)和遗传规划(GP)是一个有趣的研究领域。

我想知道你使用GA/GP解决的具体问题,以及如果你没有自己的库/框架,你使用了什么库/框架。

问题:

你用GA/GP解决过什么问题? 你使用了哪些库/框架?

我在寻找第一手的经验,所以请不要回答,除非你有。


当前回答

首先,Jonathan Koza的《遗传编程》(在亚马逊上)几乎是一本关于遗传和进化算法/编程技术的书,有很多例子。我强烈建议你去看看。

As for my own use of a genetic algorithm, I used a (home grown) genetic algorithm to evolve a swarm algorithm for an object collection/destruction scenario (practical purpose could have been clearing a minefield). Here is a link to the paper. The most interesting part of what I did was the multi-staged fitness function, which was a necessity since the simple fitness functions did not provide enough information for the genetic algorithm to sufficiently differentiate between members of the population.

其他回答

在工作中,我遇到了这样一个问题:给定M个任务和N个dsp,如何将任务分配给dsp是最好的?“最佳”定义为“最大负载DSP的负载最小化”。有不同类型的任务,不同的任务类型有不同的性能分支,这取决于它们被分配到哪里,所以我将一组工作到dsp的分配编码为“DNA字符串”,然后使用遗传算法来“培育”我所能“培育”的最佳分配字符串。

它运行得相当好(比我之前的方法好得多,之前的方法是评估每个可能的组合……对于非平凡问题的大小,它将需要数年才能完成!),唯一的问题是无法判断是否已经达到了最优解。你只能决定当前的“最大努力”是否足够好,或者让它运行更长时间,看看它是否可以做得更好。

我构建了一个简单的GA,用于在音乐播放时从频谱中提取有用的模式。输出用于驱动winamp插件中的图形效果。

输入:一些FFT帧(想象一个二维浮点数组) 输出:单个浮点值(输入的加权和),阈值为0.0或1.0 基因:输入权重 适应度函数:占空比、脉宽、BPM在合理范围内的组合。

我将一些ga调整到频谱的不同部分以及不同的BPM限制,所以它们不会趋向于收敛到相同的模式。来自每个种群的前4个的输出被发送到渲染引擎。

一个有趣的副作用是,整个人群的平均健康状况是音乐变化的一个很好的指标,尽管通常需要4-5秒才能发现。

2004年1月,飞利浦新显示技术公司(Philips New Display Technologies)联系了我,他们正在为有史以来第一款商业电子墨水——索尼Librie——制造电子产品。索尼Librie只在日本上市,比亚马逊Kindle和其他电子墨水在美国和欧洲上市早了好几年。

飞利浦的工程师遇到了一个大问题。在产品上市的几个月前,他们在换页面时仍然会出现重影。问题是产生静电场的200个驱动器。每个驱动器都有一个特定的电压,必须设置在0到1000mv之间。但如果你改变其中一个,就会改变一切。

因此,单独优化每个驱动器的电压是不可能的。可能的值组合的数量以数十亿计,一个特殊的相机大约需要1分钟来评估一个组合。工程师们尝试了许多标准的优化技术,但都没有达到预期的效果。

首席工程师联系了我,因为我之前已经向开源社区发布了一个遗传编程库。他问全科医生/全科医生是否会帮忙,以及我是否能参与其中。我这样做了,在大约一个月的时间里,我们一起工作,我在合成数据上编写和调整GA库,他则将其集成到他们的系统中。然后,有一个周末,他们让它和真人一起直播。

接下来的周一,我收到了他和他们的硬件设计师发来的溢美之词,说没人会相信GA发现的惊人结果。就是这样。同年晚些时候,该产品上市了。

我没有为此得到一分钱,但我有“吹嘘”的权利。他们从一开始就说他们已经超出预算了,所以我在开始工作之前就知道是什么交易。这对于气体的应用是一个很好的例子。:)

首先,Jonathan Koza的《遗传编程》(在亚马逊上)几乎是一本关于遗传和进化算法/编程技术的书,有很多例子。我强烈建议你去看看。

As for my own use of a genetic algorithm, I used a (home grown) genetic algorithm to evolve a swarm algorithm for an object collection/destruction scenario (practical purpose could have been clearing a minefield). Here is a link to the paper. The most interesting part of what I did was the multi-staged fitness function, which was a necessity since the simple fitness functions did not provide enough information for the genetic algorithm to sufficiently differentiate between members of the population.

我为我的公司在1992年为货运业开发的3D激光表面轮廓系统开发了一个家庭酿造GA。 该系统依赖于三维三角测量,并使用了定制的激光线扫描仪,512x512相机(具有定制的捕获hw)。相机和激光之间的距离永远不会是精确的,相机的焦点也不会在你期望的256,256的位置找到!

尝试使用标准几何和模拟退火式方程求解来计算校准参数是一场噩梦。

遗传算法在一个晚上就完成了,我创建了一个校准立方体来测试它。我知道立方体的精度很高,因此我的想法是,我的遗传算法可以为每个扫描单元进化一组自定义三角测量参数,以克服生产变化。

这招很管用。退一步说,我简直目瞪口呆!在大约10代的时间里,我的“虚拟”立方体(由原始扫描生成并根据校准参数重新创建)实际上看起来像一个立方体!经过大约50代之后,我得到了我需要的校准。