关于遗传算法研究的内容调研设计毕业论文
遗传算法产品设计论文

遗传算法产品设计论文1产品设计过程建模产品设计过程中设计活动之间的关系一般分为串行、并行和交叉三种,可以用网络图或DSM的形式进行描述,这三种关系的网络图及相应的矩阵映射如图1所示。
图中,“*”表示两个活动之间有信息交互,“*”也可用数字代替,数值越大表明活动之间的信息交互越多;“0”表示两个活动之间没有信息交互。
本文使用数字DSM来建立活动之间的信息交互耦合关系,用迭代因子表示耦合关系强度。
产品设计过程中每个设计活动都要花费时间和成本,设计活动的执行顺序对整个设计过程的时间和成本有着重大的影响。
设计迭代又增加了设计过程的复杂性,一些设计活动往往需要重复执行多次才能得到满意结果。
在实际工程应用中,返工并不是完全重复已做过的所有工作,而仅需重做其中的一部分[8]。
设计活动之间返工执行的次数用迭代因子的大小来表示,当首次执行返工时,要做该项任务的所有工作,耗时即为该任务的整个持续时间;第二次以后进行返工时,工作量为任务总工作量的一部分,耗时等于任务持续时间乘以一个小于1的正系数,该系数称为返工影响因子[9]。
因此,在考虑时间、成本和活动之间的迭代关系的同时,还要通过构建活动之间的返工影响矩阵来解决返工量变化的问题。
为了缩短设计开发周期、降低设计成本、减少设计迭代,往往需要设定设计过程多目标优化函数。
设计过程的目标优化函数一般包含成本目标、时间目标和设计活动迭代目标。
2基于遗传算法的模型优化利用遗传算法进行模型优化,采用实数编码,染色体中每个编码位表示一个活动。
假设设计活动总数为n,每个编码位的取值为1、2、…、n,每个整数只用一次。
算法主要步骤如下:(1)初始化群体,群体中每一条染色体对应一个活动顺序设计方案,设置种群规模。
(2)根据适应度函数计算群体中每个个体的适应度值。
(3)采用轮盘赌法来选择下一代的个体,即个体被选中并遗传到下一代群体中的概率与个体的适应度大小成正比。
(4)按交叉算子进行交叉操作,设置交叉概率。
遗传算法毕业论文

