我发现了这个非常酷的 C++ 示例,字面意思是“Hello World!” 的遗传算法。
所以我决定用 C# 重新编码整个事情,这就是结果。
现在我问自己:是否有任何实际应用可以从一组随机字符串开始生成目标字符串?
编辑:我在推特上的好友刚刚发推文说“对于转录类型的东西(例如翻译)很有用。不一定是猴子的”。我希望我有一个线索。
我发现了这个非常酷的 C++ 示例,字面意思是“Hello World!” 的遗传算法。
所以我决定用 C# 重新编码整个事情,这就是结果。
现在我问自己:是否有任何实际应用可以从一组随机字符串开始生成目标字符串?
编辑:我在推特上的好友刚刚发推文说“对于转录类型的东西(例如翻译)很有用。不一定是猴子的”。我希望我有一个线索。
从一组随机字符串开始生成目标字符串是否有任何实际应用?
当然。想象一下您知道如何评估特定字符串的适合度并且选择是离散的并且以某种方式受到约束的任何场景:
不会。每次运行 GA 时,您都在给它最终的答案。这非常适合展示 GA 的工作原理以及它的强大功能,但除此之外没有任何目的。
您可以编写一个使用 IronPython 等动态语言编写代码的 EA,其目标是创建以下代码:a) 在不崩溃的情况下执行,b) 分析股票市场并智能地买卖股票。
这是对必要的非常简单的看法,但这是可能的。您将需要一个为 IronPython 代码(技术指标等)提供大量方法的主机和一个报价数据库。
不只是生成任何旧的随机代码也很聪明,以免您格式化自己的硬盘驱动器。您需要一个沙箱,您需要限制可访问的命名空间,并且您需要提供时间限制以避免无限循环。您还可以提供语义指南,允许它选择适当的批准关键字,而不是仅仅将随机字母串在一起——这将大大加快进化速度。
所以,我参与了一个项目,除了 EA 之外什么都做。我们有一个卫星天线,它可以从纳斯达克获取实时股票报价,一个具有 API 的交易服务,以及一个原始的决策“大脑”,在报价进入时做出决策。
可悲的是,其中一位合伙人突然出局,辞掉了工作,分叉了项目(得到了自己的菜,等等),并开始使用尚未准备好的逻辑进行交易。他损失了一大笔钱。事实证明,对于某些人来说,这种类型的项目距离普通赌博仅一步之遥。但无论如何,该项目在那之后有点失败了。但是,发展逻辑部分是缺失的环节。我知道有人在做这种事情。
我在 2 个现实生活中的研究问题中使用了 GA。
一个是功率优化问题(最大化打开的电器数量,满足每个电器的可用功率限制和服务保证)
另一个是用于无线电网络优化,在固定设备预算的情况下最大化覆盖区域
GA 有一个主要缺点,它通常以基因速度工作,因此在一些严重的时间依赖项目中使用它是非常冒险的。