遗传算法的原理及MATLAB程序实现
更新时间:2024-05-28 21:33:01 阅读量: 综合文库 文档下载
1 遗传算法的原理
1.1 遗传算法的基本思想
遗传算法(genetic algorithms,GA)是一种基于自然选择和基因遗传学原理,借鉴了生物进化优胜劣汰的自然选择机理和生物界繁衍进化的基因重组、突变的遗传机制的全局自适应概率搜索算法。
遗传算法是从一组随机产生的初始解(种群)开始,这个种群由经过基因编码的一定数量的个体组成,每个个体实际上是染色体带有特征的实体。染色体作为遗传物质的主要载体,其内部表现(即基因型)是某种基因组合,它决定了个体的外部表现。因此,从一开始就需要实现从表现型到基因型的映射,即编码工作。初始种群产生后,按照优胜劣汰的原理,逐代演化产生出越来越好的近似解。在每一代,根据问题域中个体的适应度大小选择个体,并借助于自然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。这个过程将导致种群像自然进化一样,后代种群比前代更加适应环境,末代种群中的最优个体经过解码,可以作为问题近似最优解。
计算开始时,将实际问题的变量进行编码形成染色体,随机产生一定数目的个体,即种群,并计算每个个体的适应度值,然后通过终止条件判断该初始解是否是最优解,若是则停止计算输出结果,若不是则通过遗传算子操作产生新的一代种群,回到计算群体中每个个体的适应度值的部分,然后转到终止条件判断。这一过程循环执行,直到满足优化准则,最终产生问题的最优解。图1-1给出了遗传算法的基本过程。
1.2 遗传算法的特点
1.2.1 遗传算法的优点
遗传算法具有十分强的鲁棒性,比起传统优化方法,遗传算法有如下优点: 1. 遗传算法以控制变量的编码作为运算对象。传统的优化算法往往直接利用控制变量的实际值的本身来进行优化运算,但遗传算法不是直接以控制变量的值,而是以控制变量的特定形式的编码为运算对象。这种对控制变量的编码处理方式,可以模仿自然界中生物的遗传和进化等机理,也使得我们可以方便地处理各种变量和应用遗传操作算子。
2. 遗传算法具有内在的本质并行性。它的并行性表现在两个方面,一是遗传
开始初始化,输入原始参数及给定参数,gen=1染色体编码,产生初始群体计算种群中每个个体的适应值终止条件的判断?Ngen=gen+1选择交叉Y变异新种群输出结果结束 图1-1 简单遗传算法的基本过程
算法的外在并行性,最简单的方式是让多台计算机各自进行独立种群的演化计算,最后选择最优个体。可以说,遗传算法适合在目前所有的并行机或分布式系统上进行并行计算处理。二是遗传算法的内在并行性,由于遗传算法采用种群的方式组织搜索,因而可同时搜索解空间内的多个区域,并相互交流信息。这样就
使得搜索效率更高,也避免了使搜索过程陷于局部最优解。
3. 遗传算法直接以目标函数值作为搜索信息。在简单遗传算法中,基本上不用搜索空间的知识和其它辅助信息,而仅用目标函数即适应度函数来评估个体解的优劣,且适应度函数不受连续可微的约束,对该函数和控制变量的约束极少。对适应度函数唯一的要求就是对于输入能够计算出可比较的输出。
4. 遗传算法是采用概率的变迁规则来指导它的搜索方向,其搜索过程朝着搜索空间的更优化的解区域移动,它的方向性使得它的效率远远高于一般的随机算法。遗传算法在解空间内进行充分的搜索,但不是盲目的穷举或试探,因为选择操作以适应度为依据,因此它的搜索性能往往优于其它优化算法。
5. 原理简单,操作方便,占用内存少,适用于计算机进行大规模计算,尤其适合处理传统搜索方法难以解决的大规模、非线性组合复杂优化问题。
6. 由于遗传基因串码的不连续性,所以遗传算法处理非连续混合整数规划时有其独特的优越性,而且使得遗传算法对某些病态结构问题具有很好的处理能力。
7. 遗传算法同其他算法有较好的兼容性。如可以用其他的算法求初始解;在每一代种群,可以用其他的方法求解下一代新种群。 1.2.2 遗传算法的缺点
但是,遗传算法也存在一些缺点。
1. 遗传算法是一类随机搜索型算法,而非确定性迭代过程描述,这种方式必然会较低的计算效率。
2. 对简单遗传算法的数值试验表明,算法经常出现过早收敛现象。 3. 遗传和变异的完全随机性虽然保证了进化的搜索功能,但是这种随机变化也使得好的优良个体的性态被过早破坏,降低了各代的平均适应值。
2. 遗传算法的实现
2.1 初始参数
种群规模n:种群数目影响遗传算法的有效性。种群数目太小,不能提供足够的采样点;种群规模太大,会增加计算量,使收敛时间增长。一般种群数目在20到160之间比较合适。
交叉概率pc:pc控制着交换操作的频率,pc太大,会使高适应值的结构很
快被破坏掉,pc太小会使搜索停滞不前,一般pc取0.5~1.0。
变异概率pm:pm是增大种群多样性的第二个因素,pm太小,不会产生新的基因块,pm太大,会使遗传算法变成随机搜索,一般pm取0.001~0.1。
进化代数t:表示遗传算法运行结束的一个条件。一般的取值范围100~1000。当个体编码较长时,进化代数要取小一些,否则会影响算法的运行效率。进化代数的选取,还可以采用某种判定准则,准则成立时,即停止。
2.2 染色体编码
利用遗传算法进行问题求解时,必须在目标问题实际表示与染色体位串结构之间建立一个联系。对于给定的优化问题,由种群个体的表现型集合所组成的空间称为问题空间,由种群基因型个体所组成的空间称为编码空间。由问题空间向编码空间的映射称作编码,而由编码空间向问题空间的映射成为解码。
按照遗传算法的模式定理,De Jong进一步提出了较为客观明确的编码评估准则,称之为编码原理。具体可以概括为两条规则:
(1)有意义积木块编码规则:编码应当易于生成与所求问题相关的且具有低阶、短定义长度模式的编码方案。
(2)最小字符集编码规则:编码应使用能使问题得到自然表示或描述的具有最小编码字符集的编码方案。
常用的编码方式有两种:二进制编码和浮点数(实数)编码。
二进制编码方法是遗传算法中最常用的一种编码方法,它将问题空间的参数用字符集?10,?构成染色体位串,符合最小字符集原则,便于用模式定理分析,但存在映射误差。
采用二进制编码,将决策变量编码为二进制,编码串长mi取决于需要的精度。例如,xi的值域为?ai,bi?,而需要的精度是小数点后5位,这要求将xi得值域至少分为?bi?ai??106份。设xi所需要的字串长为mi,则有:
6i 2mi?1??bi?ai??10 (2.1) ?m2b?a那么二进制编码的编码精度为??imii,将xi由二进制转为十进制可按下
2?1式计算:
xi?ai?decimal(substringi)?? (2.2)
decimal(substringi)表示变量xi的子串substringi的十进制值。其中,染色体编码 的总串长m??mi。
i?1N若没有规定计算精度,那么可采用定长二进制编码,即mi可以自己确定。 二进制编码方式的编码、解码简单易行,使得遗传算法的交叉、变异等操作实现方便。但是,当连续函数离散化时,它存在映射误差。再者,当优化问题所求的精度越高,如果必须保证解的精度,则使得个体的二进制编码串很长,从而导致搜索空间急剧扩大,计算量也会增加,计算时间也相应的延长。
浮点数(实数)编码方法能够解决二进制编码的这些缺点。该方法中个体的每个基因都要用参数所给定区间范围内的某一浮点数来表示,而个体的编码长度则等于其决策变量的总数。遗传算法中交叉、变异等操作所产生的新个体的基因值也必须保证在参数指定区间范围内。当个体的基因值是由多个基因组成时,交叉操作必须在两个基因之间的分界字节处进行,而不是在某一基因内的中间字节分隔处进行。
2.3 适应度函数
适应度函数是用来衡量个体优劣,度量个体适应度的函数。适应度函数值越大的个体越好,反之,适应值越小的个体越差。在遗传算法中根据适应值对个体进行选择,以保证适应性能好的个体有更多的机会繁殖后代,使优良特性得以遗传。一般而言,适应度函数是由目标函数变换而成的。由于在遗传算法中根据适应度排序的情况来计算选择概率,这就要求适应度函数计算出的函数值(适应度)不能小于零。因此,在某些情况下,将目标函数转换成最大化问题形式而且函数值非负的适应度函数是必要的,并且在任何情况下总是希望越大越好,但是许多实际问题中,目标函数有正有负,所以经常用到从目标函数到适应度函数的变换。
考虑如下一般的数学规划问题:
min f(x)s.t. g(x)?0 hmin?h(x)?hmax
变换方法一:
(1)对于最小化问题,建立适应度函数F(x)和目标函数f(x)的映射关系:
?Cmax?f(x)F(x)??0?f(x)?Cmaxf(x)?Cmax (2.3)
式中,Cmax既可以是特定的输入值,也可以选取到目前为止所得到的目标函数
f(x)的最大值。
(2)对于最大化问题,一般采用下述方法:
?f(x)?CminF(x)??0?f(x)?Cminf(x)?Cmin (2.4)
式中,Cmin既可以是特定的输入值,也可以选取到目前为止所得到的目标函数
f(x)的最小值。
变换方法二:
(1)对于最小化问题,建立适应度函数f(x)和目标函数f(x)的映射关系:
F(x)?1c?0,c?f(x)?0 (2.5)
1?c?f(x)(2)对于最大化问题,一般采用下述方法:
F(x)?1c?0,c?f(x)?0 (2.6)
1?c?f(x)式中,c为目标函数界限的保守估计值。
2.4 约束条件的处理
在遗传算法中必须对约束条件进行处理,但目前尚无处理各种约束条件的一般方法,根据具体问题可选择下列三种方法,其罚函数法、搜索空间限定法和可行解变换法。 2.4.1 罚函数法
罚函数的基本思想是对在解空间中无对应可行解的个体计划其适应度时,处以一个罚函数,从而降低该个体的适应度,使该个体被选遗传到下一代群体中的概率减小。可以用下式对个体的适应度进行调整:
?F(x) F'(x)???F(x)?P(x)x?U (2.7) x?U其中,F(x)为原适应度函数,F'(x)为调整后的新的适应度函数,P(x)为罚函数,U为约束条件组成的集合。
如何确定合理的罚函数是这种处理方法难点之所在,在考虑罚函数时,既要度量解对约束条件不满足的程度,由要考虑计算效率。 2.4.2 搜索空间限定法
搜索空间限定法的基本思想是对遗传算法的搜索空间的大小加以限制,使得
搜索空间中表示一个个体的点与解空间中的表示一个可行解的点有一一对应的关系。对一些比较简单的约束条件通过适当编码使搜索空间与解空间一一对应,限定搜索空间能够提高遗传算法的效率。在使用搜索空间限定法时必须保证交叉、变异之后的解个体在解空间中有对应解。 2.4.3 可行解变换法
可行解变换法的基本思想:在由个体基因型到个体表现型的变换中,增加使其满足约束条件的处理过程,其寻找个体基因型与个体表现型的多对一变换关系,扩大了搜索空间,使进化过程中所产生的个体总能通过这个变换而转化成解空间中满足约束条件的一个可行解。可行解变换法对个体的编码方式、交叉运算、变异运算等无特殊要求,但运行效果下降。
2.5 遗传算子
遗传算法中包含了3个模拟生物基因遗传操作的遗传算子:选择(复制)、交叉(重组)和变异(突变)。遗传算法利用遗传算子产生新一代群体来实现群体进化,算子的设计是遗传策略的主要组成部分,也是调整和控制进化过程的基本工具。 2.5.1 选择操作
遗传算法中的选择操作就是用来确定如何从父代群体中按某种方法选取哪些个体遗传到下一代群体中的一种遗传运算。遗传算法使用选择(复制)算子来对群体中的个体进行优胜劣汰操作:适应度较高的个体被遗传到下一代群体中的概率较大;适应度较低的个体被遗传到下一代群体中的概率较小。选择操作建立在对个体适应度进行评价的基础之上。选择操作的主要目的是为了避免基因缺失、提高全局收敛性和计算效率。常用的选择方法有转轮法、排序选择法、两两竞争法。
1) 轮盘赌法。
简单的选择方法为轮盘赌法:通常以第i个个体入选种群的概率以及群体规模的上限来确定其生存与淘汰,这种方法称为轮盘赌法。轮盘赌法是一种正比选择策略,能够根据与适应函数值成正比的概率选出新的种群。轮盘赌法由以下五步构成:
1. 计算各染色体vk适应值F(vk); 2. 计算种群中所有染色体的适应值的和;
Fall??F(vk) (2.6)
k?1n3. 计算各染色体vk的选择概率pk;
eval(vk) pk?,k?1,2,?,n (2.7)
Fall4. 计算各染色体vk的累计概率qk; qk??pj,k?1,2?,j?1k , n (2.8)
5. 在[0,1]区间内产生一个均匀分布的伪随机数r,若r?q1,则选择第一个染色体v1;否则,选择第k个染色体,使得qk?1?r?qk成立。
2) 排序选择法。
排序选择法的主要思想是:对群体中的所有个体按其适应度大小进行排序,基于这个排序来分配各个个体被选中的概率。排序选择方法的具体操作过程是:
1. 对群体中的所有个体按其适应度大小进行降序排序。
2. 根据具体求解问题,设计一个概率分配表,将各个概率值按上述排列次序分配给各个个体。
3. 以各个个体所分配到的概率值作为其能够被遗传到下一代的概率,基于这些概率值用轮盘赌法来产生下一代群体。
3) 两两竞争法。
锦标赛选择法的基本做法是:在选择时先随机的在种群中选择k个个体进行锦标赛式的比较,从中选出适应值最好的个体进入下一代,复用这种方法进行直到下一代个体数为种群规模时为止。这种方法也使得适应值好的个体在下一代具有较大的“生存”机会,同时它只能使用适应值的相对值作为选择的标准,而与适应值的数值大小不成直接比例,所以,它能较好的避免超级个体的影响,一定程度的避免过早收敛现象和停滞现象。 2.5.2 交叉操作
在遗传算法中,交叉操作是起核心作用的遗传操作,它是生成新个体的主要 方式。交叉操作的基本思想是通过对两个个体之间进行某部分基因的互换来实现 产生新个体的目的。常用交叉算子有:单点交叉算子、两点交叉算子和多点交叉算子、均匀交叉算子和算术交叉算子等等。
1) 单点交叉算子
交叉过程分两个步骤:首先对配对库中的个体进行随机配对;其次,在配对个体中随机设定交叉位置,配对个体彼此交换部分信息。
图2-1 单点交叉示意
2) 两点交叉算子
具体操作是随机设定两个交叉点,互换两个父代在这两点间的基因串,分别生成两个新个体。
3) 多点交叉算子
多点交叉的思想源于控制个体特定行为的染色体表示信息的部分无须包含于邻近的子串中,多点交叉的破坏性可以促进解空间的搜索,而不是促进过早的收敛。
4) 均匀交叉算子
均匀交叉式指通过设定屏蔽字来决定新个体的基因继承两个个体中那个个体的对应基因,当屏蔽字中的位为0时,新个体A?继承旧个体A中对应的基因,当屏蔽字位为1时,新个体A?继承旧个体B中对应的基因,由此可生成一个完整的新个体A?,同理可生成新个体B?。
图2-2 均与交叉示意图
2.5.3 变异操作
变异操作是指将个体染色体编码串中的某些基因座的基因值用该基因座的其他等位基因来替代,从而形成一个新的个体。变异运算是产生新个体的辅助方法,它和选择、交叉算子结合在一起,保证了遗传算法的有效性,使遗传算法具有局部的随机搜索能力,提高遗传算法的搜索效率;同时使遗传算法保持种群的多样性,以防止出现早熟收敛。在变异操作中,为了保证个体变异后不会与其父
体产生太大的差异,保证种群发展的稳定性,变异率不能取太大,如果变异率大于0.5,遗传算法就变为随机搜索,遗传算法的一些重要的数学特性和搜索能力也就不存在了。变异算子的设计包括确定变异点的位置和进行基因值替换。变异操作的方法有基本位变异、均匀变异、边界变异、非均匀变异等。
1) 基本位变异
基本位变异操作是指对个体编码串中以变异概率pm随机指定的某一位或某 几位基因作变异运算,所以其发挥的作用比较慢,作用的效果也不明显。基本位变异算子的具体执行过程是:
1. 对个体的每一个基因座,依变异概率pm指定其为变异点。
2. 对每一个指定的变异点,对其基因值做取反运算或用其他等位基因值来代替,从而产生出一个新个体。
2) 均匀变异
均匀变异操作是指分别用符合某一范围内均匀分布的随机数,以某一较小的概率来替换个体编码串中各个基因座上的原有基因值。均匀变异的具体操作过程是:
1. 依次指定个体编码串中的每个基因座为变异点。
2. 对每一个变异点,以变异概率pm从对应基因的取值范围内取一随机数来替代原有基因值。
假设有一个个体为vk?[v1v2?vk?vm],若vk为变异点,其取值范围为
[vk,min,vk,max],在该点对个体vk进行均匀变异操作后,可得到一个新的个体:
?v i n (2.9) ) , mvk?[v1v2?v'k?vm],其中变异点的新基因值是
' vk?vk,mi?nr?(vk,makx式中,r为[0,1]范围内符合均匀概率分布的一个随机数。均匀变异操作特别适合应用于遗传算法的初期运行阶段,它使得搜索点可以在整个搜索空间内自由地移动,从而可以增加群体的多样性。 2.5.4 倒位操作
所谓倒位操作是指颠倒个体编码串中随机指定的二个基因座之间的基因排列顺序,从而形成一个新的染色体。倒位操作的具体过程是:
1. 在个体编码串中随机指定二个基因座作为倒位点; 2. 以倒位概率颠倒这二个倒位点之间的基因排列顺序。
2.6 搜索终止条件
遗传算法的终止条件有以下两个,满足任何一个条件搜索就结束。
1)遗传操作中连续多次前后两代群体中最优个体的适应度相差在某个任意小的正数?所确定的范围内,即满足: 0?Fnew?Fold?? (2.10)
式中,Fnew为新产生的群体中最优个体的适应度;Fold为前代群体中最优个体的适应度。
2) 达到遗传操作的最大进化代数t。
3 具体数学规划问题的遗传算法实现
利用遗传算法求解下列数学规划问题:
minf(x1,x2)??x1?3???x2?2?2?g1(x1,x2)?x12?x2?5?s..t?h1(x1,x2)?x1?2x2?4?0?x,x?10,x?N121?22 (3.1)
3.1 初始化
针对上述问题利用MATLAB编写遗传算法程序求解,程序的主函数是GA.m。
首先,确定程序初始化中所需要的参数和对应的值。其中求解精度是指决策变量的求解精度,由于题目中没有给出,所以这是我自己设定的参数。程序中涉及到得参数名称、符号和相应的值如下表所示。
表3-1 遗传算法初始化参数
参数名称 最大进化代数 种群规模 交叉概率 变异概率 求解精度 变量上限值 变量下限值
符号 值
tmax 100 100 0.8 0.1
10?4
n
pc pm
dec
xmax
xmin
10 0
3.2 染色体编码
本程序采用二进制编码,将决策变量编码为二进制,其串长取决于问题要求的求解精度,但本题并没有给出精度要求,只是限定了x1为整数,不妨假设求解精度为10?4,两个变量均采用二进制编码,x1为整数这个限制条件在可在计算出小数值后作四舍五入取整处理,因此可按照假设的求解精度将决策变量的值域分成105份,则有:
x?xmin???x'2mi?1?(xmax?xmin)?105?2mi (3.2)
由于所有变量的求解精度一样,那么,决策变量的串长m1?20、m2?20,于是染色体的总长m?m1?m2?40,求解二进制编码串长的程序时len.m。那么,二进制编码精度为
??10?0?9.5368?10?6 (3.3) 202?1根据二进制编码的串长以及种群规模可生成初始种群,为计算种群中的各个个体的适应值,应先将基因型转换成表现型,其程序为coding.m。首先,将二进制值转换为十进制值,其公式为
(b1b2?bm1)2??bi?2i?1?x' (3.4)
i?1m1那么,对应的变量值为
x?x??'x (3.5) min?3.3 计算适应值
首先确定适应度函数。根据目标函数和约束条件可选择适应度函数的变换方式。由于目标函数f(x)?0,为了避免出现适应值大于1的情况,于是根据目标函数的特点在设计适应度函数时,在分母上加上2,分子上剩以4,如式(3.1)所示;又根据优化问题的约束条件,利用约束条件处理方法中的罚函数法设计了相应的罚函数c,那么适应度函数为 F(x)?4 (3.6)
f(x)?c?2其中,c???max{0,g1(x1,x2)?5}???max{0,|h1(x1,x2)?4|},????10000。
按照上述方法计算种群中各个个体的适应值,如果适应值趋近于1,那么对应的个体即为最佳个体,计算适应值的程序是fitness.m。
3.4 遗传算子
3.4.1 选择操作
本程序选择轮盘赌法来实现选择操作。根据之前计算的各个个体的适应值,利用式(2.6)计算种群中所有个体的适应值的和Fall;然后按照如式(2.7)、(2.8)计算每个个体的选择概率p和累计概率q。旋转轮盘100次(种群规模),每次生成一个0到1的随机数r,用这个随机数与种群中的个体的累积概率q作比较,如果这个随机数落在了这个概率区间,那么就保留该个体,这就完全模拟了轮盘赌的思想,若个体的选择概率大,那么它被选到遗传到下一代的概率也就大一些。选择操作的程序是selec.m。 3.4.2 交叉操作
对经过选择操作产生的群体作交叉操作。本程序采用均匀交叉的方式,首先打乱种群中所有个体的原有排列顺序,这样体现了随机抽取的概念,然后把种群分成两部分new_genA和new_genB;分别从这两个部分选择一个个体配成对进行均匀交叉,其程序为cross.m。 3.4.3 变异操作
对经过交叉操作产生的群体作变异操作。本程序采用基本位变异方法实现变异操作,依据变异概率对新种群中的个体实施基本位变异,具体程序为mut.m。
在最初编写的程序中还包含倒位操作,具体程序是inverse.m,原理类似于基本位变异,只是具体操作上有差异。在调试时,我比较了有倒位操作和没有倒位操作作用于程序对计算结果的影响,在有倒位操作时并没有改善算法在搜索到最优解方面的性能,于是我在最终的程序中取掉了这一操作。
3.5 搜索终止判断
本程序采用了达到最大进化代数时停止搜索的方法,由于本问题比较简单,所以采用此法是可行的。但是,对于复杂的问题,也许要求更加有效的判断手段,所以这是需要改进的地方。
3.6 运行调试
调试阶段解决了两个问题:第一,最佳个体的适应值很快就达到一个稳定的值而不再变化;第二,适应度函数的设计存在缺陷。针对第一个问题,考虑到交叉操作是产生新个体的主要操作,所以将交叉概率从0.8调到0.9,增加对种群
的交叉操作,产生更多的新个体,保持了种群的多样性,这就使得最优个体是适应值不断的变化。对于第二个问题是在调试过程中发现最优个体适应值超过了1,于是检查适应度函数时发现了这个问题,最开始设计的适应度函数为
F(x)?2 (3.7)
f(x)?c其中,c???max{0,g1(x1,x2)?5}???max{0,|h1(x1,x2)?4|},????10000。很有可能就是分母小于了2,于是在分母上加上一个常数即可,修改后的适应度函数如式(3.6)所示。
调试后运行的结果如图3-1所示,本次运行的最优个体的适应值和种群平均适应值随进化代数的变换趋势如图3-2所示。
图3-1 通过遗传算法计算出的结果
图3-2 最优个体适应值与种群平均适应值变化曲线
4 总结
首先,对本次遗传算法的培训工作做一下总结。从开始拿到这个问题的时候什么都不懂,到现在能够顺利编写简单的遗传程序,这其中我遵循了先从基本概念入手,然后学习简单方法这样一个研究过程。先是学习遗传算法中的名词、概念,然后学习遗传算法的基本原理,分块掌握每部分的内容,如遗传操作包括了选择、交叉、变异,那么选择的概念是什么,目的是什么,实现方法有哪些,逐步理解掌握。在理解概念的基础上,先从简单的方法入手,编制简单优化问题的遗传算法,在程序上也使用常用、简单的遗传操作方法。这为以后在学习新的问题提供了方法,也更加的自信能够学好新问题。
其次,本次编写的程序还有很多需要改进的地方。第一,编码方法,本程序使用的是二进制编码,而题目要求x1为整数,所以可以开始就对x1进行实数编码,对x2依然采用二进制编码,这样计算出来的结果可能更接近最优解。第二,遗传算法不收敛的问题。是否可以考虑在执行交叉、变异之前筛选出最优个体直接作为下一代个体,而不被交叉、变异所破坏,同时也保证了搜索效率。
最后,对近期工作做一下展望,遗传算法的学习结束后,接下来就是学习PSASP潮流计算部分的程序,对比自己编写的潮流程序,并修改自己的程序以实现至少三种方式的调压。由于本周确定了专业方向:状态估计,因此,下一阶段的学习同时围绕学习电力系统状态估计来进行。
正在阅读:
遗传算法的原理及MATLAB程序实现05-28
盐酸泄漏应急预案 305-11
第一次全国水利普查台账建设技术规定及用水调查对象确定办法06-03
运输方式的选择与制约因素12-30
越是不顺,越要懂得放下08-02
西文图书机读著录简明格式12-30
开展宪法宣传周活动总结2022年例文03-24
退役士兵安置条例201108-24
国美电器的人力资源管理经验借鉴10-25
做先进少年少先队活动优课案例02-29
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 遗传
- 算法
- 原理
- 实现
- 程序
- MATLAB
- 2012年河北公务员考试行测:四大时间表述陷阱
- 中级财务会计 第章 应收款项 总结归纳、习题(及答案共页)
- 物理必修二天体运动各类问题
- 申论备考:研读真题是根本
- 学生会宣传部定位1
- 文学理论练习题1
- 公安部2013年新版考试题库驾驶证考试-小型汽车驾照模拟考试
- 传递函数零极点对系统性能的影响
- 一标施工组织设计
- 新国十条一百问试题
- 最新《济宁市建设工程质量“运河杯”奖评选办法》
- 04诱变育种
- 2010年高中物理自主学习同步讲解与训练 动量和能量
- 国际贸易实务英文版第二版课后习题答案
- 电气初级知识答案
- IDE、SATA、SCSI、SAS、FC、SSD硬盘类型介绍
- 断桥铝门窗选材必备技巧 - 图文
- 毕笑云-开题报告
- 水工建筑物复习题及答案
- 探析酒店业的税收筹划 - 图文