目录1 引言 (1)2 问题描述 (2)3 基于遗传算法TSP算法 (2)3.1 基于遗传算法的TSP算法总体框架 (2)3.2算法的详细设计 (3)3.2.1 解空间的表示方式 (3)3.2.2 种群初始化 (4)3.2.3适应度函数 (4)3.2.4选择操作 (4)3.2.5交叉操作 (5)3.2.6变异操作 (6)3.2.7进化逆转操作 (6)3.3 实验结果分析 (7)4 基于模拟退火算法的TSP算法 (10)4.1 SA算法的实现过程 (10)4.2 算法流程图 (10)4.3模拟退火算法的实现过程 (10)4.4实验结果 (11)5 对两种算法的评价 (14)5.1遗传算法优缺点 (14)5.2 模拟退火算法的优缺点 (15)6结语 (15)参考文献 (17)附录: ...............................................................................................................错误!未定义书签。
廊坊师范学院本科生毕业论文论文题目:基于遗传算法与模拟退火算法的TSP算法求解10大城市最短旅途论文摘要:TSP问题为组合优化中的经典的NP完全问题.本论文以某旅行社为中国十大旅游城市--珠海、西安、杭州、拉萨、北京、丽江、昆明、成都、洛阳、威海制定最短旅途为例,分别利用基于遗传算法的TSP算法与基于模拟退火算法的TSP算法求解10大城市旅游路线问题.本论文给出了遗传算法与模拟退火算法中各算子的实现方法,并展示出求解系统的结构和求解系统基于MATLAB的实现机制.利用MATLAB软件编程,运行出结果,并对基于遗传算法的TSP算法结果与基于模拟退火算法的TSP算法的结果进行比较,描述其优缺点,并选择最为恰当的TSP算法,实现最短旅途的最优解.关键词:遗传算法;模拟退火算法;TSP;最短路径;Title:TSP Algorithm Based on Genetic Algorithm or Simulated Annealing Algorithm for Solving the Shortest Journey of 10 CitiesAbstract:TSP problem is a classic NP problem about combinatorial optimization.This article takes a travel agency looking for the shortesttrip of ten tourist cities in China-Zhuhai,Xi'an,Hangzhou,Lhasa,Beijing,Lijiang,Kunming,Chengdu,Luoyang and Weihai forinstance,and solves this problem by TSP algorithm based on geneticalgorithm and simulated annealing algorithm.The article gives theimplementations of every operator of genetic algorithm and simulatedannealing algorithm and demonstrates the architecture and theimplementation mechanism of the solving system based on MATLAB.Iprogram and operate the results by MATLAB software,and compare theresults based on genetic algorithm and simulated annealingalgorithm.And describe their advantages and disadvantages so thatchoose the most appropriate TSP algorithm to achieve the optimalsolution for the shortest path.Keywords:genetic algorithm;simulated annealing algorithm;TSP;the shortest path1 引言TSP问题为组合优化中的经典问题,已经证明为一NP完全问题[1],即其最坏情况下的时间复杂性随着问题规模的扩大,按指数方式增长[2],到目前为止不能找到一个多项式时间的有效算法.TSP问题可描述为:已知n个城市相互之间的距离,某一旅行商从某个城市出发访问每个城市一次且仅一次,最后回到出发城市,如何安排才使其所走路线最短.TSP问题不仅仅是一个简单的组合优化问题,其他许多的NP完全问题可以归结为TSP问题,如邮路问题、装配线上的螺帽问题和产品的生产安排问题等,使得TSP问题的有效求解具有重要的意义.本文中的TSP算法主要采用遗传算法与模拟退火算法.遗传算法是一种进化算法,其基本原理是仿效生物界中的“物竞天择,适者生存”的演化法则[3].遗传算法把问题参数编码为染色体,再按照所选择的适应度函数,利用迭代的方式进行选择、交叉、变异以及进化逆转等运算对个体进行筛选和进化,使适应值大的个体被保留,适应值小的个体被淘汰[4],新的群体继承了上一代的信息,又优于上一代,这样反复循环,直至满足条件,最后留下来的个体集中分布在最优解的周围,筛选出最优个体作为问题的解.模拟退火算法的出发点是基于物理中固体物质的退火过程与一般的组合优化问题之间的相似性[5],该算法是一种优化算法,其物理退火过程由三部分组成,分别为:加温过程、等温过程、冷却过程.其中,加温过程对应算法设定初温,等温过程对应算法的Metropolis[6]抽样过程,冷却过程对应控制参数的下降.这里能量的变化就是目标函数,要得到的最优解就是能量最低态[7].Metropolis准则是SA算法收敛于全局最优解的关键所在,Metropolis 准则以一定的概率接受恶化解,这样就使算法跳离局部最优的陷阱.2 问题描述本案例为某旅行社为中国十大旅游城市,分别为珠海、西安、杭州、拉萨、北京、丽江、昆明、成都、洛阳、威海,根据全程路径最短为目的,制定最优的旅游顺序依次游玩这十个城市.这类问题就由TSP算法来解决,寻找出一条最短遍历这10个城市的路径.利用google地图找到城市坐标,下表为这十个城市的位置坐标如表2-1所示.表2-1 10个城市的位置坐标3 基于遗传算法TSP算法3.1 基于遗传算法的TSP算法总体框架TSP问题的遗传算法包括编码设计、种群初始化、适应度函数选择、终止条件设定、选择操作设定、交叉操作设定以及变异操作设定和进化逆转操作.为简化TSP问题的求解,假设每个城市和其它任意一个城市之间都以欧氏距离[8]直接相连.遗传算法TSP问题的流程图如图2-1所示.N图2-1算法流程框架图3.2 算法的详细设计3.2.1 解空间的表示方式遗传算法对解空间的表示大多采用二进制编码形式,但是二进制编码方式不适合TSP问题的解的表示,因为它要求特殊的修补算子[9]来修复变化算子所产生的非法路径(即不可行路径).给出城市编号,用十进制数编码来表示解更合适,例如:近邻表示、次序表示和路径表示等等.这里采用了最简单的路径表示法.它是最自然、最接近人类思维的表示法.因此对十大旅游城市按照珠海、西安、杭州、拉萨、北京、丽江、昆明、成都、洛阳、威海顺序依次编号为1,2,3,4,5,6,7,8,9,10,例如,下面的路径(闭合的):5→1→2→4→3→6→7→9→8→10→5表示从城市5出发,经过1,2,4,3,6,7,9,8,10最后回到城市5的一条路径,可以自然地用一维数组来表示:(5,1,2,4,3,6,7,9,8,10)10个旅游城市的TSP问题,如果将种群规模设为200,则解空间就用二维数组来表示:Path[200][10].3.2.2 种群初始化种群的规模选择应适当,盲目的增大种群规模不能使算法得到改进,反而大大增加了计算的开销.10个城市TSP 问题,可以选择小规模的种群(例如200),种群初始化时,先产生1,2,…,10的一条规则路径,然后在这条路径中随机选两个数,将它们交换位置,这样做若干次(本文采用200次),保证这条路径变成了一条随机的路径.以这条随机路径为基础,对一些随机的位,做两两交换,这样产生了一个个体;同样地产生种群里其它的个体.3.2.3 适应度函数适应度表明个体或解的优劣性[10],不同的问题,适应度函数的定义方式也不同,本文设12610| k ||k ||k k 为一个采用整数编码的染色体,i j k k D 为城市i k 到城市j k 的欧氏距离,则该个体的适应度为[11]:1111i j n n k k k k i fitness DD -==+∑ (1)即适应度函数为恰好走遍10个城市,在回到出发城市的总距离的倒数.优化的目标就是选择适应度函数值尽可能大的染色体,适应度函数值越大的染色体越优质,反之越劣质.求得种群中所有个体的适应值后,将适应值最大的个体保存起来,到演化完毕时,这个个体就是最后要求的最优解.3.2.4 选择操作选择操作的目的是为了从当前群体中以一定的概率选择优良个体到新群体中,将选择算子作用于群体,从而使优化的个体有机会直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代;个体被选中的概率与适应度值有关,适应度值越大,被选中的概率也就越大[12],而适应度值越大的染色体越优质.本案例选择轮盘赌法,即基于适应度比例的选择策略,个体i 被选中的概率为:1ii N jj F p F==∑ (2) 其中,i F 为个体i 的适应度值;N 为种群个体数目.3.2.5 交叉操作交叉操作是遗传算法中最主要的遗传操作,通过交叉操作可以得到新一代个体,新个体结合了其父辈个体的特性,交叉体现了信息交换的思想.利用不同映射杂交,确定交叉操作的父代,将父代样本两两分组,每组重复以下过程:(1)产生两个[1,10]区间的随机整数1r 和2r ,确定两个位置,对两个位置的中间数据进行交叉,如14r =,27r =5 1 2 4 367 98 1010 6 2 3 5 8 9 4 1 7交叉为:* 1 2 3 5 8 9 * * 1010 * 2 4 3 6 7 * 1 *(2)交叉后,对同一个个体中有重复的城市编号,不重复的数字保留,有冲突的数字(带*的位置)采用部分映射的方法消除冲突,即利用中间段的对应关系进行映射.结果为:4 1 2 35 8 967 1010 5 2 4 3 6 7 8 1 9交叉是希望不同的个体在产生下一代时,能够结合各自的优势基因,产生更好质量的下一代.3.2.6 变异操作变异可以看作是外界对种群的影响.变异是为了引入新的因素,希望个体在外界的作用下,能够实现自我优化,生好的基因.将变异算子作用于群体.即是对群体中的个体串的某些基因位置上的基因值作变动.变异算子采用了简单的倒序变换,以10城市为例,随机的产生两个小于10的整数,对某个个体进行分割,假设14r=,27r=,将分割段倒序并放回原来的位置即可,如下数组所示:5 1 2 4 367 98 10得到的新解为:5 1 2 7 36 4 9 8 10由于这种变异算子仍能保持个体中的路径片段,即倒序前后这个切割段的路径是一样的,只是两端点与整个路径的连接颠倒了,这使得变异不是漫无边际,而是有所取舍的.这种简单反序可以保证后代仍然是一条合法途径.3.2.7进化逆转操作为了改善遗传算法的局部搜索能力,在选择、交叉、变异之后引进连续多次的进化逆转操作,这里的“进化”是指逆转算子的单方向性[13],即只有经逆转后,适应度值有所提高的才接受下来,否则逆转无效.产生两个[1,10]区间内的随机整数1r和2r,确定两个位置,将其对换位置,例如14r=,27r=5 1 2 4 367 98 10进化逆转后为:5 1 2 7 36 4 9 8 10对每个个体进行交叉变异,然后代入适应度函数进行评估,x选择出适应值大的个体进行下一代交叉和变异以及进化逆转操作循环操作:判断是否满足设定的最大遗传代数MAXGEN[14],不满足则跳入适应度值计算;否则结束遗传操作.3.3 实验结果分析1-10的十个数字按顺序为珠海、西安、杭州、拉萨、北京、丽江、昆明、成都、洛阳、威海的编号.利用各城市坐标构成的102的矩阵及初始化随机值和DrawPath函数画出闭合路径图,为优化前的随机路线轨迹图,如图3-1所示:图3-1随机路线轨迹图图中三角标注的数字6代表起点,依次按照箭头方向遍历,最终再次回到起点6.初始种群中的一个随机值:6—>3—>7—>8—>5—>1—>2—>4—>9—>10—>6总距离:165.2494对照1-10数字编号所代表的的城市,随机路线为:丽江—>杭州—>昆明—>成都—>北京—>珠海—>西安—>拉萨—>洛阳—>威海—>丽江.优化后的最优路线图如图3-2所示:图3-2 最优路线图最优解:4—>6—>7—>1—>3—>10—>5—>9—>2—>8—>4总距离:77.1532即最优路线如下所示:拉萨—>丽江—>昆明—>珠海—>杭州—>威海—>北京—>洛阳—>西安—>成都—>拉萨此遗传算法在解决TSP问题过程中的优化迭代过程如下图3-3所示:图3-3 优化过程其中横坐标表示迭代次数,纵坐标为优化过程中路线长度.由该优化过程图可知,优化前后路径长度有了很大的改进,20代以后路径长度基本上已经保持不变了,可以认为是最优解了.总距离由原来的165.2494变为77.1532,降低为原来的46.69%,表明利用遗传算法解决TSP问题可以起到较好的作用.4 基于模拟退火算法的TSP 算法 4.1 SA 算法的实现过程 4.2 算法流程图4.3模拟退火算法的实现过程 (1)控制参数的设置需要设置的主要控制参数有降温速率q 、取初始温度0T 足够大,令T =0T ,任取初始解1S ,确定每个T 时的迭代次数,即Metropolis 链长L ,如图表4-1所示.表4-1参数设定(2)初始解对于10个城市的TSP 问题,得到的解为1~n 一个排序,其中每个数字为对应城市的编号,10个城市的TSP 问题{1,2,3,4,5,6,7,8,9,10},则|1|2|3|4|5|6|7|8|9|10就为一个合法解,采用随机排列的方法产生一个初始解1S . (3)解变换生成新解通过对当前解1S 进行变换,产生新路径的数组即新解,这里采用的变换是产生随机数的方法来产生将要交换的两个城市,用二邻域变换法[15]产生新的路径,即新的可行解2S .例如n=10时,产生两个[1,10]范围内的随机整数1r 和2r 确定两个位置,将其对换位置,如1r =4, 2r =75 1 2 4 367 98 10得到的新解为:5 1 2 7 36 4 9 8 10(4)Metropolis 准则若路径长度函数为()f S ,则当前解的路径为1()f S ,新解的路径为2()f S ,路径差为df =2()f S -1()f S [16],则Metropolis 准则为[17]:1exp()P df T⎧⎪=⎨-⎪⎩ (3)若0df <,则接受2S 作为新的当前解,即1S 2S =;否则计算2S 的接受概率exp(/)df T -,即随机产生的(0,1)区间上均匀分布的随机数rand ,若exp(/)df T rand->[18],也接受2S 作为新的当前解,1S 2S =;否则保留当前解1S .(5)降温利用降温速率q 进行降温,即T=qT ,则T 小于结束温度,则停止迭代输出当前解1S 为最优解,结束程序,否则按衰减函数衰减T 后逐渐降低控制温度,重复Metropolis 过程,继续迭代,直至满足结束准则,求出最优解. 4.4实验结果利用各城市坐标构成的102⨯的矩阵及初始化随机值和DrawPath 函数分别画出优化前的随机路径轨迹图与优化后的最优闭合路径图,以及优化过程图.并利用计时器记录了运行结果所花费的时间.为优化前的随机路线轨迹图,如图4-2所示.图4-2随机路线轨迹图初始种群中的一个随机值:8—>1—>7—>4—>3—>6—>10—>2—>9—>5—>8总距离:149.0742优化后的最优路线轨迹图如图4-3所示.图4-3 最优路线轨迹图最优解:9—>2—>8—>4—>6—>7—>1—>3—>10—>5—>9总距离:77.1532即最优路线如下所示:洛阳—>西安—>成都—>拉萨—>丽江—>昆明—>珠海—>杭州—>威海—>北京—>洛阳本次运行的时间如下所示:Elapsed time is 12.232553 seconds.优化过程如图4-4所示:图4-4优化过程由图4-4可以看出,优化前后的路径长度得到很大的改进,由优化前的149.0742变为77.1532,变为原来的51.75%,50代以后路径长度基本上已经保持不变了,可以认为是最优解了.5 对两种算法的评价5.1遗传算法优缺点遗传算法优点:(1)对可行解表示的广泛性;(2)群体搜索特性;(3)不需要辅助信息;(4)内在启发式随机搜索特性;(5)遗传算法在搜索过程中不容易陷入局部最优,即使在所定义的适应度函数是不连续的,非规则的或有噪音的情况下,也能以很大的概率找到全局最优解;(6)遗传算法具有固有的并行性和并行计算能力;(7)遗传算法具有可扩展性,易于同别的技术混合.遗传算法缺点:(1)编码不规则或编码存在表示的不规则性;(2)单一的遗传算法编码不能全面的将优化问题的约束表示出来;(3)遗传算法通常的效率比比其他传统的优化方法低;(4)遗传算法容易出现过早收敛;(5)遗传算法对算法的精度,可信度,计算复杂性等方面,还没有有效的定量分析方法.5.2 模拟退火算法的优缺点模拟退火法优点:(1)它能够处理具有任意程度的非线性、不连续性、随机性的目标函数;(2)目标函数可以具有任意的边界条件和约束;(3)比其他线性优化方法,SA的编程工作量小,且易于实现;(4)统计上可以保证找到全局最优解.模拟退火算法缺点:(1)找到最优解需要耗费非常多的时间;(2)相对于其他一些技术对某一个具体问题的求解需要更困难的参数调整;(3)使用不当致使降温过快,导致模拟退火变为了模拟淬火(SQ),而SQ是无法从统计学上保证找到最优解的.6结语遗传算法利用自然界的“物竞天择、适者生存”的演化法则,把问题参数编码为染色体,再利用迭代的方式进行选择、交叉以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体.实践证明,遗传算法在搜索优秀解的过程中模拟生物遗传,实现优中选优的过程,在解空间中快速收敛到优秀解.遗传算法对于解决TSP问题等组合优化问题具有较好的寻优性能.模拟退火算法是利用自适应启发式概率性搜索的算法,可以用以求解不同的非线性问题,对不可微甚至不连续的函数优化,能以较大的概率求得全局最优解,并且能处理不同类型的优化设计变量(离散的,连续的,混合型的),不需要任何的辅助信息,对目标函数和约束函数没有任何要求.利用Metropolis算法适当地控制温度的下降过程,在优化问题中具有很强的竞争力,但是其优化过程效率略低于遗传算法.因此,解空间较小的情况下,遗传算法与模拟退火算法均可采用,但是解空间较大时,考虑结果运行时间,应采用遗传算法.参考文献[1]毕晓君.信息智能处理技术[M].北京:电子工业出版社.2010.[2]储理才.基于MATLAB的遗传算法程序设计及TSP问题求解[J].集美大学学报:2001,6(01):14-19[3]代桂平,王勇,侯亚荣.基于遗传算法的TSP问题求解算法及其系统[J].微计算机信息,2010(04):15-16,19[4]Negnevistsky,M.顾力栩,沈晋惠译.人工智能——智能系统指南[M].北京:机械工业出版社.2010.[5]任春玉.基于混合遗传算法的TSP问题优化研究[J].哈尔滨商业大学学报.2007.[6] Michalewicz Z. Genetic Algorithms +Data Structure=Evolution Programs.Springer-Verlag,Berlin. 2011[7] 易敬,王平,李哲. 基于遗传算法的TSP问题研究[J]. 信息技术,2006,30(7): 110-112.[8]邓辉文.离散数学[M].北京:清华大学出版社.2006.[9]刘雁兵,刘付显.基于遗传算法的TSP问题求解与仿真[J].电光与控制.2007.[10]张春霞,王蕊.基于遗传算法求解TSP问题的算法设计[J].安阳工学院学报.2007.[11]郑阿奇.MATLAB 实用教程[M].北京:电子工业出版社.2004.[12]李飞,白艳萍.用遗传算法求解旅行商问题[J].中北大学学报.2007.[13]翟梅梅.基于交叉算子改进的遗传算法求解TSP问题[J].淮南师范学院学报.2009.[14]Merz P.A comparison of recombination operators forthe traveling salesmanproblem[A].Proceedings of the Genetic and Evolutionary Conference.2007 [15] 周涛. 基于改进遗传算法的TSP问题研究[J]. 微电子学与计算机,2006,23(10): 104-107.[16]Jung S,Moon B R. Toward Minimal Restriction of Genetic En-coding andCrossovers for the Two-Dimensional Euclidean TSP [J].IEEE Transactions onEvolutionary Computation,2011,6 ( 12) :557~565[17]Tsai Cheng-Fa ,Tsai Chun-Wei ,Yang Tzer . A Modified Mul-tiple-Searching Method to Genetic Algorithms for Solving Travel-ing Salesman Problem[J].IEEE Transactions on Systems ,Man and Cybernetics ,2011 ,3(10) :6~12[18] Write A H. Genetic Algorithms for Real Parameter Optimization.FoundationofGeneticAlgorithms.Sanmateo,GA.2010:205-218附录:遗传算法的TSP方法代码:1 种群初始化函数InitPop的代码:%% 初始化种群%输入:% NIND:种群大小% N:个体染色体长度(这里为城市的个数)%输出:%初始种群function Chrom=InitPop(NIND,N)Chrom=zeros(NIND,N);%用于存储种群for i=1:NINDChrom(i,:)=randperm(N);%随机生成初始种群end2 种群个体的适应度函数Fitness的代码: %% 适配值函数%输入:%个体的长度(TSP的距离)%输出:%个体的适应度值function FitnV=Fitness(len)FitnV=1./len;3选择操作函数的Select的代码:%% 选择操作%输入%Chrom 种群%FitnV 适应度值%GGAP:代沟%输出%SelCh 被选择的个体function SelCh=Select(Chrom,FitnV,GGAP) NIND=size(Chrom,1);NSel=max(floor(NIND*GGAP+.5),2);ChrIx=Sus(FitnV,NSel);SelCh=Chrom(ChrIx,:);其中,函数Sus的代码为:% 输入:%FitnV 个体的适应度值%Nsel 被选择个体的数目% 输出:%NewChrIx 被选择个体的索引号function NewChrIx = Sus(FitnV,Nsel)[Nind,ans] = size(FitnV);cumfit = cumsum(FitnV);trials = cumfit(Nind) / Nsel * (rand + (0:Nsel-1)');Mf = cumfit(:, ones(1, Nsel));Mt = trials(:, ones(1, Nind))';[NewChrIx, ans] = find(Mt < Mf & [ zeros(1, Nsel); Mf(1:Nind-1, :) ] <= Mt);[ans, shuf] = sort(rand(Nsel, 1));NewChrIx = NewChrIx(shuf);4 交叉操作函数Recombin的代码:%% 交叉操作% 输入%SelCh 被选择的个体%Pc 交叉概率%输出:% SelCh 交叉后的个体function SelCh=Recombin(SelCh,Pc)NSel=size(SelCh,1);for i=1:2:NSel-mod(NSel,2)if Pc>=rand %交叉概率Pc[SelCh(i,:),SelCh(i+1,:)]=intercross(SelCh(i,:),SelCh(i+1,:)); endend%输入:%a和b为两个待交叉的个体%输出:%a和b为交叉后得到的两个个体其中intercross函数代码:function [a,b]=intercross(a,b)L=length(a);r1=randsrc(1,1,[1:L]);r2=randsrc(1,1,[1:L]);if r1~=r2a0=a;b0=b;s=min([r1,r2]);e=max([r1,r2]);for i=s:ea1=a;b1=b;a(i)=b0(i);b(i)=a0(i);x=find(a==a(i));y=find(b==b(i));i1=x(x~=i);i2=y(y~=i);if ~isempty(i1)a(i1)=a1(i);endif ~isempty(i2)b(i2)=b1(i);endendend5变异操作函数Mutate的代码:%% 变异操作%输入:%SelCh 被选择的个体%Pm 变异概率%输出:% SelCh 变异后的个体function SelCh=Mutate(SelCh,Pm)[NSel,L]=size(SelCh);for i=1:NSelif Pm>=randR=randperm(L);SelCh(i,R(1:2))=SelCh(i,R(2:-1:1)); endend6进化逆转操作函数Reverse代码:%% 进化逆转函数%输入%SelCh 被选择的个体%D 个城市的距离矩阵%输出%SelCh 进化逆转后的个体function SelCh=Reverse(SelCh,D)[row,col]=size(SelCh);ObjV=PathLength(D,SelCh); %计算路径长度SelCh1=SelCh;for i=1:rowr1=randsrc(1,1,[1:col]);r2=randsrc(1,1,[1:col]);mininverse=min([r1 r2]);maxinverse=max([r1 r2]);SelCh1(i,mininverse:maxinverse)=SelCh1(i,maxinverse:-1:mininverse); endObjV1=PathLength(D,SelCh1); %计算路径长度index=ObjV1<ObjV;SelCh(index,:)=SelCh1(index,:);7画出所给路线的轨迹图函数DrawPath的代码:%% 画路径函数%输入% Chrom 待画路径% X 各城市坐标位置function DrawPath(Chrom,X)R=[Chrom(1,:) Chrom(1,1)]; %一个随机解(个体)figure;hold onplot(X(:,1),X(:,2),'o','color',[0.5,0.5,0.5])plot(X(Chrom(1,1),1),X(Chrom(1,1),2),'rv','MarkerSize',20)for i=1:size(X,1)text(X(i,1)+0.05,X(i,2)+0.05,num2str(i),'color',[1,0,0]);endA=X(R,:);row=size(A,1);for i=2:row[arrowx,arrowy] = dsxy2figxy(gca,A(i-1:i,1),A(i-1:i,2));%坐标转换annotation('textarrow',arrowx,arrowy,'HeadWidth',8,'color',[0,0,1]); endhold offxlabel('横坐标')ylabel('纵坐标')title('轨迹图')box on8遗传算法的主函数代码:%遗传算法求解TSP问题(为选择操作从新设计后程序)%输入:%D 距离矩阵%NIND 为种群个数%X 参数是中国10个城市的坐标(初始给定)%MAXGEN 为停止代数,遗传到第MAXGEN代时程序停止,MAXGEN的具体取值视问题的规模和耗费的时间而定%m 为适值淘汰加速指数,最好取为1,2,3,4,不宜太大%Pc 交叉概率%Pm 变异概率%输出:%R 为最短路径%Rlength 为路径长度clearclcclose allX=[22.31 113.5834.37 108.9530.29 120.1629.66 91.1439.95 116.4126.86 100.2324.89 102.8330.59 104.0734.65 112.4637.53 122.13];D=Distanse(X); %生成距离矩阵N=size(D,1); %城市个数%% 遗传参数NIND=100; %种群大小MAXGEN=200; %最大遗传代数Pc=0.9; %交叉概率Pm=0.05; %变异概率GGAP=0.9; %代沟%% 初始化种群Chrom=InitPop(NIND,N);%% 画出随机解的路径图DrawPath(Chrom(1,:),X)titlepause(0.0001)%% 输出随机解的路径和总距离disp('初始种群中的一个随机值:')OutputPath(Chrom(1,:));Rlength=PathLength(D,Chrom(1,:));disp(['总距离:',num2str(Rlength)]);disp('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~')%% 优化gen=0;figure;hold on;box onxlim([0,MAXGEN])title('优化过程')xlabel('代数')ylabel('最优值')ObjV=PathLength(D,Chrom); %计算路径长度preObjV=min(ObjV);while gen<MAXGEN%% 计算适应度ObjV=PathLength(D,Chrom); %计算路径长度% fprintf('%d %1.10f\n',gen,min(ObjV))line([gen-1,gen],[preObjV,min(ObjV)]);pause(0.0001)preObjV=min(ObjV);FitnV=Fitness(ObjV);%% 选择SelCh=Select(Chrom,FitnV,GGAP);%% 交叉操作SelCh=Recombin(SelCh,Pc);%% 变异SelCh=Mutate(SelCh,Pm);%% 逆转操作SelCh=Reverse(SelCh,D);%% 重插入子代的新种群Chrom=Reins(Chrom,SelCh,ObjV);%% 更新迭代次数gen=gen+1 ;end%% 画出最优解的路径图ObjV=PathLength(D,Chrom); %计算路径长度[minObjV,minInd]=min(ObjV);DrawPath(Chrom(minInd(1),:),X)%% 输出最优解的路径和总距离disp('最优解:')p=OutputPath(Chrom(minInd(1),:));disp(['总距离:',num2str(ObjV(minInd(1)))]);disp('-------------------------------------------------------------')其中用到的函数如下:计算距离函数Distence代码:%% 计算两两城市之间的距离%输入 a 各城市的位置坐标%输出 D 两两城市之间的距离function D=Distanse(a)row=size(a,1);D=zeros(row,row);for i=1:rowfor j=i+1:rowD(i,j)=((a(i,1)-a(j,1))^2+(a(i,2)-a(j,2))^2)^0.5; D(j,i)=D(i,j);endend输出路线函数OutputPath代码:%% 输出路径函数%输入:R 路径function p=OutputPath(R)R=[R,R(1)];N=length(R);p=num2str(R(1));for i=2:Np=[p,'—>',num2str(R(i))];enddisp(p)计算个体路线长度函数PathLength代码:%% 计算各个体的路径长度% 输入:% D 两两城市之间的距离% Chrom 个体的轨迹function len=PathLength(D,Chrom)[row,col]=size(D);NIND=size(Chrom,1);len=zeros(NIND,1);for i=1:NINDp=[Chrom(i,:) Chrom(i,1)];i1=p(1:end-1);i2=p(2:end);len(i,1)=sum(D((i1-1)*col+i2));end重插入子代得到新种群的函数Reins代码:%% 重插入子代的新种群%输入:%Chrom 父代的种群%SelCh 子代种群%ObjV 父代适应度%输出% Chrom 组合父代与子代后得到的新种群function Chrom=Reins(Chrom,SelCh,ObjV)NIND=size(Chrom,1);NSel=size(SelCh,1);[TobjV,index]=sort(ObjV);Chrom=[Chrom(index(1:NIND-NSel),:);SelCh];模拟退火算法的TSP方法代码:生成新解:function S2=NewAnswer(S1)%% 输入% S1:当前解%% 输出% S2:新解N=length(S1);S2=S1;a=round(rand(1,2)*(N-1)+1);W=S2(a(1));S2(a(1))=S2(a(2));S2(a(2))=W;Metropolis准则函数function [S,R]=Metropolis(S1,S2,D,T)%% 输入% S1:当前解% S2: 新解% D: 距离矩阵(两两城市的之间的距离)% T: 当前温度%% 输出% S:下一个当前解% R:下一个当前解的路线距离%%R1=PathLength(D,S1); %计算路线长度N=length(S1); %得到城市的个数R2=PathLength(D,S2); %计算路线长度dC=R2-R1; %计算能力之差if dC<0 %如果能力降低接受新路线S=S2;R=R2;elseif exp(-dC/T)>=rand %以exp(-dC/T)概率接受新路线 S=S2;R=R2;else %不接受新路线S=S1;R=R1;Endfunction varargout = dsxy2figxy(varargin)if length(varargin{1}) == 1 && ishandle(varargin{1}) ...&& strcmp(get(varargin{1},'type'),'axes') hAx = varargin{1};varargin = varargin(2:end);elsehAx = gca;end;if length(varargin) == 1pos = varargin{1};else[x,y] = deal(varargin{:});endaxun = get(hAx,'Units');set(hAx,'Units','normalized');axpos = get(hAx,'Position');axlim = axis(hAx);axwidth = diff(axlim(1:2));axheight = diff(axlim(3:4));if exist('x','var')varargout{1} = (x - axlim(1)) * axpos(3) / axwidth + axpos(1); varargout{2} = (y - axlim(3)) * axpos(4) / axheight + axpos(2); elsepos(1) = (pos(1) - axlim(1)) / axwidth * axpos(3) + axpos(1);pos(2) = (pos(2) - axlim(3)) / axheight * axpos(4) + axpos(2); pos(3) = pos(3) * axpos(3) / axwidth;pos(4) = pos(4) * axpos(4 )/ axheight;varargout{1} = pos;endset(hAx,'Units',axun)模拟退火算法主函数:clc;clear;close all;%%ticT0=1000; % 初始温度Tend=1e-3; % 终止温度L=500; % 各温度下的迭代次数(链长)q=0.9; %降温速率X=[22.31 113.5834.37 108.9530.29 120.1629.66 91.1439.95 116.4126.86 100.2324.89 102.8330.59 104.0734.65 112.4637.53 122.13];%%D=Distanse(X); %计算距离矩阵N=size(D,1); %城市的个数%% 初始解S1=randperm(N); %随机产生一个初始路线%% 画出随机解的路径图DrawPath(S1,X)pause(0.0001)%% 输出随机解的路径和总距离disp('初始种群中的一个随机值:')OutputPath(S1);Rlength=PathLength(D,S1);disp(['总距离:',num2str(Rlength)]);%% 计算迭代的次数TimeTime=ceil(double(solve(['1000*(0.9)^x=',num2str(Tend)]))); count=0; %迭代计数Obj=zeros(Time,1); %目标值矩阵初始化track=zeros(Time,N); %每代的最优路线矩阵初始化%% 迭代while T0>Tendcount=count+1; %更新迭代次数temp=zeros(L,N+1);for k=1:L%% 产生新解S2=NewAnswer(S1);%% Metropolis法则判断是否接受新解[S1,R]=Metropolis(S1,S2,D,T0); %Metropolis 抽样算法temp(k,:)=[S1 R]; %记录下一路线的及其路程end%% 记录每次迭代过程的最优路线[d0,index]=min(temp(:,end)); %找出当前温度下最优路线if count==1 || d0<Obj(count-1)Obj(count)=d0; %如果当前温度下最优路程小于上一路程则记录当前路程 elseObj(count)=Obj(count-1);%如果当前温度下最优路程大于上一路程则记录上一路程endtrack(count,:)=temp(index,1:end-1); %记录当前温度的最优路线T0=q*T0; %降温fprintf(1,'%d\n',count) %输出当前迭代次数end%% 优化过程迭代图figureplot(1:count,Obj)xlabel('迭代次数')ylabel('距离')title('优化过程')%% 最优解的路径图DrawPath(track(end,:),X)%% 输出最优解的路线和总距离disp('最优解:')S=track(end,:);p=OutputPath(S);disp(['总距离:',num2str(PathLength(D,S))]);disp('-------------------------------------------------------------')。
基于遗传算法的智能优化设计与应用研究

