发布网友 发布时间:2024-09-08 13:35
共2个回答
热心网友 时间:2024-09-09 06:14
首先y=x*x在[0,31]这个函数的极值是取31的时候,用遗传算法来解答这样的问题是有点多余的。遗传算法的主要步骤是4步,初始化种群,选择,交叉,变异。这里说的淘汰函数,很可能就是在选择选择算子,这个算子是根据最适合最优先的算法来实现。举个简单的例子,你要用数字进行遗传算法,肯定得把他转化为2进制的染色体,【0-31】就是从00000-11111,每条染色体5个基因。对于选择运算来说,每次要从种群选择最优的几个,第一次完全是随机的。假如随机选4个染色体,选的4条染色体是1,2,3,4。很明显他们的值是1,4,9,16,总和是30,那么选择4的概率就是30分之16,这样就可以尽可能的选择大的数值。这里的淘汰域3,可能是每次淘汰3条染色体,或者每次只选择3条最优的染色体,视其选择的条数而定。我看在程序里没有用到这个东西。遗传算法以及进化算法不限定于特殊的程序,每个人有不同的理解,不必拘泥于概念。热心网友 时间:2024-09-09 06:10
虽然我没有弄过遗传、进化类的算法,但我有学习算法的心得