遗传算法二进制编译方法
㈠ 遗传算法在求解TSP问题中是如何编码解码的 二进制如何编码 如何求解
路径表示是按照城市的访问顺序排列的一种编码方式,是最自然、简单和符合逻辑的表示方法。然而,除非初始基因是固定的,否则这种编码方式不具备唯一性。例如,旅程(5-1-7-8-9-4-6-2-3)与(1-7-8-9-4-6-2-3-5)表示的是同一条旅程,因为路径表示法是遍历了每一个节点,所以不会产生子回路。
考虑到此次研究对象的初始基因是固定的,不会出现漏选,所以运用这种编码方法。
初始种群可以随机产生,也可以通过某种算法生成,但需要保证群体的多样性。在种群初始化时,需要可虑以下几个方面的因素:
1、根据问题固有的知识,设法把握最优解所占的空间在整个问题空间中的分布范围,然后,在次分布范围内设定初始群体。
2、随机生成一定数目的个体,然后从中挑选出最好的个体加入群体。这一过程不断进行迭代,直到初始种群中个体数达到了预先确定的规模。
亲和度设置为1/f f为总路径长度
此后根据城市序号在进行选择,交叉,变异即可
㈡ 遗传算法的二进制编码
请问你这个问题解决了么?我现在遇到同样的问题,请问你是怎么处理的?
㈢ 遗传算法的编码方式谁能详细介绍下谢谢
假如你想要编码为x,设x的范围是,二进制编码长度为10,那二进解码方式是:x*(max-min)/1023,这个不用开始编码,开始你可以用rand(n,10)产生n个样本的随机数,然后优化即可。
不是能把“数学模型中的目标函数和每一条约束函数分别编程Matlab里的M文件”,是你用遗传算法就必须要编进去,电脑怎么知道往哪个方向优化是好的,要不把你邮箱留下,我给你发个寻求最大值的遗传算法。
㈣ 遗传算法的编码方法有几种
常用的编码介绍
1、二进制编码:
(1)定义:二进制编码方法是使用二值符号集{0,1},它所构成的个体基因型是一个二进制编码符号串。二进制编码符号串的长度与问题所要求的求解精度有关。
(2)举例:0≤x≤1023,精度为1,m表示二进制编码的长度。则有建议性说法:使
2m-1≤1000(跟精度有关)≤2m-1。取m=10
则X:0010101111就可以表示一个个体,它所对应的问题空间的值是x=175。
(3)优缺点
优点:符合最小字符集原则,便于用模式定理分析;
缺点:连续函数离散化时的映射误差。
2、格雷码编码
(1)定义:格雷码编码是其连续的两个整数所对应的编码之间只有一个码位是不同的,其余码位完全相同。它是二进制编码方法的一种变形。
十进制数0—15之间的二进制码和相应的格雷码分别编码如下。
二进制编码为:0000,0001,0010,001
1,0100。0101,0110,0111,
1000,1001,1010,1011,1100,1101,1110,1111;
格雷码编码为:0000,0001,0011,0010,0110,0111,0101,0100,
1100,1101,1111,1110,1010,1011,1001,1000。
(2)举例:对于区间[0。1023]中两个邻近的整数X1=175和X2=176,若用长度为10位的二进制编码,可表示为X11:0010101111和X12
0010110000,而使用同样长度的格雷码,它们可分别表示为X21:0010101111和X22:0010101000。
(3)优点:增强了遗传算法的局部搜索能力,便于连续函数的局部控件搜索。
3、浮点数(实数)编码
(1)定义:浮点数编码是指个体的每个基因值用某一范围内的一个浮点数来表示,而个体的编码长度等于其决策变量的个数。因为这种编码方法使用的决策变量的真实值,也称之为真值编码方法。
(2)举例:
(3)优点:实数编码是遗传算法中在解决连续参数优化问题时普遍使用的一种编码方式,具有较高的精度,在表示连续渐变问题方面具有优势。
4、排列编码
排列编码也叫序列编码,是针对一些特殊问题的特定编码方式。排序编码使问题简洁,易于理解。该编码方式将有限集合内的元素进行排列。若集合内包含m个元素,则存在m!种排列方法,当m不大时,m!也不会太大,穷举法就可以解决问题。当m比较大时,m!就会变得非常大,穷举法失效,遗传算法在解决这类问题上具有优势。如解决TSP问题时,用排列编码自然、合理。
5、其它编码方式
多参数级联编码等
㈤ 在遗传算法中什么是二进制锦标赛法
锦标赛法是选择操作的一种方法。
假设种群规模为n,该法的步骤为:
1.随机产生n个个体作为第一代(其实这步准确的说不是属于选择操作的,但每个算子并没有绝对的界限,这个是在选择操作之前的必做之事)
2.从这n个个体中随机(注意是随机)选择k(k<n)个个体,k的取值小,效率就高(节省运行时间),但不宜太小,一般取为n/2(取整)
3.从这k个个体中选择最大的一个个体(涉及到排序的方法),作为下一代n个个体中的一个个体
4.重复2-4步,至得到新的n个个体
5.进行这新的n个个体之间的交叉操作
不论是二进制还是十进制,方法都是一样的
㈥ 遗传算法的核心是什么!
遗传操作的交叉算子。
在自然界生物进化过程中起核心作用的是生物遗传基因的重组(加上变异)。同样,遗传算法中起核心作用的是遗传操作的交叉算子。所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。通过交叉,遗传算法的搜索能力得以飞跃提高。
交叉算子根据交叉率将种群中的两个个体随机地交换某些基因,能够产生新的基因组合,期望将有益基因组合在一起。
(6)遗传算法二进制编译方法扩展阅读
评估编码策略常采用以下3个规范:
a)完备性(completeness):问题空间中的所有点(候选解)都能作为GA空间中的点(染色体)表现。
b)健全性(soundness): GA空间中的染色体能对应所有问题空间中的候选解。
c)非冗余性(nonrendancy):染色体和候选解一一对应。
目前的几种常用的编码技术有二进制编码,浮点数编码,字符编码,变成编码等。
而二进制编码是目前遗传算法中最常用的编码方法。即是由二进制字符集{0,1}产生通常的0,1字符串来表示问题空间的候选解。
㈦ 遗传算法二进制编码问题:二进制编码的位数是如何确定的
用这个公式试试,这个是解码用的,至于你说的位数,可以给你举个例子,比如[0,1],精度千分之1,就是相当于里面离散化出来1000+1个点,2的10次方是1024,2的9次方是512,这时候你就只要取10位就可以把这1001个点的变化全部包含到二进制里面了
㈧ 遗传算法的基本原理
遗传算法的基本原理和方法
一、编码
编码:把一个问题的可行解从其解空间转换到遗传算法的搜索空间的转换方法。
解码(译码):遗传算法解空间向问题空间的转换。
二进制编码的缺点是汉明悬崖(Hamming Cliff),就是在某些相邻整数的二进制代码之间有很大的汉明距离,使得遗传算法的交叉和突变都难以跨越。
格雷码(Gray Code):在相邻整数之间汉明距离都为1。
(较好)有意义的积木块编码规则:所定编码应当易于生成与所求问题相关的短距和低阶的积木块;最小字符集编码规则,所定编码应采用最小字符集以使问题得到自然的表示或描述。
二进制编码比十进制编码搜索能力强,但不能保持群体稳定性。
动态参数编码(Dynamic Paremeter Coding):为了得到很高的精度,让遗传算法从很粗糙的精度开始收敛,当遗传算法找到一个区域后,就将搜索现在在这个区域,重新编码,重新启动,重复这一过程,直到达到要求的精度为止。
编码方法:
1、 二进制编码方法
缺点:存在着连续函数离散化时的映射误差。不能直接反映出所求问题的本身结构特征,不便于开发针对问题的专门知识的遗传运算算子,很难满足积木块编码原则
2、 格雷码编码:连续的两个整数所对应的编码之间仅仅只有一个码位是不同的,其余码位都相同。
3、 浮点数编码方法:个体的每个基因值用某一范围内的某个浮点数来表示,个体的编码长度等于其决策变量的位数。
4、 各参数级联编码:对含有多个变量的个体进行编码的方法。通常将各个参数分别以某种编码方法进行编码,然后再将他们的编码按照一定顺序连接在一起就组成了表示全部参数的个体编码。
5、 多参数交叉编码:将各个参数中起主要作用的码位集中在一起,这样它们就不易于被遗传算子破坏掉。
评估编码的三个规范:完备性、健全性、非冗余性。
二、选择
遗传算法中的选择操作就是用来确定如何从父代群体中按某种方法选取那些个体遗传到下一代群体中的一种遗传运算,用来确定重组或交叉个体,以及被选个体将产生多少个子代个体。
常用的选择算子:
1、 轮盘赌选择(Roulette Wheel Selection):是一种回放式随机采样方法。每个个体进入下一代的概率等于它的适应度值与整个种群中个体适应度值和的比例。选择误差较大。
2、 随机竞争选择(Stochastic Tournament):每次按轮盘赌选择一对个体,然后让这两个个体进行竞争,适应度高的被选中,如此反复,直到选满为止。
3、 最佳保留选择:首先按轮盘赌选择方法执行遗传算法的选择操作,然后将当前群体中适应度最高的个体结构完整地复制到下一代群体中。
4、 无回放随机选择(也叫期望值选择Excepted Value Selection):根据每个个体在下一代群体中的生存期望来进行随机选择运算。方法如下
(1) 计算群体中每个个体在下一代群体中的生存期望数目N。
(2) 若某一个体被选中参与交叉运算,则它在下一代中的生存期望数目减去0.5,若某一个体未被选中参与交叉运算,则它在下一代中的生存期望数目减去1.0。
(3) 随着选择过程的进行,若某一个体的生存期望数目小于0时,则该个体就不再有机会被选中。
5、 确定式选择:按照一种确定的方式来进行选择操作。具体操作过程如下:
(1) 计算群体中各个个体在下一代群体中的期望生存数目N。
(2) 用N的整数部分确定各个对应个体在下一代群体中的生存数目。
(3) 用N的小数部分对个体进行降序排列,顺序取前M个个体加入到下一代群体中。至此可完全确定出下一代群体中M个个体。
6、无回放余数随机选择:可确保适应度比平均适应度大的一些个体能够被遗传到下一代群体中,因而选择误差比较小。
7、均匀排序:对群体中的所有个体按期适应度大小进行排序,基于这个排序来分配各个个体被选中的概率。
8、最佳保存策略:当前群体中适应度最高的个体不参与交叉运算和变异运算,而是用它来代替掉本代群体中经过交叉、变异等操作后所产生的适应度最低的个体。
9、随机联赛选择:每次选取几个个体中适应度最高的一个个体遗传到下一代群体中。
10、排挤选择:新生成的子代将代替或排挤相似的旧父代个体,提高群体的多样性。
三、交叉
遗传算法的交叉操作,是指对两个相互配对的染色体按某种方式相互交换其部分基因,从而形成两个新的个体。
适用于二进制编码个体或浮点数编码个体的交叉算子:
1、单点交叉(One-pointCrossover):指在个体编码串中只随机设置一个交叉点,然后再该点相互交换两个配对个体的部分染色体。
2、两点交叉与多点交叉:
(1) 两点交叉(Two-pointCrossover):在个体编码串中随机设置了两个交叉点,然后再进行部分基因交换。
(2) 多点交叉(Multi-pointCrossover)
3、均匀交叉(也称一致交叉,UniformCrossover):两个配对个体的每个基因座上的基因都以相同的交叉概率进行交换,从而形成两个新个体。
4、算术交叉(ArithmeticCrossover):由两个个体的线性组合而产生出两个新的个体。该操作对象一般是由浮点数编码表示的个体。
四、变异
遗传算法中的变异运算,是指将个体染色体编码串中的某些基因座上的基因值用该基因座上的其它等位基因来替换,从而形成以给新的个体。
以下变异算子适用于二进制编码和浮点数编码的个体:
1、基本位变异(SimpleMutation):对个体编码串中以变异概率、随机指定的某一位或某几位仅因座上的值做变异运算。
2、均匀变异(UniformMutation):分别用符合某一范围内均匀分布的随机数,以某一较小的概率来替换个体编码串中各个基因座上的原有基因值。(特别适用于在算法的初级运行阶段)
3、边界变异(BoundaryMutation):随机的取基因座上的两个对应边界基因值之一去替代原有基因值。特别适用于最优点位于或接近于可行解的边界时的一类问题。
4、非均匀变异:对原有的基因值做一随机扰动,以扰动后的结果作为变异后的新基因值。对每个基因座都以相同的概率进行变异运算之后,相当于整个解向量在解空间中作了一次轻微的变动。
5、高斯近似变异:进行变异操作时用符号均值为P的平均值,方差为P2的正态分布的一个随机数来替换原有的基因值。
㈨ MATLAB中遗传算法编程中,二进制编码如何处理实数变量
假如你想要编码为x,设x的范围是【min,max】,二进制编码长度为10,那二进解码方式是:x*(max-min)/1023,这个不用开始编码,开始你可以用rand(n,10)产生n个样本的随机数,然后优化即可。
不是能把“数学模型中的目标函数和每一条约束函数分别编程Matlab里的M文件”,是你用遗传算法就必须要编进去,电脑怎么知道往哪个方向优化是好的,要不把你邮箱留下,我给你发个寻求最大值的遗传算法。