基于遗传算法的智能优化设计与应用研究随着科技的飞速发展,智能优化设计在各个领域中的应用越来越广泛。
其中,基于遗传算法的智能优化设计已成为研究的热点。
本文将对基于遗传算法的智能优化设计进行探讨,并分析其在实际应用中的优势。
一、遗传算法的原理及应用遗传算法是通过模拟自然界的进化过程,利用计算机实现优化搜索的方法。
其基本原理为:将问题抽象为一组基因,根据问题的特点设计适应度函数,通过采用遗传算子(交叉、变异、选择)对基因进行迭代,以得到较优的解。
遗传算法的应用非常广泛,如机器学习、数据挖掘、模式识别、控制系统优化、网络优化、电力系统优化等。
在实际应用中,遗传算法通过多参数优化来进行设计,可以最大限度地满足设计要求,提高了设计的效率和准确性。
二、基于遗传算法的智能优化设计方法以汽车设计为例,基于遗传算法的智能优化设计具体步骤如下:(1)确定目标函数根据设计要求确定优化目标函数。
如外观美观度、车身稳定性、燃油经济性、可行驶里程等。
(2)构建初始种群将设计问题抽象为基因表达,并通过初始随机化生成多个个体。
(3)计算适应度利用目标函数计算每个个体的适应度值,判断其是否符合设计要求。
(4)进行选择选择适应度值较高的个体,作为下一代种群的种子。
(5)进行交叉和变异通过交叉和变异操作,生成下一代种群,循环遗传直至最优解的产生。
(6)评估结果对产生的解进行评估,若达到目标要求,则结束迭代。
三、基于遗传算法的智能优化设计的优势与传统的优化设计方法相比,基于遗传算法的智能优化设计具有以下优势:(1)全局搜索能力较强基于遗传算法的智能优化设计可以实现全局搜索,从而寻找问题的全局最优解。
与暴力搜索算法相比,其搜索深度更高,可以跳过局部最优解,得到更优的结果。
(2)适用范围广由于遗传算法适用于各种类型的问题,因此其适用范围非常广。
无论是参数优化、约束优化、多模态优化,都可以采用遗传算法进行求解。
(3)高效稳定遗传算法采用并行计算的方式,能够有效提高计算速度。
人工智能遗传算法论文(2)

