遗传算法学习心得体会

篇一:遗传算法学习心得

基本概念

遗传算法(Genetic Algorithms, GA)是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法。

它模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都保留一组候选解,并按某种指标从解群中选取较优的个体,利用遗传算子(选择、交叉和变异)对这些个体进行组合,产生新一代的候选解群,重复此过程,直到满足某种收敛指标为止。

GA的组成:

(1)编码(产生初始种群)

(2)适应度函数

(3)遗传算子(选择、交叉、变异)

(4)运行参数

编码

基因在一定能够意义上包含了它所代表的问题的解。基因的编码方式有很多,这也取决于要解决的问题本身。常见的编码方式有:

(1) 二进制编码,基因用0或1表示(常用于解决01背包问题) 如:基因A:00100011010 (代表一个个体的染色体)

(2) 互换编码(用于解决排序问题,如旅行商问题和调度问题)

如旅行商问题中,一串基因编码用来表示遍历的城市顺序,如:234517986,表示九个城市中,先经过城市2,再经过城市3,依此类推。

(3) 树形编码(用于遗传规划中的演化编程或者表示)

如,问题:给定了很多组输入和输出。请你为这些输入输出选择一个函数,使得这个函数把每个输入尽可能近地映射为输出。

编码方法:基因就是树形结构中的一些函数。

(4) 值编码 (二进制编码不好用时,解决复杂的数值问题)

在值编码中,每个基因就是一串取值。这些取值可以是与问题有关任何值:整数,实数,字符或者其他一些更复杂的东西。

适应度函数

遗传算法对一个个体(解)的好坏用适应度函数值来评价,适应度函数值越大,解的质量越好。适应度函数是遗传算法进化过程的驱动力,也是进行自然选择的唯一标准,它的设计应结合求解问题本身的要求而定。

如TSP问题,遍历各城市路径之和越小越好,这样可以用可能的最大路径长度减去实际经过的路径长度,作为该问题的适应度函数。

遗传算子——选择

遗传算法使用选择运算来实现对群体中的个体进行优胜劣汰操作:适应度高的个体被遗传到下一代群体中的概率大;适应度低的个体,被遗传到下一代群体中的概率小。选择操作的任务就是按某种方法从父代群体中选取一些个体,遗传到下一代群体。

SGA(基本遗传算法)中采用轮盘赌选择方法。

轮盘赌选择又称比例选择算子,基本思想:各个个体被选中的概率与其适应度函数值大小成正比。设群体大小为n ,个体i 的适应度为 Fi,则个体i 被选中遗传到下一代群体的概率为:

遗传算子——交叉

所谓交叉运算,是指对两个相互配对的染色体依据交叉概率按某种方式相互交换其部分基因,从而形成两个新的个体。交叉运算在GA中起关键作用,是产生新个体的主要方法。

1. 单交叉点法 (用于二进制编码)

选择一个交叉点,子代在交叉点前面的基因从一个父代基因那里得到,后面的部分从另外一个父代基因那里

遗传算法学习心得体会

得到。

如:交叉前:

00000|01110000000010000

11100|00000111111000101

交叉后:

00000|00000111111000101

11100|01110000000010000

2. 双交叉点法 (用于二进制编码)

选择两个交叉点,子代基因在两个交叉点间部分来自一个父代基因,其余部分来自于另外一个父代基因.

如:交叉前:

01 |0010| 11

11 |0111| 01

交叉后:

11 |0010| 01

01 |0111| 11

3. 基于“ 与/或 ”交叉法 (用于二进制编码)

对父代按位"与”逻辑运算产生一子代A;按位”或”逻辑运算产生另一子代B。该交叉策略在解背包问题中效果较好 .

如:交叉前:

01001011

11011101

交叉后:

01001001

11011111

4. 单交叉点法 (用于互换编码)

选择一个交叉点,子代的从初始位置出发的部分从一个基因复制,然后在另一个基因中扫描,如果某个位点在子代中没有,就把它添加进去。

如:交叉前:

87213 | 09546

98356 | 71420

交叉后:

87213 | 95640

98356 | 72104

5. 部分匹配交叉(PMX)法(用于互换编码)

先随机产生两个交叉点,定义这两点间的区域为匹配区域,并用交换两个父代的匹配区域。

