2022年遗传算法实例 .pdf
先进控制技术智能控制与智能系统(遗传算法作业)任课老师:学生姓名:学号:专业:导师:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 27 页 - - - - - - - - - 第 1 页简介:本文给出了一种遗传算法来求取两组函数的最大值。本遗传算法主要采用选择、交叉和变异三种方式实现。在定义域内随机选取50 组自变量作为初始种群,进行交叉、变异、选择复制后得到相应的最大函数值。在交叉和变异时,考虑到了可能由于交叉和变异可能使自变量超出其限定范围,故在程序中采取了一定算法防止其发生以免使结果错误,在选择复制过程中, 为避免适应值为负, 或复制个体数超出种群数等情况的发生,进行了一些必要处理, 避免发生错误或算法发散。一、任务利用遗传算法求下列函数的最大适应值及其位置:(1)1sinsin(,)*xyfx yxy(2)22222(5)(5)(5)(5)(,)0.9exp()0.99996exp()1020 xyxyfx y其中,10,10 x y,精确到 0.0001。要求:1. 种群大小为 50;2. 交换位数为:2n,其中 n 为个体基因数;3. 变异位数为 4(固定不变);4. 交换的个数分别取: Nc=20,28,36,44;5. 变异的个数分别取: Nm=1,5,10,15;二、求解分析及相关处理1.个体编码基因数的确定任务要求求解精度为小数点后4 位,区间长度为10-(-10)=20,所以将区间-10,10分为452010210等份;又因为1751813107222102262144,所以单变量编码的二进制串长至少需要18 位,我们取单个个体基因数为18,在进行遗传算法的各个环节时, 等效将两个变量的编码串接起来当做一个个体进行名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 27 页 - - - - - - - - - 第 2 页处理,则处理时个体基因数为n=36,每次交换位数为2n=18。2.数据处理因为,10,10 x y, 精度为 0.0001, 为方便在 MATLAB 中对数据进行操作,避免小数和负数的问题,进行适当的数据处理,如(x,y +10)10000,将自变量范围其转换到 0,200000,再对个体进行编码。3.随机种群的产生任务要求在 20001个个体中随机产生50 个个体作为初始种群,进行遗传算法的各个求解过程, 运用 matlab工具中的 rand函数,在 0,1之间产生符合随机分布的 50 个个体,进行数学运算和精度处理后转换到-10,10区间。4.随机交叉、变异个体的产生在进行交叉、 变异前将初始种群中的个体进行随机排序,交叉、变异时按从前到后的顺序对要求交叉、 变异数目的个数的个体进行处理, 等效随机选择过程。5.随机交叉、变异基因位的产生分别产生长度为 36(将两个变量串接后的基因位串数)的由若干0 和 1 组成的数组,定义 1为进行交叉或变异, 0 不进行操作,0 和 1 的个数由交叉位 (18位)数和变异位数( 4 位)确定,每次进行4.随机交叉、变异前将该数组随机排序,4.随机交叉、变异时对每一位进行判断。6. 选择复制处理因为在定义域范围内, 函数值有正有负, 用常规的轮盘发进行复制个体的选择存在复制个体数为负的问题,所以进行选择时,先将适应值按从大到小排序,复制时优先复制适应值大的个体数,对适应值进行四舍五入决定复制个体数,适应值为负的转换为正后再进行复制,这样即使复制负值个体, 其在种群中的比重也很小,不会影响整体的进化。因为有负值的存在,虽然适应值加和为50,但是如上进行处理后可能会产生负值个体总数超过50 的情况,为了限定种群数,进行复制循环判断,当已经复制的个体数为50时停止复制。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 27 页 - - - - - - - - - 第 3 页三、求解步骤1.在自变量选取,在x,y 的定义域 -10,10内随机选取 50 组数据,精确到0.0001(为了提高精度,运算过程中课先精确到0.00001) 。2.为方便在 MATLAB 中对其进行操作,将其转换到0,200000。3.交换将种群顺序打乱,并两两分为为一组,如(x1,y1)和( x2,y2)为一组,分别选择前 Nc/2=10,14,18,22 组作为交换个体, 等效为随机选择个体进行交换。MATLAB中 x,y 均由 64 位二进制表示,由于217200000218,故在进行交换时只针对数据的后 18 位操作,将 x,y 看成一组,则每组交换的位数为 (18+18)/2=18。选取一个数组 Nc,规定其由 18个 1 和 18 个 0 组成,将其随机排序。 Nc 的前 18位针对 x,后 18 位针对 y,若 Nc(k)=1,则交换相应位上的数,否则不交换。对于每两组( x,y)来说, Nc 是不同的,交换后,数据可能超出0,200000的范围,此时重新生成Nc,重新交换,直到交换后的4 个数全部在定义域范围内为止。4.变异在 50 组数据中任意选取Nm(Nm=1,5,10,15)组数据,对其进行变异,随即变异个体的产生和随机交叉个体的产生相通,编译前对种群数组随机排序,进行等效。变异的位数为4(x,y 中变异位数和为 4) ,变异所在位置随机,由变异位置选择数组Nm 确定,具体方法同交叉。 随机变异个体的产生, 若变异后的数据( x或 y)超出范围,重新变异,直到满足条件为止;5.选择复制主题思想上采用轮盘选择法,但是因为该选择法存在不能处理负数的缺陷,进行一定的改进。首先将x,y 的值还原到 -10,10,精确到 0.0001,并进行适应值计算,得到适应值数组S,和复制个体数数组N,将 N 取整后得到 A,将 S和 A 按降序排序,同时x,y 按照 A 排序的变化而变化,因为A 和 S 两数组间只差一个正系数,所以,排序后变化相同。然后进行复制,复制时按照A 中的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 27 页 - - - - - - - - - 第 4 页复制个体数进行复制,若复制个体数为负,取负后再复制,当新复制个体数为50 时,停止复制,得到有50 个个体的新种群。6.结果记录交叉、变异、选择复制后, S数组中第一个元素即为本次进化后所得到的最大值,将其存入数组MAX ,x 和 y 数组中的第一个元素即为最大函数值对应的自变量值,分别将其存入Mx 和 My 中。 (7)重复步骤 3-6N 次,得出进化曲线。7.重复 36步骤 100 次,即繁殖 100 代,并记录每次繁殖后的函数最大值和相应的自变量值。8.绘制曲线四、求解结果Nc 为交换的个数;Nm 为变异的个数;种群数为 50,交换位数为个体为数的一半即18 位,变异位数为 4;1sinsin(,)*xyfx yxy22222(5)(5)(5)(5)(,)0.9exp()0.99996exp()1020 xyxyfx y计算结果如下:20 28 36 44 1 0.9982,0.3174,0.1835 0.9867,-1.2139,-1.2133 0.9952,-0.5222,-0.1018 0.9997,0.3352,0.3443 5 0.9958,0.2773,0.7782 0.9991,1.4163,1.0527 0.9911,-0.6546,0.0781 0.9993,0.5258,1.2722 10 1.0000,0.2510,0.2198 0.9995,0.0279,0.0453 0.9949,0.2657,-0.2854 0.9952,0.1559,0.1234 15 0.9975,-0.0031,1.5015 0.9984,0.0994,-0.0972 0.9998,0.1746,2.0304 0.9999,-0.1220,0.1313 表一 f1 繁殖 100 代以后最大函数值及相应自变量值NcMAX,M x,MyNm名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 27 页 - - - - - - - - - 第 5 页20 28 36 44 1 0.9913,8.9709,3.8634 0.9992,7.5462,5.3582 0.9847,4.5322,6.3959 0.9931,4.5978,3.1841 5 0.9981,4.7422,6.5384 0.9998,6.8925,3.5605 0.9925,8.4362,4.8209 0.9963,3.7695,3.5869 10 0.9986,6.4113,7.4142 0.9915,4.9652,7.0891 0.9975,5.4070,5.9000 0.9873,7.8150,6.3751 15 0.9919,4.2709,5.2285 0.9950,4.5215,4.5178 0.9959,7.3322,4.7210 0.9889,4.8385,7.5340 表二 f2 繁殖 100 代以后最大函数值及相应自变量值五、结果分析1.函数最大值曲线分析由附录 2 各曲线可以看出, 随着繁殖的进行, 函数最大值逐渐优化, 体现出了种群整体的进化, 但是当函数取到最大值时不能保持在最大状态,其原因在于:复制过程并不是全部复制最优个体,是在后续繁殖过程中变异仍在进行,其结果有可能使函数值减小;同时,函数值逼近最大值的的速度有快又慢,其原因为:在复制过程中,有些最优个体复制数已经超过种群数,新种群中只有单一个体,交叉过程不能优化种群,种群的进化只能依赖变异,而变异的概率远低于交叉,所以函数收敛较慢。2.自变量曲线分析由附录 2 各曲线可以看出, 自变量在繁殖过程中波动很大,难以稳定。 其原因在于:对于函数f1 为周期函数,在给定定义域内函数的最大值有若干个,且交叉、变异过程自变量的变化是离散的,所以难以稳定; 对于函数 f2,分析可以看出其是偶函数, 在定义域内函数最大值有两个,由于交叉、 变异过程自变量的离散化变化,所以难以稳定。3.算法改进每次繁殖过程完成后对最优个体进行保留,可以提高算法的精度; 选择复制时应用其他算法,避免种群单一化的产生,可以提高收敛速度。NcMAX,M x,MyNm名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 27 页 - - - - - - - - - 第 6 页六、附录1.程序流程图结 束将 x2,y2顺 序 打 乱 , 并 赋值 给 中 间 变 量 x3,y3将 Nc 顺 序 打 乱k=1Nc(k)=1?temp1=bitget(x2(2*j-1),k);temp2=bitget(x2(2*j),k);x3(2*j-1)=bitset(x2(2*j-1),k,temp2);x3(2*j)=bitset(x2(2*j),k,temp1);YESk=k+1k=19?NOYESNc(k)=1?NOtemp1=bitget(y2(2*j-1),k-18);temp2=bitget(y2(2*j),k-18);y3(2*j-1)=bitset(y2(2*j-1),k-18,temp2);y3(2*j)=bitset(y2(2*j),k-18,temp1);YESk=k+1k=37?NOw=0YES交 叉 后 在 定 义域 内 ?w=1NONOw=1?j=j+1NOj= 交 换 个 数 ?YESNOYES将 Nm 顺 序 打 乱p=1Nm(p)=1?temp3=bitget(x2(k),p);temp3=temp3;x3(k)=bitset(x3(k),p,temp3);YESp=p+1p=19?NONONm(p)=1?YEStemp3=bitget(y2(k),p-18);temp3=temp3;y3(k)=bitset(y2(k),p-18,temp3);p=p+1YESNOp=37?w=0NOYES变 异 后 在 定 义 域 内 ?w=1NOw=1 ?k=k+1NOYESk= 变 异 个 体 数 ?交 叉变 异遗 传 算 法 流 程 图j= 1,w = 1将 x2,y2顺 序 打 乱 , 并 赋值 给 中 间 变 量 x3,y3k= 1,w =1YESYESNOx2=x3,y2=y3x2=x3,y2=y3YESx1=x2/10000-10; y1=y2/10000-10;求 解 适 应 值 数 组 S和复 制 个 体 数 目 数 组 A将 S和 A按 降 序 排序 , 同 时 x2,y2 元 素按 A 的 变 化 排 序M A X =函 数 最 大 值M x 和 M y 分 别 存 放对 应 自 变 量开 始定 义f1(x,y),f2(x,y)在 -10,10中 随 机生 成 数 组 x150,y150 x2=floor(double(x1+10)*10000)y2=floor(double(y1+10)*10000)繁 殖 进 化 过 程 需 要数 组 N c,N m等 初 始化G =1p= 1,k=1A (k)50?x3(p)=x2 (k ); y3(p)=y2 (k ); p= p+ 1;i= 复 制 数 ?i= i+ 1k= k+ 1NONOYESk= 种 群 数 ?x2= x3,y2=y3NOYESYESG =G +1G =100?G = 1:100plot(G,M A X)plot(G,M x)plot(G,M y )YES选 择 复 制NO主 程 序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 27 页 - - - - - - - - - 第 7 页01020304050607080901000.70.80.91繁殖代数Nc=20 ,Nm=1最大值020406080100-2-1012繁殖代数x取值020406080100-1.5-1-0.500.511.5繁殖代数y取值01020304050607080901000.70.80.91繁殖代数Nc=20 ,Nm=5最大值020406080100-3-2-10123繁殖代数x取值020406080100-2-1012繁殖代数y取值2.绘制曲线(1)1sinsin(,)*xyfx yxy名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 27 页 - - - - - - - - - 第 8 页01020304050607080901000.80.850.90.951繁殖代数Nc=20,Nm=10最大值020406080100-3-2-10123繁殖代数x取值020406080100-2-1012繁殖代数y取值01020304050607080901000.40.60.81繁殖代数Nc=20 ,Nm=15最大值020406080100-4-2024x取值020406080100-4-2024繁殖代数y取值繁殖代数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 27 页 - - - - - - - - - 第 9 页01020304050607080901000.70.80.91最大值繁殖代数Nc=28,Nm=1020406080100-2-1012繁殖代数x取值020406080100-4-2024繁殖代数y取值01020304050607080901000.70.80.91繁殖代数Nc=28,Nm=5最大值020406080100-2-1012繁殖代数x取值020406080100-3-2-10123繁殖代数y取值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 27 页 - - - - - - - - - 第 10 页01020304050607080901000.850.90.951最大值繁殖代数Nc=28,Nm=10020406080100-3-2-10123繁殖代数x取值020406080100-3-2-10123繁殖代数y取值020406080100-3-2-10123繁殖代数x取值020406080100-2-1012繁殖代数y取值01020304050607080901000.90.951繁殖代数Nc=28,Nm=15最大值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 27 页 - - - - - - - - - 第 11 页01020304050607080901000.940.960.981繁殖代数Nc=36,Nm=1最大值020406080100-1-0.500.51繁殖代数x取值020406080100-2-1012繁殖代数y取值01020304050607080901000.70.80.91繁殖代数Nc=36 ,Nm=5最大值020406080100-3-2-10123繁殖代数x取值020406080100-3-2-10123繁殖代数y取值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 27 页 - - - - - - - - - 第 12 页01020304050607080901000.20.40.60.81繁殖代数Nc=36 ,Nm=10最大值020406080100-2-1012繁殖代数x取值020406080100-3-2-101繁殖代数y取值020406080100-3-2-10123繁殖代数x取值020406080100-3-2-10123繁殖代数y取值01020304050607080901000.70.80.91繁殖代数Nc=36,Nm=15最大值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 27 页 - - - - - - - - - 第 13 页01020304050607080901000.940.960.981繁殖代数Nc=44 ,Nm=1最大值020406080100-2-1012繁殖代数x取值020406080100-1012繁殖代数y取值01020304050607080901000.970.980.9911.01繁殖代数Nc=44 ,Nm=5最大值020406080100-2-1012繁殖代数x取值020406080100-1012繁殖代数y取值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 27 页 - - - - - - - - - 第 14 页01020304050607080901000.70.80.91繁殖代数Nc=44 ,Nm=10最大值020406080100-3-2-10123繁殖代数x取值020406080100-2-1012繁殖代数y取值01020304050607080901000.70.80.91繁殖代数Nc=44,Nm=15最大值020406080100-2-1012繁殖代数x取值020406080100-3-2-10123繁殖代数y取值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 27 页 - - - - - - - - - 第 15 页(2)22222(5)(5)(5)(5)(,)0.9exp()0.99996exp()1020 xyxyfx y01020304050607080901000.70.80.91繁殖代数Nc=20,Nm=1最大值020406080100-10-50510繁殖代数x取值020406080100-10-50510繁殖代数y取值01020304050607080901000.850.90.951繁殖代数Nc=20 ,Nm=5最大值020406080100246810繁殖代数x取值0204060801000246810繁殖代数y取值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 27 页 - - - - - - - - - 第 16 页01020304050607080901000.80.850.90.951繁殖代数Nc=20 ,Nm=10最大值020406080100246810繁殖代数x取值020406080100246810繁殖代数y取值01020304050607080901000.80.850.90.951繁殖代数Nc=20 ,Nm=15最大值0204060801000246810繁殖代数x取值020406080100246810繁殖代数y取值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 27 页 - - - - - - - - - 第 17 页01020304050607080901000.850.90.951繁殖代数Nc=28,Nm=5最大值020406080100-10-50510繁殖代数x取值020406080100-10-50510繁殖代数y取值01020304050607080901000.80.850.90.951繁殖代数Nc=28 ,Nm=1最大值020406080100345678繁殖代数x取值020406080100345678繁殖代数y取值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 27 页 - - - - - - - - - 第 18 页01020304050607080901000.80.850.90.951繁殖代数Nc=28 ,Nm=15最大值020406080100246810繁殖代数x取值020406080100246810繁殖代数y取值01020304050607080901000.80.850.90.951繁殖代数Nc=28 ,Nm=10最大值020406080100246810繁殖代数x取值020406080100246810繁殖代数y取值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 27 页 - - - - - - - - - 第 19 页01020304050607080901000.850.90.951繁殖代数Nc=36 ,Nm=1最大值020406080100246810繁殖代数x取值020406080100246810繁殖代数y取值01020304050607080901000.850.90.951繁殖代数Nc=36 ,Nm=5最大值020406080100246810繁殖代数x取值02040608010034567繁殖代数y取值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 27 页 - - - - - - - - - 第 20 页01020304050607080901000.80.850.90.951繁殖代数Nc=36 ,Nm=10最大值020406080100-50510繁殖代数x取值020406080100-10-50510繁殖代数y取值01020304050607080901000.70.80.91繁殖代数Nc=36 ,Nm=15最大值020406080100246810繁殖代数x取值020406080100246810繁殖代数y取值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 27 页 - - - - - - - - - 第 21 页01020304050607080901000.80.850.90.951繁殖代数Nc=44 ,Nm=1最大值020406080100345678繁殖代数x取值020406080100246810繁殖代数y取值01020304050607080901000.80.850.90.951繁殖代数Nc=44 ,Nm=5最大值0204060801000246810繁殖代数x取值020406080100246810繁殖代数y取值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 27 页 - - - - - - - - - 第 22 页01020304050607080901000.80.850.90.951繁殖代数Nc=44 ,Nm=10最大值0204060801000246810繁殖代数x取值020406080100246810繁殖代数y取值01020304050607080901000.70.80.91繁殖代数Nc=44 ,Nm=15最大值020406080100-50510繁殖代数x取值020406080100-10-50510繁殖代数y取值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 27 页 - - - - - - - - - 第 23 页3.源程序clear all; clc; f=(x,y)sin(x)*sin(y)/(x*y); %f=(x,y)0.9*exp(-(x+5)2+(y+5)2)/10)+0.99996*exp(-(x-5)2+(y-5)2)/20); x1=(vpa(rand(1,50)+1,6)-1.5)*20; %在-10,10之间产生 50个体的 x种群,精度为 0.00001 y1=(vpa(rand(1,50)+1,6)-1.5)*20; %在-10,10之间产生 50个体的 y种群,精度为 0.00001 x2=floor(double(x1+10)*10000); y2=floor(double(y1+10)*10000); %处理数据,避免小数和负数S=zeros(1,50); N=zeros(1,50); MAX=zeros(1,100); %函数最大值Mx=zeros(1,100); %函数最大值对应 x值My=zeros(1,100); %函数最大值对应 y值Nc=1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; %随机交叉位产生数组,交叉位为总位长一半Nm=1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; %随机变异位产生数组,变异位4 for G=1:100 %以下为交叉x2=x2(randperm(numel(x2); %将种群个体顺序打乱,等效随机选择个体进行交叉y2=y2(randperm(numel(y2); x3=x2; y3=y2; for j=1:22 %每次繁殖进行交叉的个体数分别为20,28,36,44 w=1; %溢出标志, 0为未溢出, 1为溢出while w=1 Nc=Nc(randperm(numel(Nc); %产生随机交叉位掩码for k=1:18 if Nc(k)=1 temp1=bitget(x2(2*j-1),k); temp2=bitget(x2(2*j),k); x3(2*j-1)=bitset(x2(2*j-1),k,temp2); x3(2*j)=bitset(x2(2*j),k,temp1); end; end; for k=19:36 if Nc(k)=1 temp1=bitget(y2(2*j-1),k-18); temp2=bitget(y2(2*j),k-18); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 27 页 - - - - - - - - - 第 24 页y3(2*j-1)=bitset(y2(2*j-1),k-18,temp2); y3(2*j)=bitset(y2(2*j),k-18,temp1); end; end; w=0; if x3(2*j-1)200000|x3(2*j-1)200000|y3(2*j-1)200000|x3(2*j)200000|y3(2*j)0 w=1; end; end; x2=x3; y2=y3; end; %以下为变异x2=x2(randperm(numel(x2); %将种群个体顺序打乱,等效为随机选择个体进行变异y2=y2(randperm(numel(x2); x3=x2; y3=y2; for k=1:15 %变异个体数分别为 1,5,10,15 w=1; while w=1 Nm=Nm(randperm(numel(Nm); for p=1:18 if Nm(p)=1 temp3=bitget(x2(k),p); temp3=temp3; x3(k)=bitset(x3(k),p,temp3); end; end; for p=19:36 if Nm(p)=1 temp3=bitget(y2(k),p-18); temp3=temp3; y3(k)=bitset(y2(k),p-18,temp3); end; end; w=0; if x3(k)200000|y3(k)200000 w=1; end; end; x2=x3; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 27 页 - - - - - - - - - 第 25 页y2=y3; end; %以下为选择复制x1=x2/10000-10; y1=y2/10000-10; for i=1:50 S(i)=f (x1(i),y1(i); end; sum=0; for i=1:50 sum=sum+S(i); end; if sum0 sum=sum*(-1); end; for i=1:50 N(i)=50*S(i)/sum; end; S= fliplr (sort(S); %将适应值按从大到小排序A=round(N); %复制个体数A(2,:)=x2; A(3,:)=y2; asort ind = sort(A(1,:); A = A(:,ind); %复制个体数由大到小排序, 只复制适应值最大的 50个个体x2= fliplr (A(2,:); y2= fliplr (A(3,:); A= fliplr (A(1,:); MAX(G)=S(1); %记录函数最大值Mx(G)=x2(1)/10000-10; %记录函数最大值对应的 x值My(G)=y2(1)/10000-10; %记录函数最大值对应的 y值p=1; for k=1:50 if A(k)50 break; end x3(p)=x2(k); y3(p)=y2(k); p=p+1; end; end; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 26 页,共 27 页 - - - - - - - - - 第 26 页x2=x3; y2=y3; end; G=1:100; subplot(2,1,2);plot(G,MAX) subplot(2,2,1);plot(G,Mx) subplot(2,2,2);plot(G,My) M=MAX(100) Mx(100) My(100) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 27 页,共 27 页 - - - - - - - - -