人工智能遗传算法论文(2)人工智能遗传算法论文篇二人工智能之遗传算法论文摘要:非线性方程组的求解是数值计算领域中最困难的问题,大多数的数值求解算法例如牛顿法的收敛性和性能特征在很大程度上依赖于初始点。
但是对于很多高维的非线性方程组,选择好的初始点是一件非常困难的事情。
本文采用了遗传算法的思想,提出了一种用于求解非线性方程组的混合遗传算法。
该混合算法充分发挥了遗传算法的群体搜索和全局收敛性。
选择了几个典型非线性方程组,考察它们的最适宜解。
关键词:非线性方程组;混合遗传算法;优化1. 引言遗传算法是一种通用搜索算法,它基于自然选择机制和自然遗传规律来模拟自然界的进化过程,从而演化出解决问题的最优方法。
它将适者生存、结构化但同时又是随机的信息交换以及算法设计人的创造才能结合起来,形成一种独特的搜索算法,把一些解决方案用一定的方式来表示,放在一起成为群体。
每一个方案的优劣程度即为适应性,根据自然界进化“优胜劣汰”的原则,逐步产生它们的后代,使后代具有更强的适应性,这样不断演化下去,就能得到更优解决方案。
随着现代自然科学和技术的发展,以及新学科、新领域的出现,非线性科学在工农业、经济政治、科学研究方面逐渐占有极其重要的位置。
在理论研究和应用实践中,几乎绝大多数的问题都最终能化为方程或方程组,或者说,都离不开方程和方程组的求解。
因此,在非线性问题中尤以非线性方程和非线性方程组的求解最为基本和重要。
传统的解决方法,如简单迭代法、牛顿法、割线法、延拓法、搜索法、梯度法、共轭方向法、变尺度法,无论从算法的选择还是算法本身的构造都与所要解决的问题的特性有很大的关系。
很多情况下,算法中算子的构造及其有效性成为我们解决问题的巨大障碍。
而遗传算法无需过多地考虑问题的具体形式,因为它是一种灵活的自适应算法,尤其在一些非线性方程组没有精确解的时候,遗传算法显得更为有效。
而且,遗传算法是一种高度并行的算法,且算法结构简单,非常便于在计算机上实现。
遗传算法的PID控制器的设计毕业论文

