java课程设计报告..docx
文本预览下载声明
河南理工大学计算机科学与技术学院课程设计报告2015— 2016学年第一学期课程名称 Java基础入门设计题目PSO算法解决TSP问题姓名陈玲娇学号 321509010111 专业班级计算机(本)1501 指导教师刘志中2016年 1月6日目录一.课程设计内容2(一)课程设计题目2(二)课程设计目的2(三)课程设计要求2二.算法相关知识3(一)PSO算法简介3(二)基本PSO算法3(三)PSO算法的粒子公式3三.算法的JAVA实现4(一)程序设计代码4(二)运行结果15四.课程设计的总结体会16五.参考文献17一.课程设计内容(一)课程设计题目应用PSO算法求解 TSP问题;TSP问题旅行商问题,即TSP问题(Travelling Salesman Problem)又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。 (二)课程设计目的1.训练应用算法求解实际问题;2训练应用Java语言实现具体问题的求解算法;3.到达理解java语言的应用特点以及熟练应用java语言的目标。(三)课程设计要求1.读懂算法,理解算法计算过程中每一步操作是如何实现的;2.设计函数优化的编码格式;3.采用java 语言编程实现算法的求解过程;4.掌握PSO算法的基本原理 ,了解在JAVA 环境中实现PSO算法的方程方法。并以此例说明所编程序在函数全局寻优中的应用。二.算法相关知识(一)pso算法简介粒子群算法,也称粒子群优化算法(Particle Swarm Optimization),缩写为 PSO,是近年来发展起来的一种新的进化算法(Evolutionary Algorithm - EA)。 PSO 算法属于进化算法的一种,和模拟退火算法相似,它也是从随机解出发,通过迭代寻找最优解,它也是通过适应度来评价解的品质。这种算法以其实现容易、精度高、收敛快等优点引起了学术界的重视,并且在解决实际问题中展示了其优越性。粒子群算法是一种并行算法。 (二) 基本PSO算法粒子群算法简称PSO,它的基本思想是模拟鸟群的捕食行为。设想这样一个场景:一群鸟在随机搜索食物。在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢。最简单有效的就是搜寻目前离食物最近的鸟的周围区域。PSO从这种模型中得到启示并用于解决优化问题。PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitness value),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。PSO 初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己。第一个就是粒子本身所找到的最优解,这个解叫做个体极值pBest。另一个极值是整个种群目前找到的最优解,这个极值是全局极值gBest。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。(三)PSO算法的粒子公式:在找到这两个最优值时,粒子根据如下的公式来更新自己的速度和新的位置:v[i] = w * v[i] + c1 * rand() * (pbest[i] - present[i]) + c2 * rand() * (gbest - present[i]) present[i] = present[i] + v[i] 其中v[i]代表第i个粒子的速度,w代表惯性权值,c1和c2表示学习参数,rand()表示在0-1之间的随机数,pbest[i]代表第i个粒子搜索到的最优值,gbest代表整个集群搜索到的最优值,present[i]代表第i个粒子的当前位置。三.算法的JAVA实现程序设计代码如下:package TSP;importjava.io.BufferedReader;importjava.io.IOException;import java.io.FileInputStream;importjava.io.InputStreamReader;importjava.util.ArrayList;importjava.util.Random;public class PSO {privateintbestNum; private float w; private int MAX_GEN;// 迭代次数 private int scale;/
显示全部