父代A:872 | 130 | 9546

父代B:983 | 567 | 1420 变为:

TEMP A: 872 | 567 | 9546

TEMP B: 983 | 130 | 1420

对于 TEMP A、TEMP B中匹配区域以外出现的数码重复,要依据匹配区域内的位置逐一进行替换。匹配关系:1<——>5 3<——>6 7<——>0 子代A:802 | 567 | 9143

子代B:986 | 130 | 5427

6. 顺序交叉法(OX) (用于互换编码)

从父代A随机选一个编码子串,放到子代A的对应位置;子代A空余的位置从父代B中按B的顺序选取(与己有编码不重复)。同理可得子代B。

父代A: 872 | 139 | 0546

父代B: 983 | 567 | 1420

交叉后:

子代A: 856 | 139 | 7420

子代B: 821 | 567 | 3904

7. 循环交叉(CX)法(用于互换编码)

CX同OX交叉都是从一个亲代中取一些城市,而其它城市来自另外一个亲代,但是二者不同之处在于:OX中来自第一个亲代的编码子串是随机产生的,而CX却不是,它是根据两个双亲相应位置的编码而确定的。

父代A:1 2 3 4 5 6 7 8 9

| || | |

父代A:5 4 6 9 2 3 7 8 1

可得循环基因:1->5->2->4->9->1

用循环的基因构成子代A,顺序与父代A一样

1 24 5 9

用父代B剩余的基因填满子代A:

1 2 6 4 5 3 7 8 9

子代B的编码同理。(循环基因 5->1->9->4->2->5)

遗传算子——变异

变异是指依据变异概率将个体编码串中的某些基因值用其它基因值来替换,从而形成一个新的个体。GA中的变异运算是产生新个体的辅助方法,它决定了GA的局部搜索能力,同时保持种群的多样性。交叉运算和变异运算的相互配合,共同完成对搜索空间的全局搜索和局部搜索。

注:变异概率Pm不能太小,这样降低全局搜索能力;也不能太大,Pm > 0.5,这时GA退化为随机搜索。

篇二:遗传算法学习心得体会

遗传算法

概念

遗传算法是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,它借鉴了达

尔文的进化论和孟德尔的遗传学说。其本质是一种高效、并行、全局搜索的方法,它既能在

搜索中自动获取和积累有关空间知识,并自适应地控制搜索过程以求得最优解遗传算法操作

使用适者生存的原则,在潜在的解决方案种群中逐次产生一个近视最优方案。在遗传算法的

每一代中,根据个体在问题域中的适应度值和从自然遗传学中借鉴来的再造方法进行个体选

择,产生一个新的近视解。这个过程导致种群中个体的进化,得到的新个体比原个体更适应

环境,就像自然界中的改造一样。应用

遗传算法在人工智能的众多领域具有广泛应用。例如,机器学习、聚类、控制(如煤气

管道控制)、规划(如生产任务规划)、设计(如通信网络设计、布局设计)、调度(如作业车

间调度、机器调度、运输问题)、配置(机器配置、分配问题)、组合优化(如tsp、背包问

题)、函数的最大值以及图像处理和信号处理等等。遗传算法多用应与复杂函数的优化问题中。原理

遗传算法模拟了自然选择和遗传中发生的复制、交叉、和变异等现象,从任一初始种群

出发,通过随机选择、交叉、变异操作,产生一群更适合环境的个体,使群体进行到搜索空

间中越来越好的区域,这样一代一代地不断繁衍进化,最后收敛到一群最适合环境的个体求

得问题的最优解。

算法流程 1. 编码:解空间中的解数据x,作为作为遗传算法的表现型形式。从表现型到基本型的映射称为编码。遗传算法在进行搜索之前先将解空间的解数据表示成遗传

空间的基本型串结构数据,这些串结构数据的不同的组合就构成了不同的点。

2. 初始种群的形成:随机产生n个初始串数据,每个串数据称为一个个体,n个串数据构成了一个群体。遗传算法以这n个串结构作为初始点开始迭代。设置进化

代数计数器t0;设置最大进行代数t;随机生成m个个体作为初始群体p(0)。

