首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从人口中选择多少个人?(遗传算法)

从人口中选择多少个人?(遗传算法)
EN

Stack Overflow用户
提问于 2017-03-23 01:18:26
回答 3查看 2.8K关注 0票数 3

我已经开始实施我自己的遗传算法,我正处于决定如何为新一代选择父母的阶段。我读过一些书,似乎有很多不同的方法。

我知道各种选择技术(锦标赛,轮盘赌),但我似乎找不到确切的多少父母应该选择的信息。

我要处理的最初的人口规模将在50-75人之间。我想也许为下一代选择一半的人口,所以每一代人口都会减少一半,但不确定这是否是最好的选择。

任何建议都会很好。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-23 08:35:54

作为硕士学位的一部分,我上了一门关于遗传算法的课程。

正如@et_l正确地指出的那样,总体应该是相同大小的每一次迭代,所以没有意义的是,您需要越来越少的解决方案,每一代(减少一半,如您所说的)。50-75岁的人口也非常少。我建议在你们的人群中至少有100种解决方案。

选择多少父母完全取决于你。你可以选择你的全部人口,或者只有少数人。父母的数量通常只会影响你的人口聚集到一个单一解决方案的速度。一般来说,你选择的父母越少,你收敛的速度就越快。

现在假设(例如)你选择你的100人口中的前10位解决方案作为你下一代的父母。你杀死了其他90个人,保持了前10名。(请注意,你也有不同的数量,这并不总是你的人口中没有进入顶端,成为父母的一部分。)

接下来,你把你的10个父母结合起来,创造出新的解决方案。结合起来有很多种方法。在这一步,重要的是让你的人口回到初始规模的人口,即100。你可以选择让你的10个父母留在你的新一代,或者杀死他们,使他们完全由10个父母组成,而不是由10个父母+90个孩子组成。

另外,你现在也可以对你的新群体进行一些突变,以获得更广泛的解决方案。你是否这样做完全取决于你自己,我建议试一试,看看这会产生什么样的效果。如果你选择包括突变,通常只有一小部分人应该变异。

最后,您有了您的新人口,如果您愿意,您可以开始另一次迭代。继续进行迭代,直到您在总体中得到满意的解决方案。

我希望我已经说清楚了,有很多方法可以实现遗传算法,并且需要一些实验才能找到适合您特定问题的实现方法。

票数 12
EN

Stack Overflow用户

发布于 2017-03-23 08:06:15

我对遗传算法没有经验,但阅读Wikipedia page,我可以看到,总体应该是相同的规模,每次迭代。其中提到的终止条件包括一个固定的迭代次数和一个最小值,以便在一代人中适应最佳解(个体)。从理论上讲,你应该能够继续迭代,在你达到终止条件之前,你应该能创造更多的世代。

考虑到这一点,你现在可以计算出你需要多少父母才能产生新的一代。请注意,您正在从上一代的父母中选择,以生成新的,使用遗传运算符(通常是交叉和突变以及它们的组合)。您不使用选定的个人本身作为新的一代,因为这将不会导致解决方案的演变。因此,要计算需要的父母数量,您需要确定您要使用多少父母来生成一个孩子(“经典”方法是2,但这并不重要)。通常,您不会使用同一组(一对)的父母来创建多个孩子。但我猜(维基页面中没有提到),你会在几个不同的组(夫妻)中使用一个特定的父母来创建不同的孩子。你也可能没有固定数量的父母为每个孩子创建(例如,通过突变,你只能使用一个父母一个孩子)。

假设您为每个孩子使用了确切的两个父母,您不会多次使用同一对父母,而是在多对夫妇中使用每个父母来生成多个子女。要使种群大小为y,您需要选择x父母亲,以便使(x choose 2) = (x!)/(2!(x-2)!) = (x•(x-1)/2) = (1/2)(x^2 - x)大于或等于y。用您所需的人口大小替换y,并解决x的问题。

我注意到的另一件相关的事情是,他们在wiki页面上写道,通常所选的种群大小是数百或数千,所以您选择的50-75的大小看起来非常小。

票数 1
EN

Stack Overflow用户

发布于 2017-03-23 08:24:36

每一代的冰棍都包括选择N个父母数量(无论你认为合适)。最好的数字取决于问题。2是常见的),交叉他们,变异孩子(只有1%的机会),并用他们代替一些群体(这是一个常见的做法,限制人口的规模)。你要的是最后一个。

一个简单的策略就是用每一代的冰穗来替代整个种群。另一个只取代了N个最坏的个体。其他可能是N个随机个体..。

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

https://stackoverflow.com/questions/42965537

复制
相关文章

相似问题

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