Algorithm 遗传算法/遗传编程解决方案的好例子是什么?

Algorithm 遗传算法/遗传编程解决方案的好例子是什么?,algorithm,artificial-intelligence,genetic-algorithm,evolutionary-algorithm,Algorithm,Artificial Intelligence,Genetic Algorithm,Evolutionary Algorithm,(GA)和(GP)是有趣的研究领域 我想知道您使用GA/GP解决的具体问题,以及如果您不使用自己的库/框架,您会使用哪些库/框架 问题: 您使用GA/GP解决了哪些问题 您使用了哪些库/框架 我在寻找第一手经验,所以除非你有,否则请不要回答。我不知道家庭作业是否重要 在我学习期间,我们推出了自己的程序来解决旅行推销员问题 我们的想法是对几个标准(映射问题的难度、性能等)进行比较,我们还使用了其他技术,例如 它工作得很好,但我们花了一段时间才理解如何正确地进行“繁殖”阶段:将手头的问题建模成适

(GA)和(GP)是有趣的研究领域

我想知道您使用GA/GP解决的具体问题,以及如果您不使用自己的库/框架,您会使用哪些库/框架

问题:

  • 您使用GA/GP解决了哪些问题
  • 您使用了哪些库/框架

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

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

在我学习期间,我们推出了自己的程序来解决旅行推销员问题

我们的想法是对几个标准(映射问题的难度、性能等)进行比较,我们还使用了其他技术,例如

它工作得很好,但我们花了一段时间才理解如何正确地进行“繁殖”阶段:将手头的问题建模成适合遗传编程的东西真的让我感到最困难的部分

这是一门有趣的课程,因为我们还涉猎了神经网络等

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

不是家庭作业

我作为专业程序员的第一份工作(1995年)是为标准普尔500指数期货编写一个基于遗传算法的自动交易系统。这个应用程序是用VisualBasic3[!]编写的,我不知道我当时是怎么做的,因为VB3甚至没有类

该应用程序从随机生成的固定长度字符串(“基因”部分)开始,每个字符串对应于标普500期货逐分钟价格数据中的特定形状,以及特定订单(买入或卖出)和止损和止损金额。每个字符串(或“基因”)的利润表现都通过3年的历史数据进行评估;每当指定的“形状”与历史数据匹配时,我都会假设相应的买入或卖出订单,并评估交易结果。我补充了一条警告,即每个基因都是从一笔固定的钱开始的,因此可能会破产,并从基因库中完全移除

在对一个群体进行每次评估后,幸存者随机进行杂交(只需混合来自两个父母的片段),选择一个基因作为父母的可能性与其产生的利润成正比。我还增加了点突变的可能性,让事情变得有趣一些。经过几百代人的努力,我最终得到了一批基因,这些基因可以将5000美元变成平均约10000美元,而不会有死亡/破碎的机会(当然,根据历史数据)


不幸的是,我从来没有机会现场使用这个系统,因为我的老板在不到3个月的时间里以传统方式交易,损失了近10万美元,他也不愿意继续这个项目。回想起来,我认为这个系统会获得巨大的利润——不是因为我做的事情一定是对的,而是因为我产生的基因数量恰好以5:1的比例偏向于购买订单(而不是销售订单)。正如我们20/20的后见之明,1995年后市场有所上涨。

以及一些常见问题,如旅行推销员和一个变体,我也写过(这需要我有一点独到的想法,而不仅仅是重新实现别人的想法)。有更可靠的算法来解决数独问题,但进化方法效果相当好

在过去的几天里,我一直在玩一个进化程序,在看到Reddit后,寻找扑克的“冷牌”。目前还不太令人满意,但我认为我可以改进


我有一个用于进化算法的颜色组合。

当你打算粉刷房子时,通常很难得到精确的颜色组合。通常,你心里有一些颜色,但它不是供应商展示给你的其中一种颜色

昨天,我的GA研究员教授提到了德国的一个真实故事(对不起,我没有进一步的参考资料,是的,如果有人要求,我可以找到)。这个家伙(我们称他为“颜色人”)过去常常挨家挨户地帮助人们找到准确的颜色代码,这将是顾客心目中的衣柜。以下是他将如何做到这一点:

这位色彩专家曾经随身携带一个使用遗传算法的软件程序。他曾经从4种不同的颜色开始——每种颜色编码为一条编码染色体(其解码值将是RGB值)。消费者选择4种颜色中的1种(这是他/她心目中最接近的颜色)。然后,程序将为该个体分配最大适应度,并使用变异/交叉进入下一代。重复上述步骤,直到消费者找到了确切的颜色,然后配色师告诉他RGB组合

通过为颜色指定与消费者心目中的颜色接近的最大适合度,颜色专家的计划增加了消费者心目中的颜色收敛的机会。我觉得很有趣

现在我已经有了a-1,如果你打算更多的-1,请。阐明这样做的原因

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

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