西北工业大学算法设计实验三

西北工业大学算法设计实验三

ID:47521813

大小:21.05 KB

页数:7页

时间:2020-01-12

西北工业大学算法设计实验三_第1页
西北工业大学算法设计实验三_第2页
西北工业大学算法设计实验三_第3页
西北工业大学算法设计实验三_第4页
西北工业大学算法设计实验三_第5页
资源描述:

《西北工业大学算法设计实验三》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验三:遗传算法VS回溯法一、问题分析回溯法可以处理货郎担问题,遗传算法也可以处理货郎担问题,回溯法和遗传算法哪个算法处理货郎担问题效率更高呢?在相同计算时间内,哪个算法得到的解更好呢?实现遗传算法,通过随机产生10个不同规模的算例(城市数量分别为10,20,40,80,100,120,160,180,200,500,或者其它规模),比较上次实验实现的回溯法和遗传算法。二、算法基本思想1、回溯法从初始状态出发,搜索其所能到达的所有“状态”,当一条路走到尽头,再后退一步或若干步,从另外一种状态出发,

2、继续搜索,直到所有的路径都搜索过。这种不断前进、不断回溯寻找解的方法叫回溯法。回溯法通常将问题解空间组织成“树”结构,采用系统的方法搜索解空间树,从而得到问题解。搜索策略:深度优先为主,也可以采用广度优先、函数优先、广度深度结合等。避免无效搜索策略:约束函数:在扩展结点处剪去不满足约束条件的子树界限函数:在扩展结点处剪去得不到最优解的子树2、遗传算法首先针对遗传算法要有种群,个体,适应度函数,选择,交叉,变异。对于种群是由若干个个体组成,其中个体的编码可以用走过的每一个城市的路径表示。适应度函数用

3、一个路径的代价的倒数表示。使用轮盘赌的方式进行选择下一代个体。其中轮盘赌的方式可以转换为每一个个体的适应度与种群的适应度的比例进行比较。先随机选择两个个体,根据交叉的概率进行单点交叉,将较优的交叉结果保留下来。接着在种群中选择一个个体,根据变异概率来判断是否变异,将该个体保留,根据生成的子代的个数重复上述的运算。根据指定的代数,重复上述的运算。三、算法设计1、回溯法TSP问题的目的是得到一条路径,即一个解向量(X1,X2...Xn),为排列树问题。对所有城市进行编号后,按大小顺序存储于数组path

4、中,构造一个交换函数swap();对数组path进行遍历,判断当前城市与目标城市是否连通,若连通,通过swap函数对当前节点和目标城市进行交换,即树的节点拓展。若不连通则恢复,并进入下一次的循环,循环到叶子节点时,判断叶是否与初始节点相连,并计算代价cost是否小于当前最小代价bestc,若小于,则更新bestc,再返回上一节点,知道遍历完树中的所有节点。核心代码:publicvoidbacktrack(intdepth){//depth深度if(depth==size){if(map[path[

5、depth-1]][path[depth]]!=-1&&map[path[depth]][path[1]]!=-1&&cost+map[path[depth]][path[1]]

6、){if(map[path[depth]][path[j]]!=-1){swap(path,depth+1,j);cost+=map[path[depth]][path[depth+1]];//System.out.println(Arrays.toString(x)+":"+cost);backtrack(depth+1);cost-=map[path[depth]][path[depth+1]];swap(path,depth+1,j);}}}}2、遗传算法先设计个体,个体里面用城市的邻接矩阵

7、map[][]表示,当前路径path[],当前路径的代价cost,适应度值。主要方法有随机初始化当前路径,计算路径代价,适应度值的求解。针对旅行商的问题,设计初始化种群,生成下一代种群,生成下一代种群包含选择,交叉,变异的方法。在交叉的结果会产生同一个城市重复两次,所以需要一个修复方法。核心代码:publicvoidsolve(){inti;intk;//初始化种群initGroup();//计算初始化种群适应度,Fitness[max]for(k=0;k

8、]=evaluate(oldPopulation[k]);//System.out.println(fitness[k]);}//计算初始化种群中各个个体的累积概率,Pi[max]countRate();System.out.println("初始种群...");for(k=0;k

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。