D.H.Ackley等提出了随即迭代遗传爬山法(Stochastic Iterated Genetic Hill-climbing,SIGH)采用了一种复杂的概率选举机制,此机制中由m个“投票者”来共同决定新个体的值(m表示群体的大小)。实验结果表明,SIGH与单点交叉、均匀交叉的神经遗传算法相比,所测试的六个函数中有四个表现出更好的性能,而且总体来讲,SIGH比现存的许多算法在求解速度方面更有竞争力。
随着现代控制理论的建立和不断发展完善,对过程控制提出了新的方法和思路,同时也由于生产工艺不断地改进提高,对过程控制也提出了高要求。科研人员在不断探索新方法的同时,也对传统的PID控制的改进做了大量的研究。因为PID控制有其固有的优点,使得PID控制在今后仍会大量使用,如何进一步提高PID控制算法的能力或者依据新的现代控制理论来设计PID控制算法是一个非常吸引人的课题。科研人员在这一领域做的工作主要有以下两方面。
遗传算法的PID控制器的设计毕业论文
第1章 绪论
1.1 课背景
PID调节器是最早发展起来的控制策略之一,因为它所涉及的设计算法和控制结构都是简单的,并且十分适用于工程应用背景,此外PID控制方案并不要求精确的受控对象的数学模型,且采用PID控制的控制效果一般是比较令人满意的,所以在工业实际应用中,PID调节器是应用最为广泛的一种控制策略,也是历史最久、生命力最强的基本控制方式。调查结果表明在当今使用的控制方式中,PID型占84.5%,优化PID型占6.8%,现代控制型占有1.5%,手动控制型6.6%,人工智能(AI)型占0. 6%。如果把PID型和优化PID型二者加起来则占90%以上,这说明PID控制方式占绝大多数,如果把手动控制型再与上述两种加在一起,则占97. 5%,这说明古典控制占绝大多数。就连科学技术高度发达的日本,PID控制的使用率也高达84.%。这是由于理论分析及实际运行经验已经证明了PID调节器对于相当多的工业过程能够起到较为满足的控制效果。它结构简单、适用面广、鲁棒性强、参数易于调整、在实际中容易被理解和实现、在长期应用中已积累了丰富的经验。特别在工业过程中,由于控制对象的精确数学模型难以建立,系统的参数又经常发生变化,运用现代控制理论分析综合要耗费很大的代价进行模型辨识,但往往不能达到预期的效果,所以不论常规调节仪表还是数字智能仪表都广泛采用这种调节方式。正是由于PID控制算法具有以上多种优点,所以这种算法仍将在现场控制中居于主导地位
遗传算法及其应用浅析论文_本科论文

