首页 文章

什么是遗传算法/遗传编程解决方案的好例子? [关闭]

提问于
浏览
218

Genetic algorithms(GA)和genetic programming(GP)是有趣的研究领域 .

我想知道你使用GA / GP解决的具体问题,以及你没有使用自己的库/框架 .

问题:

  • 您使用GA / GP解决了哪些问题?

  • 您使用了哪些库/框架?

我正在寻找第一手经验,所以除非你有这个经验,否则请不要回答 .

30 回答

  • 2

    首先,Jonathan Koza撰写的"Genetic Programming"(on amazon)几乎是关于遗传和进化算法/编程技术的书,有很多例子 . 我强烈建议检查一下 .

    至于我自己使用的遗传算法,我使用(本土种植的)遗传算法来进化物体收集/破坏场景的群体算法(实际目的可能是清除雷区) . 这是the paper的链接 . 我所做的最有趣的部分是多阶段适应度函数,这是必要的,因为简单的适应度函数没有为遗传算法提供足够的信息来充分区分群体成员 .

  • 3

    我做了一些生活在这个小世界里的小动物 . 他们有一个神经网络大脑,它接收了来自世界的一些输入,输出是一个用于在其他动作中移动的矢量 . 他们的大脑是“基因” .

    该计划始于一群随机大脑的随机人群 . 输入和输出神经元是静态的,但介于两者之间的不是 .

    环境包含食物和危险 . 食物增加能量,当你有足够的能量,你可以交配 . 危险会减少能量,如果能量为0,他们就会死亡 .

    最终,这些生物进化到世界各地,寻找食物并避免危险 .

    然后我决定做一个小实验 . 我给了生物大脑一个叫做“嘴”的输出神经元和一个叫做“耳朵”的输入神经元 . 重新开始并且惊讶地发现它们进化到最大化空间并且每个相应的生物将留在其各自的部分(食物随机放置) . 他们学会了彼此合作,而不是互相帮助 . 总有例外 .

    然后我尝试了一些有趣的事我死去的生物会成为食物 . 试着猜猜发生了什么!两种类型的生物进化,一类像群体一样攻击,一类是高度回避 .

    那么这里有什么教训呢?沟通意味着合作 . 一旦你引入一个伤害另一个元素的元素就会获得某些东西,那么合作就会被破坏 .

    我想知道这是如何反映自由市场和资本主义制度的 . 我的意思是,如果企业能够伤害他们的竞争对手,那么很明显他们会尽其所能来伤害竞争 .

    编辑:

    我在C中使用没有框架编写它 . 写了我自己的神经网络和GA代码 . 埃里克,谢谢你说这是合情合理的 . 人们通常不相信GA的权力(虽然限制很明显),直到他们玩它 . GA简单但不简单 .

    对于怀疑者来说,神经网络已被证明能够模拟任何函数,如果它们有多个层 . GA是一种非常简单的方法,用于导航解决方案空间,找到本地和潜在的全局最小值将GA与神经网络相结合,您可以找到找到通用问题近似解的函数 . 因为我们正在使用神经网络,所以我们正在优化某些输入的功能,而不是其他人使用GA的功能输入

    以下是生存示例的演示代码:http://www.mempko.com/darcs/neural/demos/eaters/构建说明:

    • 安装darcs,libboost,liballegro,gcc,cmake,make

    • darcs clone --lazy http://www.mempko.com/darcs/neural/

    • cd neural

    • cmake .

    • make

    • cd demos/eaters

    • ./eaters

    Eaters Screenshot

  • 139

    我开发了一种基于多线程摆动的机器人导航模拟,通过一组食物源和矿山的随机网格地形,并开发了一种基于遗传算法的策略,用于探索机器人行为的优化和机器人染色体最适合的基因的存活 . 这是使用每个迭代周期的图表和映射完成的 .

    从那以后,我开发了更多的游戏行为 . 我最近为自己 Build 的一个示例应用程序是一个遗传算法,用于解决英国路线搜索中的旅行销售人员问题,考虑到开始和目标状态以及一个/多个连接点,延迟,取消,建设工程,高峰时间,公开罢工,考虑最快和最便宜的路线 . 然后为某一天的路线提供 balancer 的建议 .

    一般来说,我的策略是使用基于POJO的基因代表,然后我将特定的接口实现应用于选择,变异,交叉策略和标准点 . 基于我需要应用作为启发式测量的策略和标准,我的健身功能基本上变得相当复杂 .

    我还研究了使用系统变异周期将遗传算法应用到代码中的自动化测试中,其中算法理解逻辑并尝试确定具有代码修复建议的错误报告 . 基本上,这是一种优化我的代码并提供改进建议的方法,以及一种自动发现新程序代码的方法 . 我还尝试将遗传算法应用于其他应用程序中的音乐制作 .

    一般来说,我发现像大多数元启发式/全局优化策略这样的进化策略,它们起初学习起来很慢,但开始时却很慢随着解决方案变得越来越接近目标状态,并且只要您的适应度函数和启发式算法完全一致,就可以在搜索空间内产生这种融合 .

  • 21

    我使用简单的遗传算法来优化波形的信噪比,该波形表示为二进制串 . 通过在数百万代中以某些方式翻转位,我能够产生导致该波的更高信噪比的变换 . 该算法也可以是“模拟退火”,但在这种情况下不使用 . 遗传算法的核心很简单,这与我见过的用例一样简单,因此我没有使用框架进行生成和选择 - 只有随机种子和信噪比手头的功能 .

  • 11

    我是调查使用Evolutionary Computation(EC)自动修复现有程序中的错误的团队的一员 . 我们已成功修复了现实世界软件项目中的一些实际错误(请参阅this project's homepage) .

    我们有两种EC修复技术的应用 .

    • 第一个(通过项目页面提供的代码和再现信息)演化了从现有C程序解析的抽象语法树,并使用我们自己的自定义EC引擎在Ocaml中实现 .

    • 第二个(通过项目页面提供的代码和复制信息),我个人对项目的贡献,演变了用多种编程语言编写的程序编译的x86程序集或Java字节代码 . 此应用程序在Clojure中实现,并且还使用自己的定制EC引擎 .

    Evolutionary Computation的一个不错的方面是该技术的简单性使得编写自己的自定义实现成为可能,而不会有太多困难 . 有关遗传编程的免费提供的介绍性文章,请参阅 Field Guide to Genetic Programming .

  • 7

    我在婚礼招待会上用GA来优化座位分配 . 超过10桌的80位客人 . 评估功能的基础是让人们了解日期,将人们共同拥有的东西放在一起,并让人们在不同的 table 上保持极端相反的观点 .

    我跑了好几次 . 每一次,我都有九张好 table ,还有一张奇怪的球 . 最后,我的妻子做了座位任务 .

    我的旅行推销员优化器使用了一种新的染色体到行程的映射,这使得染色体的繁殖和变异变得微不足道,而没有产生无效旅行的风险 .

    Update :因为有几个人问过怎么......

    从一系列来宾(或城市)开始,以一些任意但一致的顺序,例如按字母顺序排列 . 将此称为参考解决方案 . 将客人的索引视为他/她的座位号 .

    我们不是试图直接在染色体中编码这种排序,而是编码将参考解决方案转换为新解决方案的指令 . 具体来说,我们将染色体视为数组中索引的列表进行交换 . 为了解码染色体,我们从参考解决方案开始并应用染色体指示的所有交换 . 在数组中交换两个条目总是会产生一个有效的解决方案:每个客户(或城市)仍然只出现一次 .

    因此,染色体可以随机生成,变异,并与其他染色体交叉,并始终产生有效的解决方案 .

  • 87

    在工作中我遇到了以下问题:给定M任务和N个DSP,将任务分配给DSP的最佳方法是什么? “最佳”被定义为“最大限度地减少负载最大的DSP的负载” . 有不同类型的任务,各种任务类型根据它们的分配位置有不同的性能分支,因此我将作业到DSP分配的集合编码为“DNA字符串”,然后使用遗传算法“繁殖”我能做的最好的作业字符串 .

    它工作得相当好(比我以前的方法要好得多,这是为了评估每个可能的组合......对于非平凡的问题大小,它需要数年才能完成!),唯一的问题是无法分辨如果达到最佳解决方案 . 您只能决定当前的“尽力而为”是否足够好,或者让它运行更长时间以确定它是否可以做得更好 .

  • 1

    它往往很难获得当你打算给房子上漆时,确切的颜色组合 . 通常,你有一些颜色,但它不是颜色之一,供应商告诉你 .

    昨天,我的GA研究员教授在德国提到了一个真实的故事(对不起,我没有进一步的参考,是的,如果有人要求,我可以找到它) . 这个家伙(让我们称之为颜色家伙)过去常常从门到门帮助人们找到确切的颜色代码(在RGB中),这将成为顾客心中的壁橱 . 以下是他将如何做到这一点:

    这个颜色的家伙曾经带着一个使用GA的软件程序 . 他过去常常用4种不同的颜色开始 - 每种颜色编码为编码的染色体(其解码值为RGB值) . 消费者选择4种颜色中的1种(这是他/她最接近的颜色) . 然后程序将为该个体分配最大适应度,并使用突变/交叉移动到下一代 . 上面的步骤将重复进行,直到消费者找到确切的颜色,然后用颜色的人告诉他RGB组合!

    通过为颜色指定最大适应度接近消费者的想法,颜色家伙的程序增加了收敛到颜色的机会,消费者完全想到了 . 我觉得很有趣!

    现在我有一个-1,如果你计划更多的-1,请 . 阐明这样做的原因!

  • 1

    除了一些常见的问题,比如旅行推销员和Roger Alsing's Mona Lisa program的变体,我还写了an evolutionary Sudoku solver(这需要我更多的原创思想,而不仅仅是重新实现别人的想法) . 有更可靠的算法来解决Sudokus,但进化方法运作良好 .

    在过去的几天里,我在Reddit上看到this article之后,一直在玩一个进化程序来寻找"cold decks"扑克 . 目前还不太令人满意,但我想我可以改进它 .

    我有my own framework用于进化算法 .

  • 7

    作为我的本科CompSci学位的一部分,我们被分配了为Jikes研究虚拟机找到最佳jvm标志的问题 . 这是使用Dicappo基准测试套件评估的,该套件向控制台返回时间 . 我编写了一个分布式的gentic alogirthm,它可以切换这些标志以改善基准测试套件的运行时间,尽管需要花费数天来补偿影响结果的硬件抖动 . 唯一的问题是我没有正确地了解编译器理论(这是作业的意图) .

    我本可以使用现有的默认标记来播种初始种群,但有趣的是该算法发现了与O3优化级别非常相似的配置(但在许多测试中实际上更快) .

    编辑:我也在Python中编写了我自己的遗传算法框架用于分配,并且只使用popen命令来运行各种基准测试,尽管如果它不是一个评估的任务,我会看看pyEvolve .

  • 2

    几年前,我使用ga来优化asr(自动语音识别)语法,以获得更好的识别率 . 我从相当简单的选择列表(其中ga正在测试每个插槽的可能术语的组合)开始,然后逐渐开始学习更开放和复杂的语法 . 通过在一种语音距离函数下测量术语/序列之间的分离来确定适应度 . 我还尝试在语法上进行弱等效变化,找到一个编译成更紧凑的表示形式(最后我使用直接算法,并且它大大增加了我们可以在应用程序中使用的“语言”的大小) .

    最近,我将它们用作默认假设,用于测试各种算法生成的解决方案的质量 . 这主要涉及分类和不同类型的拟合问题(即创建一个“规则”,解释审阅者对数据集做出的一系列选择) .

  • 21

    我年轻时曾尝试过GA . 我在Python中编写了一个模拟器,其工作原理如下 .

    基因编码神经网络的权重 .

    神经网络的输入是检测到触摸的“触角” . 较高的值意味着非常接近而0意味着不接触 .

    输出是两个“轮子” . 如果两个车轮向前推进,那个人就往前走了 . 如果车轮方向相反,那家伙就转过身来 . 输出的强度决定了车轮转向的速度 .

    生成了一个简单的迷宫 . 它真的很简单 - 甚至是愚蠢的 . 屏幕底部有一个开始,顶部有一个目标,中间有四面墙 . 每个墙都有一个随机取出的空间,所以总有一条路 .

    我在一开始就开始随机的人(我把它们当作bug) . 一旦一个人达到目标,或达到时间限制,就计算出适合度 . 它与目标的距离成反比时间 .

    然后我将它们配对并“培育”它们以创造下一代 . 被选择繁殖的概率与其适合度成正比 . 有时这意味着如果它具有非常高的相对适应性,那么它就会反复繁殖 .

    我认为他们会发展出“左墙拥抱”的行为,但他们似乎总是追随一些不那么理想的东西 . 在每个实验中,虫子会聚成螺旋图案 . 它们会向外螺旋,直到它们碰到右边的墙壁 . 他们会遵循这一点,然后当他们进入差距时,他们会向下(远离差距)和周围螺旋式下降 . 他们会向左转270度,然后通常进入间隙 . 这将使他们通过大部分墙壁,并经常到达目标 .

    我添加的一个功能是在基因中加入颜色矢量以跟踪个体之间的相关性 . 几代之后,它们都是相同的颜色,这告诉我应该有更好的育种策略 .

    我试图让他们制定更好的策略 . 我复杂的神经网络 - 添加内存和一切 . 它没有帮助 . 我总是看到同样的策略 .

    我尝试了各种各样的事情,比如有100个世代后才重新组合的独立基因库 . 但没有什么可以促使他们采取更好的策略 . 也许这是不可能的 .

    另一个有趣的事情是随着时间的推移绘制健身图 . 有明确的模式,比如在它上升之前最大适应性下降 . 我从未见过一本关于这种可能性的进化书 .

  • 5

    我使用遗传算法(以及一些相关技术)来确定风险管理系统的最佳设置,该系统试图阻止黄金农民使用被盗信用卡来支付MMO . 该系统将采用“已知”值(欺诈与否)进行数千次交易,并找出最佳组合设置,以正确识别欺诈性交易,而不会产生太多误报 .

    我们得到了一个事务的几十个(布尔)特征的数据,每个特征都给出了一个值并总计 . 如果总数高于阈值,则交易是欺诈 . GA将创建大量随机值集,根据已知数据集对其进行评估,选择得分最高的(在欺诈检测和限制误报数量上),然后交叉繁殖最好的几个每一代都产生新一代的候选人 . 在经过一定代数后,最佳得分值被认为是胜利者 .

    创建要测试的已知数据的语料库是系统的致命弱点 . 如果您等待退款,那么在尝试回复欺诈者时,您已经落后了几个月,因此有人必须手动审核大量交易以构建该数据语集,而无需等待太长时间 .

    这最终确定了绝大多数的欺诈行为,但是对于最容易欺诈的项目来说,这种欺诈行为可能不会低于1%(考虑到90%的传入交易可能是欺诈行为,而且表现相当不错) .

    我使用perl做了所有这些 . 在相当旧的Linux机器上运行一次软件需要1-2个小时才能运行(20分钟通过WAN链接加载数据,剩下的时间用于处理) . 任何给定代的大小都受可用RAM的限制 . 我会一遍又一遍地运行它,只需对参数稍作修改,寻找一个特别好的结果集 .

    总而言之,它避免了手动试图调整数十个欺诈指标的相对 Value 所带来的一些失误,并且始终提出了比手工创建更好的解决方案 . AFAIK,它仍然在使用(我写了大约3年后) .

  • 33

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

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

    遗传算法在一个晚上被掀起,我创建了一个校准立方体来测试它 . 我知道立方体尺寸具有高精度,因此我的想法是我的GA可以为每个扫描单元发展一组定制的三角测量参数,以克服 生产环境 变化 .

    诀窍是一种享受 . 我至少可以说是惊呆了!在大约10代之内,我的“虚拟”立方体(从原始扫描生成并从校准参数重新生成)实际上看起来像一个立方体!经过大约50代,我得到了我需要的校准 .

  • 8

    在codechef.com上有一场比赛(顺便提一下,每月一次编程竞赛)其中一个应该解决一个不可解决的数独(一个应该尽可能接近尽可能少的错误列/行/等) .

    我要做的是首先生成一个完美的数独,然后覆盖已经给出的字段 . 从这个相当不错的基础上我使用遗传编程来改进我的解决方案 .

    在这种情况下,我想不出确定性的方法,因为数据是300x300,搜索时间太长了 .

  • 2

    足球小费 . 我 Build 了一个GA系统来预测AFL(澳大利亚足球规则)中每周比赛的结果 .

    几年前,我对标准的工作足球池感到厌倦,每个人都只是上网,并从媒体上的一些专家那里挑选 . 所以,我认为打败一大批新闻专业并不难,对吧?我的第一个想法是从Massey Ratings获取结果,然后在赛季结束后揭示我赢得名利和荣耀后的策略 . 但是,由于我从未发现梅西不跟踪AFL的原因 . 我内心的愤世嫉俗者认为这是因为每个AFL游戏的结果基本上都是随机的,但我对最近规则变化的抱怨属于不同的论坛 .

    该系统基本上考虑了进攻强度,防守强度,主场优势,每周改进(或缺乏)以及每种改变的速度 . 这为本赛季的每支球队创建了一组多项式方程 . 可以计算给定日期的每场比赛的获胜者和分数 . 目标是找到与所有过去游戏的结果最匹配的系数集,并使用该集来预测即将到来的周游戏 .

    在实践中,该系统将找到准确预测超过90%的过去游戏结果的解决方案 . 然后,它将成功地为即将到来的一周(即不在训练集中的那一周)挑选约60-80%的游戏 .

    结果:刚好在包装的中间位置 . 没有主要的现金奖励,也没有我可以用来击败拉斯维加斯的系统 . 虽然这很有趣 .

    我从头开始构建一切,没有使用框架 .

  • 49

    几周前,我建议使用遗传算法解决图形布局问题 . 这是约束优化问题的一个例子 .

    同样在机器学习领域,我从头开始在c / c中实现了基于GA的分类规则框架 .
    我还在示例项目中使用GA进行训练artificial neural networks(ANN),而不是使用着名的backpropagation algorithm .

    此外,作为我研究生研究的一部分,我在训练Hidden Markov Models中使用GA作为基于EM的Baum-Welch算法的另一种方法(再次在c / c中) .

  • 2

    我曾经使用GA来优化内存地址的哈希函数 . 地址是4K或8K页面大小,因此它们在地址的位模式中显示出一些可预测性(最低有效位全为零;中间位有规律地递增等)原始散列函数是“矮胖的” - 它倾向于集群命中在每三个哈希桶上 . 改进的算法具有近乎完美的分布 .

  • 4

    我曾经试图为Go游戏制作一个电脑播放器,完全基于遗传编程 . 每个程序将被视为一系列移动的评估函数 . 虽然制作的节目不是很好,即使在相当小的3x4电路板上也是如此 .

    我使用Perl,并自己编码 . 我今天会采取不同的做法 .

  • 17

    作为我的论文的一部分,我为多目标优化算法mPOEMS(具有演化改进步骤的多目标原型优化)编写了一个通用的Java框架,这是一个使用进化概念的GA . 它是通用的,所有与问题无关的部分都与问题相关的部分分离,并且界面被用于仅使用添加问题相关部分的框架 . 因此,想要使用该算法的人不必从零开始,并且它便于工作 .

    你可以找到代码here .

    使用此算法可以找到的解决方案已经在科学工作中与最先进的算法SPEA-2和NSGA进行了比较,并且已经证明该算法具有可比性或甚至更好的性能,具体取决于您的指标测量性能,特别是取决于您正在查看的优化问题 .

    你可以找到here .

    作为我的论文和工作证明的一部分,我将这个框架应用于项目组合管理中的项目选择问题 . 它是关于选择为公司增加最大 Value 的项目,支持大多数公司的战略或支持任何其他任意目标 . 例如 . 从特定类别中选择一定数量的项目,或最大化项目协同效应,......

    我的论文将这个框架应用于项目选择问题: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

    实际上,只要有一点热情,每个人都可以轻松地将通用框架的代码调整为任意的多目标优化问题 .

  • 1

    在本科课程中,我们使用NERO(神经网络和遗传算法的组合)来教授游戏中的机器人以做出明智的决策 . 这很酷 .

  • 1

    我制作了一个名为“GALAB”的完整GA框架来解决许多问题:

    • 定位GSM ANT(BTS)以减少重叠和空白位置 .

    • 资源约束项目调度 .

    • 进化图片创作 . (Evopic

    • 旅行商问题 .

    • N-Queen和N-Color问题 .

    • 骑士之旅和背包问题 .

    • 魔方和数独谜题 .

    • 字符串压缩,基于Superstring问题 .

    • 2D包装问题 .

    • 微小的人造生命APP .

    • 魔方 .

  • 4

    我和同事正在研究使用我们公司要求的各种标准将货物装载到卡车上的解决方案 . 我一直致力于遗传算法解决方案,而他正在使用Branch And Bound进行积极的修剪 . 我们仍在实施此解决方案,但到目前为止,我们已经取得了良好的效果 .

  • 47

    不是作业 .

    我作为专业程序员的第一份工作(1995年)是为S&P500期货编写基于遗传算法的自动交易系统 . 该应用程序是用Visual Basic 3 [!]编写的,我不知道我当时做了什么,因为VB3甚至没有类 .

    应用程序从一群随机生成的固定长度字符串(“基因”部分)开始,每个字符串对应于S&P500期货的每分钟价格数据中的特定形状,以及特定订单(买入或卖出)和止损和止盈金额 . 通过3年的历史数据评估每个字符串(或“基因”)的利润表现;每当指定的“形状”与历史数据匹配时,我就会假定相应的买入或卖出订单并评估交易的结果 . 我添加了一个警告,即每个基因都以固定金额开始,因此可能会破裂并完全从基因库中移除 .

    在对群体进行每次评估之后,将幸存者随机杂交(通过仅混合来自两个亲本的比特),基因被选择作为亲本的可能性与其产生的利润成比例 . 我还添加了点突变的可能性,以增加一些东西 . 经过几百代之后,我最终得到了一大堆基因,可以将5000美元变成平均大约10000美元而没有死亡/破产的可能性(当然,根据历史数据) .

    不幸的是,我从来没有机会使用这个系统,因为我的老板在不到3个月的时间内以传统的方式损失了近10万美元,他失去了继续这个项目的意愿 . 回想起来,我认为该系统会带来巨大的利润 - 不是因为我必须做任何事情,而是因为我 生产环境 的基因群体恰好偏向买单(而不是卖单)大约5: 1比率 . 正如我们知道的20/20后见之明,市场在1995年之后上涨了一点 .

  • 5

    我不知道家庭作业是否重要......

    在我的学习期间,我们推出了自己的计划来解决旅行商问题 .

    我们的想法是对几个标准进行比较(难以绘制问题,性能等),我们还使用了其他技术,如Simulated annealing .

    它工作得很好,但我们需要花一些时间来理解如何正确地进行“复制”阶段:将手头的问题建模成适合遗传编程的东西真的让我感到震惊,因为它最难...

    这是一个有趣的课程,因为我们还涉及神经网络等 .

    我想知道是否有人在“ 生产环境 ”代码中使用过这种编程 .

  • 7

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

    • 输入:一些FFT帧(想象一个2D浮点阵列)

    • 输出:单个浮点值(输入的加权和),阈值为0.0或1.0

    • 基因:输入权重

    • 适应度函数:占空比,脉冲宽度和BPM在合理范围内的组合 .

    我有几个GA调整到频谱的不同部分以及不同的BPM限制,因此它们不倾向于收敛到相同的模式 . 来自每个群体的前4个的输出被发送到渲染引擎 .

    一个有趣的副作用是,整个人口的平均适应度是改变的一个很好的指标音乐虽然通常需要4-5秒才能弄明白 .

  • 3

    阅读The Blind Watchmaker之后,我对pascal计划感兴趣道金斯说他已经开发出来,可以创建可以随时间演变的生物模型 . 我很感兴趣使用Swarm自己编写 . 我没有染色体控制的特性,这些特性影响了生物的生存能力 . 他们生活在一个简单的世界里,可以互相攻击对方和他们的环境 .

    生物或死亡的部分生活或死亡部分是由于偶然,但也取决于他们如何有效地适应当地环境,他们消耗营养素的程度以及他们如何成功复制 . 这很有趣,但也更能证明我的妻子我是一个极客 .

  • 2

    在学校的研讨会上,我们开发了一个基于音乐模式生成音乐的应用程序 . 该程序是用Java构建的,输出是带有歌曲的midi文件 . 我们使用GA的区别aproachs来生成音乐 . 我认为这个程序可以用来探索新的作品 .

  • 3

    不久之前,我推出了一个GA来演化实际上图像处理内核以从哈勃太空望远镜(HST)图像中去除宇宙射线轨迹 . 标准方法是使用哈勃望远镜进行多次曝光,并仅保留所有图像中相同的内容 . 由于HST时间非常宝贵,我是一名天文学家,并且最近参加了进化计算大会,我想到了使用GA来清理单次曝光 .

    个体采用树形式,以3x3像素区域作为输入,执行一些计算,并决定是否以及如何修改中心像素 . 通过将输出与以传统方式清理的图像(即堆叠曝光)进行比较来判断适合度 .

    它实际上有点工作,但不足以保证原来的方法 . 如果我没有时间限制我的论文,我可能已经扩展了算法可用的遗传部分bin . 我很确定我可以大大改进它 .

    使用的库:如果我没记错的话,IRAF和cfitsio用于天文图像数据处理和I / O.

  • 2

    2004年1月,飞利浦新显示技术公司联系了我,他们正在为亚马逊Kindle和其他公司在美国市场推出的第一款商用电子墨水索尼Librie创建电子产品,该产品仅在日本发布 . 一个欧洲 .

    飞利浦工程师遇到了一个重大问题 . 在产品推向市场的几个月前,他们在更换页面时仍然在屏幕上出现重影 . 问题是产生静电场的200名司机 . 这些驱动器中的每一个都具有必须设置在零和1000mV之间的特定电压或类似的电压 . 但如果你改变了其中一个,那就会改变一切 .

    因此,单独优化每个驱动器的电压是不可能的 . 可能的值组合的数量是数十亿,并且特殊相机花费大约1分钟来评估单个组合 . 工程师已经尝试了许多标准的优化技术,但没有什么可以接近的 .

    总工程师联系我,因为我之前已经向开源社区发布了一个遗传编程库 . 他问GP / GA是否会有所帮助,以及我是否可以参与其中 . 我做了,大约一个月我们一起工作,编写和调整GA库,合成数据,并将其集成到他们的系统中 . 然后,一个周末,他们让它与真实的东西一起运行 .

    接下来的星期一,我收到了他和他们的硬件设计师发来的这些热情洋溢的电子邮件,讲述了没人能相信GA发现的惊人结果 . 就是这样 . 那年晚些时候,该产品进入市场 .

    我没有得到一分钱,但我得到了'吹牛'的权利 . 他们从一开始就说他们已经超出预算,所以在我开始研究之前我就知道这笔交易是什么 . 对于GA的应用来说,这是一个很棒的故事 . :)

相关问题