3. 适应度检测:适应度就是借鉴生物个体对环境的适应程度,适应度函数就是对问题中的个体对象所设计的表征其优劣的一种测度。根据具体问题计算p(t)的适

应度。

4. 选择:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到 下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的

适应度评估基础上的。

5. 交叉:将交叉算子作用于群体。所谓交叉是指把两个父代个体的部分结 构加以替换重组而生成新个体的操作。遗传算法中起核心作用的就是交叉算子。

6. 变异:将变异算子作用于群体。即是对群体中的个体串的某些基因座上 的基因值作变动。

群体p(t)经过选择、交叉、变异运算之后得到下一代群体p(t+1)。

7. 终止条件判断:若t<=t,则t=t+1,转到第3步,否则以进化过程中所得 到的具有最大适应度个体作为最优解输出,终止计算。 遗传算法流程图如下图所示: 遗传算法

下几种:适应度比例方法、随机遍历抽样法、局部选择法。其中轮盘赌选择法是最简单也是最常用的选择方法。在该方法中,各个个体的选择概率

和其适应度值成比例。设群体大小为n,其中个体i的适应度为,则i 被选择的概率,为遗

传算法

2、交叉:在自然界生物进化过程中起核心作用的是生物遗传基因的重组(加上变异)。同

样,遗传算法中起核心作用的是遗传操作的交叉算子。所谓交叉是指把两个父代个体的部分

结构加以替换重组而生成新个体的操作。通过交叉,遗传算法的搜索能力得以飞跃提高。 交叉算子根据交叉率将种群中的两个个体随机地交换某些基因,能够产生新的基因组合,

期望将有益基因组合在一起。根据编码表示方法的不同,可以有以下的算法:b)二进制交叉(binary valued crossover)

1)单点交叉(single-point crossover)

2)多点交叉(multiple-point crossover)

3)均匀交叉(uniform crossover)

4)洗牌交叉(shuffle crossover)

5)缩小代理交叉(crossover with reduced surrogate)。

3、变异

变异算子的基本内容是对群体中的个体串的某些基因座上的基因值作变动。依据个体编

码表示方法的不同,可以有以下的算法: a)实值变异

b)二进制变异。

一般来说,变异算子操作的基本步骤如下: a)对群中所有个体以事先设定的编译概率判断是否进行变异b)对进行变异的个体随机选择变异位进行变异。 例:简单一元函数优化求下面函数的最大值:

f(x)=xsin(10*pi*x)+2.0, -1<=x<=2;程序:

figure(1);

fplot(variable.*sin(10*pi*variable)+2.0,[-1,2]);%画出函数曲线%定义遗传算法参数

nind=40; %个体数目(number of individuals) maxgen=25;%最大遗传代数(maximum number of generations) preci=20; %

变量的二进制位数(precision of variables) ggap=0.9; %代沟(generation gap)trace=zeros(2, maxgen); %寻优结果的初始值 fieldd=[20;-1;2;1;0;1;1];%区域描述器(build field descriptor) chrom=crtbp(nind, preci);%初始种群gen=0; %代计数器variable=bs2rv(chrom, fieldd); %计算初始种群的十进制转换

objv=variable.*sin(10*pi*variable)+2.0;%计算目标函数值 while gen<maxgen

fitnv=ranking(-objv); %分配适应度值(assign fitness values)selch=select(sus, chrom, fitnv, ggap); %选择 selch=mut(selch); %变异 variable=bs2rv(selch, fieldd);%子代个体的十进制转换 objvsel=variable.*sin(10*pi*variable)+2.0;%计算子代的目标函数值

[chrom objv]=reins(chrom, selch, 1, 1, objv, objvsel); %重插入子代的新种群 variable=bs2rv(chrom, fieldd);

gen=gen+1; %代计数器增加%输出最优解及其序号,并在目标函数图像中标出,y为最优解,i为种群的序号

[y, i]=max(objv);hold on;plot(variable(i), y, bo);trace(1, gen)=max(objv); %遗传算法性能跟踪 trace(2,

gen)=sum(objv)/length(objv);end

variable=bs2rv(chrom, fieldd);%最优个体的十进制转hold on, grid;

plot(variable,objv,b*);figure(2);

plot(trace(1,:));

hold on;

plot(trace(2,:),-.);grid

