在遗传算法中啥是二进制锦标赛法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在遗传算法中啥是二进制锦标赛法?相关的知识,希望对你有一定的参考价值。

锦标赛法是选择操作的一种方法。

假设种群规模为n,该法的步骤为:
1.随机产生n个个体作为第一代(其实这步准确的说不是属于选择操作的,但每个算子并没有绝对的界限,这个是在选择操作之前的必做之事)

2.从这n个个体中随机(注意是随机)选择k(k<n)个个体,k的取值小,效率就高(节省运行时间),但不宜太小,一般取为n/2(取整)

3.从这k个个体中选择最大的一个个体(涉及到排序的方法),作为下一代n个个体中的一个个体

4.重复2-4步,至得到新的n个个体

5.进行这新的n个个体之间的交叉操作

不论是二进制还是十进制,方法都是一样的
参考技术A 我的理解是,从一些个体中,选出两个队的个体,每个队个体数为n;然后分别对两个队的个体进行按适应度大小来排序,然后将甲队的某一个个体选出,与乙队的某一个个体进行交叉操作。

java中啥是栈啊?

栈是一种常用的数据结构,栈只允许访问栈顶的元素,栈就像一个杯子,每次都只能取杯子顶上的东西,而对于栈就只能每次访问它的栈顶元素,从而可以达到保护栈顶元素以下的其他元素.”先进后出”或”后进先出”就是栈的一大特点,先进栈的元素总是要等到后进栈的元素出栈以后才能出栈.递归就是利用到了系统栈,暂时保存临时结果,对临时结果进行保护.
对于栈的学习,建议你看一看<数据结构与算法>这本书.来自:求助得到的回答
参考技术A 存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)。

栈和常量池中的对象可以共享,对于堆中的对象不可以共享。栈中的数据大小和生命周期是可以确定的,当没有引用指向数据时,这个数据就会消失。堆中的对象的由垃圾回收器负责回收,因此大小和生命周期不需要确定。

局部变量的数据存在于栈内存中。

栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量数据(int, short, long, byte, float, double, boolean, char)和对象句柄(引用)。
参考技术B 是java中实现的一种的数据结构,就好像是个箱子,这能从一头开始往里放东西,也只能从这条往外拿东西。往外拿的时候是跟放进去的顺序相反,就是所谓的先进后出。 参考技术C 将白了就是先进后出,一种数据结构

以上是关于在遗传算法中啥是二进制锦标赛法?的主要内容,如果未能解决你的问题,请参考以下文章

多目标遗传算法 ------ NSGA-II (部分源码解析)二元锦标赛选择 tourselect.c

遗传算法中比赛选择的多次迭代

MATLAB遗传法

遗传算法的基本原理

遗传算法

遗传算法