《2023年遗传算法实验报告.docx》由会员分享,可在线阅读,更多相关《2023年遗传算法实验报告.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、遗传算法实验报告专业:自动化姓名:张俊峰学号:13351 067摘要:遗传算法,是基于达尔文进化理论发展起来的一种应用广泛、 高效的随机搜索与优化方法。本实验运用遗传算法来实现求函数最大 值的优化问题,其中的环节涉及初始化群体、个体评价、选择运算、 交叉运算、变异运算、终止条件判断。该算法具有覆盖面大、减少进 入局部最优解的风险、自主性等特点。此外,遗传算法不是采用拟定 性原则而是采用概率的变迂规则来指导搜索方向,具有动态自适应的 优点。关键词:串集最优化评估 迭代 变异一:实验目的熟悉和掌握遗传算法的运营机制和求解的基本方法。遗传算法是一种基于空间搜索的算法,它通过自然选择、遗传、变异等操作
2、 以及达尔文的适者生存的理论,模拟自然进化过程来寻找所求问题的答案。其求 解过程是个最优化的过程。一般遗传算法的重要环节如下:(1)随机产生一个拟定长度的特性字符串组成的初始种群。(2)对该字符春种群迭代地执行下面的环节a和环节b,直到满足停止准则 为止:a计算种群中每个个体字符串的适应值;b应用复制、交叉和变异等遗传算子产生下一代种群。(3)把在后代中表现的最佳的个体字符串指定为遗传算法的执行结果,即)dou b leva r iatio n 5 4 ;/变异of o r(int i= 0 ;i5;i+)0 for (in t j=0j4; j +)v ariat i on i j=(ran
3、d() % 1 0 0)*0. 01;afor(int i=0; i 5 ; i +)s for(int j=O;j 4 ;j+)。 i f( v ar i ationi川。/)arriU=(-5000+ r and()%l 0 000)*0. 0 001;oco u t 新群体:M e ndl; f o r(int i=0; i5;i+)gfo r (in t j=0;j4; j +)coutsetio s f lags( i o s : 1 eft)s e tw(8)a r r i j coute n d 1;0)-for (ini i=0; i5; i+ + )重新评价double s
4、um=0;。 for ( i n t j=0; j 4;j+)g sum+= a r r i j * a rr|ijj;g result i =l/(sum+l); f or (in t i=0; ib e s t _ r e suit) best_r e s u 1 t=tes t resu 1 t;coutV V”适应值计算,更新 b est_ r es u 1 t : bcst_resu 1 t e n dl;a t es t _num+;。s y stem( p a u se1);r eturn 0 ;)为问题的一个解。二:实验规定已知函数 y =f ( x 1, x 2, x 3,
5、x 4) =1 / ( x i2+ x 22+x32+ x 42+ 1 ),其中-5 Wxi, x 2, x3, xW 5,用遗传算法求y的最大值。三:实验环境操作系统:Mi c r osoft Windo w s 7软件:M i crosoft V i sua I s tud io 2023四:实验原理与环节1、遗传算法的思想生物的进化是以集团为主体的。与此相相应,遗传算法的运笄对象是由M个 个体所组成的集合,称为群体。与生物一代一代的自然进化过程相类似,遗传算 法的运算过程也是一个反复迭代过程,第t代群体极为P (t),进过一代遗传和 进化后,得到第t+1代群体,他们也是由多个个体组成的集
6、合,记做P(t+1)。这 个群体不断地通过遗传和进化操作,并且每次都按照有优胜劣汰的规则将适应度 较高的个体更多地遗传到下一代,这样最终在群体中将会得到一个优良的个体 X,它所相应的表现性X将达成或接近于问题的最优解。2、算法实现环节、产生初始种群:产生初始种群的方法通常有两种:一种是完全随机的方 法产生的,适合于对问题的解无任何先验知识的情况;另一种是将某些先验知识 转变为必须满足的一组规定,然后在满足这些规定的解中再随机地选择样本,t=0, 随机产生n个个体形成一个初始群体P (t),该群体代表优化问题的一些也许解 的集合;适应度评价函数:按编码规则,将群体P (t)中的每一个个体的基因码
7、 所相应的自变量取值代入目的函数,算出其函数值f, in, 2,,n,千越大,表 达该个体有较高的适应度,更适合于f所定义的生存环境,适应度f为群体进化 提供了依据;选择:按一定概率从群体P(t)中选出m个个体,作为双亲用于繁殖后代,产 生新的个体加入下一个群体P (t+1)中。此处选用轮盘算法,也就是比例选择 算法,个体被选择的概率与其适应度成正比。交叉(重组):对于选中的用于繁殖的每一个个体,选择一种交叉方法,产 生新的个体;此处采用生成随机数决定交叉的个体与交叉的位置。变异:以一定的概率Pm从群体P (t + 1)中随机选择若干个个体,对于选 中的个体随机选择某个位置,进行变异;对产生新
8、一代的群体返回环节再进行评价,交叉、变异如此循环往复, 使群体中个体的适应度和平均适应度不断提高,直至最优个体的适应度达成某一 限值或最优个体的适应度和群体的平均适应度不再提高,则迭代过程收敛,算法 结束。五:实验结果实验结果的显示取决于判断算法终止的条件,这里可以有两种选择:1、在程 序中设定迭代的次数;2在程序中设定适应值。本实验是在程序中实脸者输入需 要迭代的次数来判断程序终结的。C:UsersAdministratorDesktop程序作业 遗传算法Debug 传真法.exeEKC:UsersAdministratorDesktop程序作业遗传算:iDebug 港传真法.exe初始化:
9、C0 1.2724-0.40420.51641.5115C1 1.50040.667-0.37790.6987C2 0.7610.98132.65621.252?|C3 0.3962.41621.02460.1571C4 2.46051.76460.38860.5001初蛉化后关 |阿箝萍应适应税出 琏代的次数算,最大值best_result : 0.231103 s 10弟1次迭d q 新群体:1.2724-0.4042 0.106820.,6987B.21160.667-0.3779 1.51151.50040.4995-0.37790.13170.7610.98132.65620.331
10、.2724 二0.4042 0.51641.5115适应值计算,更新best_result : 0.305324第2雄新新群体:1.27240.98132.65620.330.761-0.40420.06820.69871.27240.30240.06820.698?1.2724-0.40420.0682-0.1499-0.2407-0.40420.06820.6987适应值计算,事新best_result: 0.583381博3年彩_二0.25030.0242-0.1065-0.3216 0.1102 -0.3216-0.3216exe02值春4 11应10群4310.适 10.新群体:-0
11、.16830.25030.0242-0.1065-0.2407-0.4042-0.1145-0.2913-0.32160.1620.0242-0.1065-0.3216-0.40420.02420.3077-0.3216-0.0550.0242-0.1065适应值计算,更新best_result: 0.906698-0.38550.0242-0.1065-0.40420.02420.30770.25030.02420.3077-0.40420.0242-0.1065-0.38550.02420.3077-0.38550.0242-0.1065-0.4042-0.1145-0.2913-0.38
12、550.0242-0.1065适应值计算,更新best_result: 0.906698 请按卷意蕤继赛第9次迭代:新群体:-0.3216-0.1683-0.1683-0.3216二0.4042 -0.1145 -0.2913算,更新best_resuit : 0.906698代:六:实验小结在实验过程中,我觉得发现算子的选择对实验结果有一定限度的影响,所以除 了采用PPT上的算子选取外,也同样尝试了其他的算子选择方法。1、选择算子、排序选择方法。基于个体按适应度大小的排序来分派个体被选中的 概率,这种算法与轮盘算法的思绪差不多。、保存最佳个体策略。由于选择、交配、变异等操作的随机性,当代最
13、优秀的个体也许会被破坏,所以可以采用保存当代最优秀的个体,参与到下一代 的选择过程中。但是总的来说,轮盘算法还是选取选择算子最有效、最常用的算法。2、交叉算子、单点交叉。是指在个体编码串中随机设立一个交叉点,在该店互换配 对的两条染色体上的基因。、两点交叉与多点交叉。在选择交叉算子的过程中,单点交叉是最简朴 的方法,又称简朴交叉,两点甚至多点交叉,是交配两点之间的染色体,比单点交 义的适应性更高,但是程序略复杂。本实险采用的是均匀交叉,在选定位置后每一位基因都以相同的概率进行 交叉。附上实验代码(v i sual studio 2023环境下运营)#in c lude#in c lude#in
14、clude# inc 1 ude us i n g name space std;int m a i n ()(srand (time(O);d o uble ar r5 4; /初始化ocoutV初始化: e nd 1 ; f or (ini i =0; i 5 ; i +)0 c out Cigfor(int j=0;jv4;j+) (a rr i j =(-5 000 + r and()% 100000)*0. 0 00 1 );。 cou t se t io s flags(io s :left)s e tw(8) a r r i j;0 co u t en d 1;d o ubl e
15、 res u lt5; d o u b 1 e be s t_resul t ; dou b le resu 1 tl5 ;/ /适应值计算f or (int i= 0 ;i 5 ;i+)0 gd o uble s u m=0;4or(int j=0;j4; j + + )s um+=arrij *ar r ;。r e su 1 t i = 1 / (sum+1);for(int i=0;i 5 ;i+)。resultli =re suit i;s ort(r e s ul t l,r e sultl+5);b e st_re s u 1 t= r esultl 4 ; cout 初始化后进行
16、适应值计算,最大值 b e st_r e suit: be s t_resulten d 1;int n;coutV”请输入需要迭代的次数:H ; c i n n ;int test_ n u m= 1 ;dou b 1 c te s t resu 1 t;ovhilc(tc s t_ n um=n)(3 c outtest_n u mVv次迭代:endl;d o u b 1 e sum _ res u I t =0 ; double pec e nta g e 5J;选择fbr(int i= 0 ;i5;i+)s u m_result+=resu 1 ti;for( i nt i=0; i
17、5;i+)pece n t age i =r e s u 1 t i / s um_res u It;d ouble a; d o ub 1 e a r r 1 54;ofor (in t i= 0 ;i5; i +) f or(int j =O;j5;j+)-ar r 1 i j= a irij;4o r(int i =0;i5; i +)a=(ran d () % 1 0 0)*0.01;if (a=pecenta g e 0) of or ( i ntj=0;jpec e n tage0&a=( p ece n t ag e O+pecentagel)a fo r (in t j=0;
18、j (p e ccn t age0 + p ec e nt a g c 1 )& a = (p e ce n t agclOJ+pcc e nt a ge 11+pece n tage 21) for(int j=0; j(pec e nta g e0+ p ecenta g e 1 +pece ntage 2 )&a=( p e c e n tage 0+ pecen t age 1 +pe c ent a g e 2+pecenta g e 3)f o r(int j=0; j (pecentageO+pece n t a g e 1 + p e c entage2+p e c entag
19、e3 )& a = (pec e ntag e 0+p e cen t age I +pece n tage 2 4-pece n tag e 3+ p ecentag e |4)2fo r (int j=0; j 4;j+)*ar r i j=a r r 1do u ble maling_ p e c e ntage = 0.88; d oub 1 e m a ting51 ; i n t nu m ;doubl etend4= 0 ;交配4or(int i=0;i5; i +)ma t inglij=( r a nd()%100) *0.0 1 ;)for(i n t i =0; iV5;i+)。 if (mat i ng i =0.88)ao o fo r (in t k=i+l; k 5 : k +)SOO 。 -if (matin gk=0.88& ar r i0!=a rrk 0)0000 18。 onum= ran d()%3;a fo r (int l=n u m+ 1 ;14; 1+)t end 1 =a r r i L 1 ;。 for(int m= n um+ 1 ;m 4 ;m+)83 oa r r =ar r k m;。arr km=ten d m;&OOO |2),。mati n gk =1;br e ak;