legend(解的变化,种群均值的变化)篇二:遗传算法学习心得 基本概念

遗传算法(genetic algorithms, ga)是一类借鉴生物界自然选择和自然遗传机制的随机

化搜索算法。

它模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都

保留一组候选解,并按某种指标从解群中选取较优的个体,利用遗传算子(选择、交叉和变异)

对这些个体进行组合,产生新一代的候选解群,重复此过程,直到满足某种收敛指标为止。ga的组成:

(1)编码(产生初始种群)

(2)适应度函数

(3)遗传算子(选择、交叉、变异)

(4)运行参数

编码

基因在一定能够意义上包含了它所代表的问题的解。基因的编码方式有很多,这也取决

于要解决的问题本身。常见的编码方式有:

(1) 二进制编码,基因用0或1表示(常用于解决01背包问题) 如:基因a:

00100011010 (代表一个个体的染色体)

(2) 互换编码(用于解决排序问题,如旅行商问题和调度问题)如旅行商问题中,一串基因编码用来表示遍历的城市顺序,如:234517986,表示九个城

市中,先经过城市2,再经过城市3,依此类推。

(3) 树形编码(用于遗传规划中的演化编程或者表示) 如,问题:给定了很多组输入和输出。请你为这些输入输出选择一个函数,使得这个函数

把每个输入尽可能近地映射为输出。编码方法:基因就是树形结构中的一些函数。

(4) 值编码 (二进制编码不好用时,解决复杂的数值问题)在值编码中,每个基因就是一串取值。这些取值可以是与问题有关任何值:整数,实数,

字符或者其他一些更复杂的东西。适应度函数

遗传算法对一个个体(解)的好坏用适应度函数值来评价,适应度函数值越大,解的质

量越好。适应度函数是遗传算法进化过程的驱动力,也是进行自然选择的唯一标准,它的设

计应结合求解问题本身的要求而定。如tsp问题,遍历各城市路径之和越小越好,这样可以用可能的最大路径长度减去实际

经过的路径长度,作为该问题的适应度函数。 遗传算子——选择

遗传算法使用选择运算来实现对群体中的个体进行优胜劣汰操作:适应度高的个体被遗

传到下一代群体中的概率大;适应度低的个体,被遗传到下一代群体中的概率小。选择操作

的任务就是按某种方法从父代群体中选取一些个体,遗传到下一代群体。 sga(基本遗传算法)中采用轮盘赌选择方法。 轮盘赌选择又称比例选择算子,基本思想:各个个体被选中的概率与其适应度函数值大

小成正比。设群体大小为n ,个体i 的适应度为 fi,则个体i 被选中遗传到下一代群体的

概率为:遗传算子——交叉

所谓交叉运算,是指对两个相互配对的染色体依据交叉概率按某种方式相互交换其部分

基因,从而形成两个新的个体。交叉运算在ga中起关键作用,是产生新个体的主要方法。

1. 单交叉点法 (用于二进制编码) 选择一个交叉点,子代在交叉点前面的基因从一个父代基因那里得到,后面的部分从另外

一个父代基因那里得到。

如:交叉前:

00000|01110000000010000 11100|00000111111000101交叉后:

00000|0000011111100010111100|01110000000010000

2. 双交叉点法 (用于二进制编码) 选择两个交叉点,子代基因在两个交叉点间部分来自一个父代基因,其余部分来自于另外

一个父代基因.

如:交叉前:

01 |0010| 11

11 |0111| 01

交叉后:

11 |0010| 01

01 |0111| 11

3. 基于“ 与/或 ”交叉法 (用于二进制编码)对父代按位与”逻辑运算产生一子代a;按位”或”逻辑运算产生另一子代b。该交叉策

略在解背包问题中效果较好 .如:交叉前:

01001011

11011101

交叉后:

01001001

11011111

4. 单交叉点法 (用于互换编码) 选择一个交叉点,子代的从初始位置出发的部分从一个基因复制,然后在另一个基因中

扫描,如果某个位点在子代中没有,就把它添加进去。

如:交叉前:

87213 | 09546

98356 | 71420

交叉后:

87213 | 95640

98356 | 72104

5. 部分匹配交叉(pmx)法(用于互换编码)先随机产生两个交叉点,定义这两点间的区域为匹配区域,并用交换两个父代的匹配区

