【问题标题】:What's the "Hello World!" of genetic algorithms good for?什么是“你好世界!”遗传算法的好处?
【发布时间】:2010-10-16 04:27:22
【问题描述】:

我发现了这个 very cool C++ sample ,字面意思是“Hello World!”遗传算法。

我因此决定用 C# 重新编写整个代码,结果是 this

现在我问自己:是否有任何实际应用可以从一组随机字符串开始生成目标字符串?

编辑:我在推特上的好友刚刚在推特上说“对于转录类型的东西(例如翻译)很有用。不一定是猴子的”。我希望我有一个线索。

【问题讨论】:

  • 嘘,我要用 GIT 来检查你的项目?我们卑微的颠覆用户怎么办?
  • 不能让每个人都开心(顺便说一句,GIT 很酷):)

标签: c# c++ genetic-algorithm


【解决方案1】:

在从一组随机字符串开始生成目标字符串方面是否有任何实际应用?

当然。想象一下您知道如何评估特定字符串的适合度,并且选择是离散的并且以某种方式受到约束的任何场景:

  • 挑选可发音的名字(“Xhjkxc”适应度低;“Artekzo”适应度高)
  • 尝试一系列棋步
  • 猜一个保险箱的密码,假设你知道你离解锁每个不倒翁还有多远
  • 选择评估为单词的电话号码(例如,“843-2378”具有很高的适应度,因为它拼写为“THE-BEST”)

【讨论】:

  • 我不确定我得到了“发音”的例子
  • 假设您想从一些随机字符串中找到一个可发音的名称,并且您有一些方法可以评估每个名称的发音程度。你能看到 GA 是如何随机排列字符串直到达到具有高“发音”(适应度)的东西吗?
  • 是的,我明白了——这一切都归结为了解正确的适应度函数。所以在发音的情况下,它必须与辅音和人声配对或类似的smt有关。
  • 说的差不多。编写 GA 最难的部分通常是选择合适的适应度函数。
  • 你会感到惊讶。毕竟,生活是一个很长的镜头,而我们就在这里。 ;)
【解决方案2】:

没有。每次运行 GA 时,您都在给它最终的答案。这非常适合展示 GA 的工作原理以及它的强大功能,但除此之外没有任何目的。

【讨论】:

  • 我完全不同意这个;您不需要知道运行 GA 的“答案”是什么。事实上,有时没有答案——就像在我的“选择一个可发音的名字”示例中一样。 GA 尤其擅长这类事情。
  • 你确实需要知道一个特定的答案有多好(这就是适应度函数的用途)。但除此之外,它是肉汁。
  • 是的,运行 GA 并不总是需要知道答案。但是,您为这个特定的实现做了。他的问题不是关于一般的 GA,而是关于这个特定的实现。
  • 好吧,我同意凯文的观点。我见过这类 GA 示例。它们非常适合作为示例,但仅此而已,因为您已经知道答案。 GA 有意义的地方是您不知道答案,或者没有“一个答案”,而是提高效用程度。
  • (在某种意义上,我也同意 John 的观点……他的意思是——我相信——GA 可以非常有价值,从 GA 中获取价值的应用程序遵循与此相同的原则示例)。
【解决方案3】:

您可以编写一个使用 IronPython 等动态语言编写代码的 EA,其目标是创建以下代码:a) 执行时不会崩溃;b) 分析股票市场并智能地买卖股票。

这是对必要的非常简单的看法,但这是可能的。您将需要一个为 IronPython 代码(技术指标等)提供大量方法的主机和一个报价数据库。

不只是生成任何旧的随机代码也很聪明,以免您格式化自己的硬盘驱动器。您需要一个沙箱,您需要限制可访问的命名空间,并且您需要提供时间限制以避免无限循环。您还可以提供语义指南,允许它选择适当的批准关键字,而不是仅仅将随机字母串在一起——这将大大加快进化速度。

所以,我参与了一个项目,除了 EA 之外什么都做。我们有一个接收来自纳斯达克的实时股票报价的卫星天线,一个具有 API 的交易服务,以及一个在报价进入时做出决策的原始决策“大脑”。

可悲的是,其中一位合伙人突然出局,辞掉了工作,分叉了项目(得到了自己的菜,等等),并开始使用尚未准备好的逻辑进行交易。他损失了一大笔钱。事实证明,对于某些人来说,这种类型的项目距离普通赌博仅一步之遥。但无论如何,该项目在那之后有点失败了。但是,发展逻辑部分是缺失的环节。而且我知道有人在做这种事情。

【讨论】:

  • 感谢您对此的贡献 - 作为一个可能的应用程序,绝对有趣且非常强大,还有很好的轶事 :) - 任何有趣的相关资源?
  • 这里有一些有趣的东西:stackoverflow.com/questions/131165/…
  • 这只是对 EA 的一些帮助。考虑到开始使用它们真的很容易,大多数关于 EA 的文章都非常自命不凡(阅读:学术)。
【解决方案4】:

我在 2 个现实生活中的研究问题中使用了 GA。

一个是功率优化问题(最大化打开的电器数量,满足每个电器的可用功率限制和服务保证)

另一个是无线网络优化,在固定设备预算的情况下最大化覆盖区域

【讨论】:

    【解决方案5】:

    GA 有一个主要缺点,它通常以基因速度工作,因此在一些严重的时间依赖性项目中使用它是相当冒险的。

    【讨论】:

      猜你喜欢
      • 2021-11-19
      • 2013-03-09
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多