专业选修课期末考核(论文)遗传算法及其应用浅析学院:专业:班级:学号:学生姓名:指导教师:2015年 6 月 1 日贵州大学贵州大学论文(设计)诚信责任书本人郑重声明:本人所呈交的毕业论文(设计),是在导师的指导下独立进行研究所完成。
毕业论文(设计)中凡引用他人已经发表或未发表的成果、数据、观点等,均已明确注明出处。
特此声明。
论文(设计)作者签名:日期:目录第一章绪论 (4)第二章遗传算法介绍 (5)2.1遗传算法介绍 (5)2.2遗传算法的产生和发展 (5)2.3 遗传算法的基本求解步骤 (6)2.3.1 编码: (6)2.3.2初始化: (6)2.3.3估计适应度: (6)2.3.4再生(选择): (6)2.3.5 交叉: (6)2.3.6 变异: (6)2.3.7 重复: (7)2.4 遗传算法流程图: (7)第三章遗传算法的应用概述 (8)3.1 TSP 问题描述 (8)3.2 遗传算法用于TSP 问题 (9)3.2.1 编码表示 (9)3.2.2 初始化群体和适应度函数及其终止条件的设定 (9)3.2.3 选择算子 (10)3.2.4 交叉算子 (10)3.2.5 变异算子 (11)3.2.6 TSP问题的总结 (11)第四章应用举例 (12)4.1 问题陈述 (12)4.2 详细解答过程 (12)4.2.1 问题分析 (12)4.2.2 实验原理与数学模型 (13)4.2.3 MATLAB求解结果 (15)4.3 求解结果验证与反思 (16)第五章附录 (17)5.1 Matlab程序代码 (17)参考文献 (22)【摘要】:遗传算法(Genetic Algorithm,GA)是近年来迅速发展起来的一种全新的随机搜索与优化算法,是一种借鉴生物界自然选择和进化机制发展起来的高度并行、随机、自适应搜索算法。
它的研究历史比较短,早期是一种试图解释自然系统中生物的复杂适应过程入手,模拟生物进化的机制来构造人工系统的模型。
基于遗传算法的中药药对挖掘系统的设计与实现论文