域。

父代a:872 | 130 | 9546

父代b:983 | 567 | 1420 变为: temp a: 872 | 567 | 9546temp b: 983 | 130 | 1420对于 temp a、temp b中匹配区域以外出现的数码重复,要依据匹配区域内的位置逐一

进行替换。匹配关系:1<——>5 3<——>6 7<——>0 子代a:802

| 567 | 9143

子代b:986 | 130 | 5427

6. 顺序交叉法(ox) (用于互换编码)从父代a随机选一个编码子串,放到子代a的对应位置;子代a空余的位置从父代b中

按b的顺序选取(与己有编码不重复)。同理可得子代b。 父代a: 872 | 139 | 0546 父代b: 983 | 567 | 1420交叉后:

子代a: 856 | 139 | 7420子代b: 821 | 567 | 3904

7. 循环交叉(cx)法(用于互换编码) cx同ox交叉都是从一个亲代中取一些城市,而其它城市来自另外一个亲代,但是二者

不同之处在于:ox中来自第一个亲代的编码子串是随机产生的,而cx却不是,它是根据两

个双亲相应位置的编码而确定的。父代a:1 2 3 4 5 6 7 8 9| || | |

父代a:5 4 6 9 2 3 7 8 1可得循环基因:1->5->2->4->9->1 用循环的基因构成子代a,顺序与父代a一样1 24 5 9

用父代b剩余的基因填满子代a: 1 2 6 4 5 3 7 8 9

子代b的编码同理。(循环基因 5->1->9->4->2->5)遗传算子——变异

变异是指依据变异概率将个体编码串中的某些基因值用其它基因值来替换,从而形成一

个新的个体。ga中的变异运算是产生新个体的辅助方法,它决定了ga的局部搜索能力,同

时保持种群的多样性。交叉运算和变异运算的相互配合,共同完成对搜索空间的全局搜索和

局部搜索。

注:变异概率pm不能太小,这样降低全局搜索能力;也不能太大,pm > 0.5,这时

篇三:遗传算法 总结

遗传算法

概念

遗传算法是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,它借鉴了达尔文的进化论和孟德尔的遗传学说。其本质是一种高效、并行、全局搜索的方法,它既能在搜索中自动获取和积累有关空间知识,并自适应地控制搜索过程以求得最优解遗传算法操作使用适者生存的原则,在潜在的解决方案种群中逐次产生一个近视最优方案。在遗传算法的每一代中,根据个体在问题域中的适应度值和从自然遗传学中借鉴来的再造方法进行个体选择,产生一个新的近视解。这个过程导致种群中个体的进化,得到的新个体比原个体更适应环境,就像自然界中的改造一样。

应用

遗传算法在人工智能的众多领域具有广泛应用。例如,机器学习、聚类、控制(如煤气管道控制)、规划(如生产任务规划)、设计(如通信网络设计、布局设计)、调度(如作业车间调度、机器调度、运输问题)、配置(机器配置、分配问题)、组合优化(如TSP、背包问题)、函数的最大值以及图像处理和信号处理等等。遗传算法多用应与复杂函数的优化问题中。

原理

遗传算法模拟了自然选择和遗传中发生的复制、交叉、和变异等现象,从任一初始种群出发,通过随机选择、交叉、变异操作,产生一群更适合环境的个体,使群体进行到搜索空间中越来越好的区域,这样一代一代地不断繁衍进化,最后收敛到一群最适合环境的个体求得问题的最优解。

算法流程 1. 编码:解空间中的解数据x,作为作为遗传算法的表现型形式。从表现

型到基本型的映射称为编码。遗传算法在进行搜索之前先将解空间的解数据表示成遗传空间的基本型串结构数据,这些串结构数据的不同的组合就构成了不同的点。

2. 初始种群的形成:随机产生N个初始串数据,每个串数据称为一个个体,

N个串数据构成了一个群体。遗传算法以这N个串结构作为初始点开始迭代。设置进化代数计数器t0;设置最大进行代数T;随机生成M个个体作为初始群体P(0)。

3. 适应度检测:适应度就是借鉴生物个体对环境的适应程度,适应度函数

就是对问题中的个体对象所设计的表征其优劣的一种测度。根据具体问题计算P(t)的适应度。

