首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >遗传算法--是什么使算法具有遗传特性?

遗传算法--是什么使算法具有遗传特性?
EN

Stack Overflow用户
提问于 2018-09-26 03:51:20
回答 2查看 74关注 0票数 0

我刚开始学习遗传算法,没有查看代码中的任何现有遗传算法,我编写了这个简单的程序,其目标是从给定的范围内猜测一个数字,并且猜测的数字应该与预期的数字正确匹配。我知道GA基本上是不断进化的,直到它达到预期的状态。

这个程序所做的是,它生成一个随机数,将其与正确的数字进行比较,并在每次猜测失败后调整其范围,并且在一段时间内,随着范围的缩小,它会正确地猜测数字。这个程序会被称为遗传算法吗?

代码语言:javascript
运行
复制
number_to_be_guessed = 10

attempt = 0
start = 0
end = 100
while True:
    guessed_number = random.randint(start,end)
    if guessed_number == number_to_be_guessed:
        print("Number found, which is {}".format(guessed_number))
        break
    elif guessed_number > number_to_be_guessed:
        end = guessed_number
    else:
        start = guessed_number   
    print("Attempt:{} -- Guessed Number:{} -- Start Value:{} -- End Value:{}"\
      .format(attempt,guessed_number,start,end))
    attempt += 1

输出

尝试次数:0 --猜测数:0 --起始值:0 --结束值:100

尝试次数:1 --猜测数:27 --起始值:0 --结束值:27

尝试次数:2 --猜测数:22 --起始值:0 --结束值:22

尝试次数:3 --猜测数:15 --起始值:0 --结束值:15

尝试次数:4 --猜测数:2 --起始值:2 --结束值:15

尝试次数:5 --猜测数:6 --起始值:6 --结束值:15

尝试次数:6 --猜测数:8 --起始值:8 --结束值:15

尝试次数:7 --猜测数:9 --起始值:9 --结束值:15

尝试次数:8 --猜测数:14 --起始值:9 --结束值:14

尝试次数:9 --猜测数:12 --起始值:9 --结束值:12

尝试次数:10 --猜测数:12 --起始值:9 --结束值:12

找到的数字是10

EN

回答 2

Stack Overflow用户

发布于 2018-09-26 04:06:00

Here is a good summary.

我不相信你的解决方案可以被称为遗传算法。

遗传算法有几个特点:

有一种表示法促进了“突变”。例如,如果您可以用位字表示算法的状态,并且位字的随机排列创建了算法的有效更改状态,那么这类似于您可能在遗传算法中看到的情况。

这种表现形式也可能促进杂交。所以,使用比特字的例子,如果你可以从一个解决方案中提取一半的比特,从另一个解决方案中提取一半的比特,并将它们组合在一起;而这种组合代表了算法的有效状态,那么这类似于你在遗传算法中可能看到的情况。

这样的算法往往会通过自然选择存活下来。所以你通常有一个适应度函数,它决定了你的解决方案的效果如何。糟糕的解决方案可能会被丢弃。好的解决方案可能会在下一次迭代测试时进行变异或杂交。

你的算法不会做这些事情。

票数 0
EN

Stack Overflow用户

发布于 2018-09-27 21:29:08

要创建一个遗传/进化算法,你需要知道几件事

定义问题你必须知道你想要得到什么然后你就可以开始开发

你发布的代码只是一种蛮力,你在循环中随机取一个数字。

真正的GA有以下一些步骤:

  1. Initialization of first generation
  2. Evaluation of children
  3. Taking parents
  4. Genetic generation
  5. Evaluation of the generation
  6. Selection of the parents
  7. Genetic operation(变异和交叉) (making children)
  8. Evaluation of children
  9. Taking其中一些as a parents
  10. 循环,直到你的适应度函数告诉你的结果足够好

现在你就知道了。在这里很难解释所有的事情。你会发现它在互联网上到处都是:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52505756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档