基于遗传算法的中药药对挖掘系统的设计与实现摘要用数据挖掘技术研究了中药方剂配伍的规律。
主要工作:分析了关联规则存在的问题,引入双向关联规则的概念;介绍了遗传算法的基本原理,研究了遗传算法在数据挖掘中的应用;将方剂库转换为位图矩阵,大大提高搜索效率;开发了一个基于遗传算法的中药药对药组挖掘系统。
论文组织如下:介绍了研究背景和意义;阐述了相关的理论基础;提出了系统的设计方案;详细展示了基于遗传算法的双向关联规则挖掘系统的实现过程,包括位图矩阵的实现,个体的编码方法,适应度函数的设计,规则的提取,选择、交叉、变异等遗传操作的实现等;利用脾胃类方剂库对系统进行了测试,并对测试结果进行了分析。
结果证明:该系统能够快速高效地从方剂库中找出具有重要意义的药对药组,对中医药的研究发展有一定意义。
关键词:数据挖掘;置信度;双向关联规则;遗传算法The Design and Implementation of Chinese Medicine Groups Mining System based on Genetic AlgorithmAbstractThis paper researches the compatibility of chinese medicine prescriptions by data mining techniques. The main contributions include: analyzes the problems in the association rules, and introduces the concept of the bidirectional association rule; presents the foundation principle of genetic algorithm(GA), and studys the application of GA in the data mining; converts chinese medicine prescriptions database to a bitmap matrix, which greatly enhances the efficiency of search; develops a chinese medicine groups mining system based on GA. The paper is organized as follows: Section 1 introduces the background and significance; Section 2 sets forth the basis of the relevant theories; Section 3 proposes the design project of the system; Section 4 detailedly shows the implementation of the system, including the implementation of bitmap matrix, the individual coding method, the design of fitness function, rules of the extraction, genetic operations. Section 5 gives a test of the system on the prescriptions database about spleen and stomach, and analyzes the results. It is proved that this system can find important and significant Chinese Medicine Groups from the prescriptions database, and is meaningful for the research of Chinese medicine.Key words:Data mining; Confidence; Bidirectional association rule; Genetic algorithm目录论文总页数:24页1 引言 (1)1.1 背景 (1)1.2 意义 (1)2 理论基础 (1)2.1 关联规则及存在的问题 (1)2.2 双向关联规则 (2)2.3 遗传算法简介 (3)3 需求分析及设计方案 (4)4 基于遗传算法的双向关联规则挖掘算法具体流程及实现 (6)4.1 位图矩阵实现 (6)4.2 编码 (9)4.3 适应度函数 (11)4.3.1 适应度函数设计 (11)4.3.2 适应度函数的实现 (11)4.4 规则的提取 (14)4.5 遗传操作 (15)4.6 算法流程 (18)5 测试 (18)结论 (21)参考文献 (21)致谢 (23)声明 (24)1引言1.1背景我国作为最大的中药材资源国,有着传统中医药文明的发祥地的地位,但是如今正面临着诸多挑战。
遗传算法的研究与优化