4. 选择:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到

下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。

5. 交叉:将交叉算子作用于群体。所谓交叉是指把两个父代个体的部分结

构加以替换重组而生成新个体的操作。遗传算法中起核心作用的就是交叉算子。

6. 变异:将变异算子作用于群体。即是对群体中的个体串的某些基因座上

的基因值作变动。

群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t+1)。

7. 终止条件判断:若t<=T,则t=t+1,转到第3步,否则以进化过程中所得

到的具有最大适应度个体作为最优解输出,终止计算。

遗传算法流程图如下图所示:

遗传算法

下几种:适应度比例方法、随机遍历抽样法、局部选择法。

其中轮盘赌选择法是最简单也是最常用的选择方法。在该方法中,各个个体的选择概率和其适应度值成比例。设群体大小为n,其中个体i的适应度为,则i 被选择的概率,为遗传算法

2、交叉:在自然界生物进化过程中起核心作用的是生物遗传基因的重组(加上变异)。同样,遗传算法中起核心作用的是遗传操作的交叉算子。所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。通过交叉,遗传算法的搜索能力得以飞跃提高。

交叉算子根据交叉率将种群中的两个个体随机地交换某些基因,能够产生新的基因组合,期望将有益基因组合在一起。根据编码表示方法的不同,可以有以下的算法:

a)实值重组(real valued recombination)

1)离散重组(discrete recombination)

2)中间重组(intermediate recombination)

3)线性重组(linear recombination)

4)扩展线性重组(extended linear recombination)。

b)二进制交叉(binary valued crossover)

1)单点交叉(single-point crossover)

2)多点交叉(multiple-point crossover)

3)均匀交叉(uniform crossover)

4)洗牌交叉(shuffle crossover)

5)缩小代理交叉(crossover with reduced surrogate)。

3、变异

变异算子的基本内容是对群体中的个体串的某些基因座上的基因值作变动。依据个体编码表示方法的不同,可以有以下的算法:

a)实值变异

b)二进制变异。

一般来说,变异算子操作的基本步骤如下:

a)对群中所有个体以事先设定的编译概率判断是否进行变异

b)对进行变异的个体随机选择变异位进行变异。

例:简单一元函数优化

求下面函数的最大值:

f(x)=xsin(10*pi*x)+2.0, -1<=x<=2;

程序:

figure(1);

fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]);%画出函数曲线

%定义遗传算法参数

NIND=40; %个体数目(Number of individuals)

MAXGEN=25;%最大遗传代数(Maximum number of generations) PRECI=20; %变量的二进制位数(Precision of variables)

GGAP=0.9; %代沟(Generation gap)

trace=zeros(2, MAXGEN); %寻优结果的初始值

FieldD=[20;-1;2;1;0;1;1];%区域描述器(Build field descriptor)

Chrom=crtbp(NIND, PRECI);%初始种群

gen=0; %代计数器

variable=bs2rv(Chrom, FieldD); %计算初始种群的十进制转换 ObjV=variable.*sin(10*pi*variable)+2.0;%计算目标函数值

while gen<MAXGEN

FitnV=ranking(-ObjV); %分配适应度值(Assign fitness values)

SelCh=select('sus', Chrom, FitnV, GGAP); %选择

SelCh=recombin('xovsp', SelCh, 0.7);%重组

SelCh=mut(SelCh); %变异

variable=bs2rv(SelCh, FieldD);%子代个体的十进制转换

ObjVSel=variable.*sin(10*pi*variable)+2.0;%计算子代的目标函数值

[Chrom ObjV]=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel); %重插入子代的新种群

variable=bs2rv(Chrom, FieldD);

gen=gen+1; %代计数器增加

%输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群的序号

[Y, I]=max(ObjV);hold on;

plot(variable(I), Y, 'bo');

trace(1, gen)=max(ObjV); %遗传算法性能跟踪 trace(2, gen)=sum(ObjV)/length(ObjV);

end

variable=bs2rv(Chrom, FieldD);%最优个体的十进制转

hold on, grid;

plot(variable,ObjV,'b*');

figure(2);

plot(trace(1,:));

hold on;

plot(trace(2,:),'-.');grid

legend('解的变化','种群均值的变化')