遗传算法的研究与优化遗传算法是一种模仿自然选择和遗传机制的优化算法,它可以用来寻找复杂问题的最优解。
在过去的几十年里,遗传算法一直被广泛应用于各种领域,如优化问题、机器学习、数据分析等。
本文将对遗传算法的研究与优化进行深入探讨,以期为读者提供全面且深入的了解。
遗传算法最早由美国学者John Holland在20世纪60年代提出,它是一种模拟自然选择和遗传机制的优化方法。
遗传算法借鉴了生物学中的进化理论,通过模拟自然界中的遗传、变异、选择等机制来不断寻找最优解。
遗传算法具有良好的自适应性和全局搜索能力,因此被广泛应用于各种领域。
遗传算法的基本原理是通过一系列的操作(交叉、变异、选择)来不断地优化种群中的个体,直至找到最优解为止。
随机生成一组初始解作为种群,然后通过交叉操作来产生新的个体,再通过变异操作来引入一定程度的随机性,最后根据适应度函数的评价来选择优秀的个体。
通过不断的迭代操作,逐步逼近最优解。
在遗传算法的研究中,有很多值得关注的问题。
首先是遗传算法的收敛性能问题,即如何加快算法的收敛速度,降低收敛误差。
其次是算法的稳定性和鲁棒性问题,即在不同的问题领域中,如何提高算法的稳定性和鲁棒性。
还有算法的并行化和分布式处理问题,即如何利用并行计算和分布式处理技术来提高算法的计算效率。
为了解决这些问题,许多学者进行了大量的研究工作。
他们提出了许多改进的遗传算法,如基于多种群的遗传算法、基于自适应权重的遗传算法、基于混合策略的遗传算法等。
这些改进使遗传算法在不同领域中取得了很好的效果,如在工程优化、数据挖掘、智能控制等方面都得到了广泛应用。
遗传算法还可以与其他优化算法相结合,形成混合优化算法。
比如将遗传算法与模拟退火算法、粒子群算法等相结合,可以充分利用各种优化算法的优点,进一步提高算法的优化能力。
对于遗传算法的优化问题,研究者们也提出了许多有效的方法。
以改进遗传算法的交叉和变异算子为例,通过优化交叉和变异算子的参数和策略,可以显著提高算法的搜索能力和收敛速度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于遗传算法研究的容调研设计毕业论文目录摘要 (I)Abstract (II)第一章遗传算法概论 (1)1.1 遗传算法的产生和国外研究现状 (1)1.2 遗传算法的基本原理 (2)1.3遗传算法的特点 (3)1.4遗传算法的应用 (4)1.5课题的任务 (6)第二章基本遗传算法 (7)2.1 基本遗传算法简介 (7)2.2 基本遗传算法描述 (7)2.3 基本遗传算法的实现 (10)第三章遗传算法求解TSP (15)3.1 旅行商问题概述 (15)3.2 使用改进的遗传算法求解TSP (16)第四章求解TSP的实验结果及分析 (26)4.1实验环境 (26)4.2算法在求解不同规模下的TSP的实验结果 (26)4.3改良的遗传算法和其它智能优化算法的比较 (27)4.4使用单一变异算子和混合变异算子的实验结果对比分析 (28)第五章总结 (30)参考文献 (32)附录1 改良遗传算法求解TSP Java源程序 (33)附录2 英文文献翻译 (50)致谢 (56)第一章遗传算法概论1.1 遗传算法的产生和国外研究现状遗传算法(Genetic Algorithm简称GA)美国的J. Holland教授于1975年在他的专著《自然界和人工系统的适应性》中首先提出的,它是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法[1]。
遗传算法模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都保留一组候选解,并按某种指标从解群中选取较优的个体(优胜劣汰),利用遗传算子(选择、交叉和变异)对这些个体进行组合,产生新一代的候选解群,重复此过程,直到满足某种收敛指标为止。
最后一代候选解群中的最优解就是所求得的最优解。
1991年D.Whitey在他的论文中提出了基于领域交叉的交叉算子(Adjacency based crossover),这个算子是特别针对用序号表示基因的个体的交叉,并将其应用到了(旅行商)TSP问题中,通过实验对其进行了验证。
D.H.Ackley等提出了随机迭代遗传爬山法(Stochastic Iterated Genetic Hill-climbing,SIGH)采用了一种复杂的概率选举机制,此机制中由m个“投票者”来共同决定新个体的值(m表示群体的大小)。
实验结果表明,SIGH与单点交叉、均匀交叉的神经遗传算法相比,所测试的六个函数中有四个表现出更好的性能,而且总体来讲,SIGH比现存的许多算法在求解速度方面更有竞争力[2]。
H.Bersini和G.Seront将遗传算法与单一方法(simplex method)结合起来,形成了一种叫单一操作的多亲交叉算子(simplex crossover),该算子在根据两个母体以及一个额外的个体产生新个体,事实上他的交叉结果与对三个个体用选举交叉产生的结果一致。
同时,文献还将三者交叉算子与点交叉、均匀交叉做了比较,结果表明,三者交叉算子比其余两个有更好的性能。
国也有不少的专家和学者对遗传算法的交叉算子进行改进。
2002年,戴晓明等应用多种群遗传并行进化的思想,对不同种群基于不同的遗传策略,如变异概率,不同的变异算子等来搜索变量空间,并利用种群间迁移算子来进行遗传信息交流,以解决经典遗传算法的收敛到局部最优值问题2004年,宏立等针对简单遗传算法在较大规模组合优化问题上搜索效率不高的现象,提出了一种用基因块编码的并行遗传算法(Building-block Coded Parallel GA,BCPGA)。
该方法以粗粒度并行遗传算法为基本框架,在染色体群体中识别出可能的基因块,然后用基因块作为新的基因单位对染色体重新编码,产生长度较短的染色体,在用重新编码的染色体群体作为下一轮以相同方式演化的初始群体。
2005年,江雷等针对并行遗传算法求解TSP,探讨了使用弹性策略来维持群体的多样性,使得算法跨过局部收敛的障碍,向全局最优解方向进化。
1.2 遗传算法的基本原理1.2.1遗传算法的基本术语由于遗传算法的研究与应用尚在不断发展之中,有关术语的运用尚未完全取得统一。
为了在下面的研究中做到准确、清晰、规的描述,对本文使用到的遗传算法术语解释如下[3]:个体(individual):遗传算法中处理的基本对象、数据结构,对应于自然遗传学中的生物个体。
种群( population):个体的集合,对应于自然遗传学中的生物种群。
种群大小( population size):种群中个体数目称为种群大小。
位串( bit string):也叫染色体(chromosome),个体特征的表现形式,对应于自然遗传学中的染色体。
基因( gene):位串中的元素,表示不同的特征,对应于生物学中的遗传物质单位,以DNA序列形式把遗传信息译成编码。
基因位( locus):某一基因在位串(染色体)中的位置适应度(fitness):某一个体对于环境的适应程度,或者在环境压力下的生存能力,取决于遗传特性。
适应度函数(fitness function):为了体现染色体的适应能力,引入了对问题中的每一个染色体都能进行度量的函数,叫适应度函数,适应度函数是计算个体在种群中被使用的概率。
遗传操作(genetic operator):遗传算法中有三种关于染色体的运算:选择、交叉和变异,这三种运算被称为遗传操作。
选择(selection)操作:选择(selection)操作是模拟生物界优胜劣汰的自然选择法则,从种群中选择适应度较好(较好可能是高于种群的平均适应度也可能是低于种群的平均适应度,取决于要解决的问题和使用什么作为适应度)的个体来生成下一代种群进行交叉变异。
交叉(crossover)操作:交叉就是互换两个染色体某些位上的基因以产生新的个体,普通遗传算法中常用的交叉算子有单切点交叉、双切点交叉、循环交叉。
变异(mutation)操作:位串中的基因发生变化,发生在同一个个体之,常见的变异有交换(两个基因交换位置)、倒序(位串上的某一段基因位置反转)、插入(位串上的某一个基因被插入到位串中的其它位置)。
交叉率:发生交叉运算的个体个数占全体个体总数的比例,取值围一般为0.4~0.99。
变异率:发生变异的基因位数所占全体个体的基因总位数的比例,取值围一般为0.0001~0.1。
1.2.2遗传算法的基本原理遗传算法是一类借鉴生物界自然选择和自然遗传机制的随机化搜索算法。
在遗传算法中问题的解被表示成“染色体”,在算法中也即是以二进制编码或实数编码的串[4]。
并且,在执行遗传算法之前,随机给出一群“染色体”,也即是假设解。
然后,把这些假设解置于问题的“环境”中,设定相应的适应度函数,并按适者生存的原则,从中选择出较适应环境的“染色体”进行复制,再通过交叉,变异过程产生更适应环境的新一代“染色体”群。
这样,一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,得到问题的最优解或者近似最优解。
1.3遗传算法的特点1、遗传算法的处理对象不是参数(优化问题的参变量)本身,而是对参数集进行了编码的个体。
这种编码操作,使得遗传算法可直接对结构对象进行操作(所谓结构对象泛指集合、序列、矩阵、树、图、链和表等各种一维或高维结构形式)。
这一特点使得遗传算法具有广泛的应用领域,例如:通过对连接矩阵的操作,遗传算法可用来对神经网络或自动机的结构或参数加以优化。
通过对集合的操作,遗传算法可实现对规则集合或知识库的精练而达到高质量的机器学习目的[5]。
通过对树结构的操作,遗传算法可得到用于分类的最佳结构树。
通过对任务序列的操作,遗传算法可用于任务规划,而通过对操作序列的处理,遗传算法可自动构造顺序控制系统。
2、遗传算法的基本作用对象是多个可行解的集合,而非单个可行解。
它是采用同时处理群体中多个个体的方法,即同时对搜索空间中的多个解进行评估。
这一特点使遗传算法具有较好的全局搜索性能,减少了陷于局部优解的可能性。
同时这又使得遗传算法本身具有良好的并行性。
3、遗传算法仅用适应度函数值来评估个体,而无须搜索空间的知识或其它辅助信息。
遗传算法的适应度函数不仅不受连续可微的约束,而且其定义域可以任意设定。
对适应度函数的唯一要求是,对于输入可计算出能够进行比较的输出。
遗传算法的这一特点使它的应用围极大拓宽,使之可广泛应用于目标函数不可微、不连续、非规划、极其复杂或无解析表达式等类优化问题。
4、遗传算法不是采用确定性规则,而是采用概率的变迁规则来指导它的搜索方向。
遗传算法执行选择、交叉、变异等类似生物进化过程的简单随机操作,具有极强的鲁棒性。
需要指出,遗传算法采用概率仅仅是作为一种工具来引导其搜索过程朝着搜索空间的更优的解的区域移动。
因此尽管看起来它是一种盲目的搜索方法,但实际上有明确的搜索方向。
1.4遗传算法的应用遗传算法由于具有鲁棒性强,实现简单,对问题依赖性小等优点,为求解复杂系统优化问题提供了通用框架,下面是一些主要应用领域:(1)函数优化:是GA的经典应用领域,也是对GA进行性能评价的常用算例,对于一些非线性、多模型、多目标的函数优化问题,用其他优化方法较难求解,GA却可以得到较好的结果。
(2)组合优化[6]:随问题规模的扩大,搜索空间急剧扩大,对这类复杂问题,实践证明,GA对于组合优化的NP完全问题非常有效。
例如求解TSP。
(3)生产调度问题:GA已成为解决复杂调度问题的有效工具,在单件生产车间调度、流水线生产车间调度、生产规模、人物分配等方面都得到了有效的应用。
(4)自动控制:GA在自动控制领域中的应用日益增加,并显示了良好的效果。
如在参数辨识、人工神经网络的结构优化设计和权值学习,都显示了GA的应用优势。
(5)机器人智能控制:GA是源自于对人工自适应系统的研究,已经在移动机器人路径规划、关节机器人运动轨迹规律、机器人逆运动学求解、细胞机器人的结构优化和行动协调等方面得到研究和应用。
(6)图像处理和模式识别:在图像处理过程中,如扫描、特征提取、图像分割等不可避免的会产生一些误差。
目前,GA已在图像恢复、图像边缘特征提取、几何形状识别等方面得到了应用。
(7)人工生命[7]:基于GA的进化模型是研究人工生命现象的重要理论基础,已在其进化模型、学习模型、行为模型等方面得到应用。
(8)遗传程序设计:Koza发展了遗传程序设计,基本思想是:采用树型结构表示计算机程序,运用遗传算法的思想,通过自动生成计算机程序来解决问题。
虽然该理论尚未成熟,应用也有些限制,但已成功地应用于人工智能、机器学习等领域。
(9)机器学习:基于GA的机器学习、特别分类器系统,在调整人工神经网络的连接权、神经网络结构的优化设计、和多机器人路径规划系统中得到了成功的应用。
(10)生物信息学:多重序列比对是生物信息学的重要研究容,它的目标是通过同时比较多个序列,发现它们之间的相似区域和保守性位点, 进而推断未知生物分子的结构和功能,或者重构系统发育树,寻找物种之间的进化关系[8]。