预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

--智能计算实验报告学院:班级:学号:姓名:成绩:日期:----实验名称:基于蚁群优化算法的TSP问题求解题目要求:利用蚁群优化算法对给定的TSP问题进行求解,求出一条最短路径。蚁群优化算法简介:蚁群算法是一中求解复杂优化问题的启发式算法,该方法通过模拟蚁群对“信息素”的控制和利用进行搜索食物的过程,达到求解最优结果的目的。它具有智能搜索、全局优化、稳健性强、易于其它方法结合等优点,适应于解决组合优化问题,包括运输路径优化问题。TSP数据文件格式分析:本次课程设计采用的TSP文件是att48.tsp,文件是由48组城市坐标构成的,文件共分成三列,第一列为城市编号,第二列为城市横坐标,第三列为城市纵坐标。数据结构如下所示:城市编号城市横坐标城市纵坐标实验操作过程:1、TSP文件的读取:classchengshi{intno;doublex;doubley;chengshi(intno,doublex,doubley){this.no=no;this.x=x;this.y=y;}privatedoublegetDistance(chengshichengshi){returnsqrt(pow((x-chengshi.x),2)+pow((y-chengshi.y),2));}}try{//定义HashMap保存读取的坐标信息----HashMap<Integer,chengshi>map=newHashMap<Integer,chengshi>();//读取文件BufferedReaderreader=newBufferedReader(new(new)));for(Stringstr=reader.readLine();str!=null;str=reader.readLine()){//将读到的信息保存入HashMapif(str.matches("([0-9]+)(\\s*)([0-9]+)(.?)([0-9]*)(\\s*)([0-9]+)(.?)([0-9]*)")){String[]data=str.split("(\\s+)");chengshichengshi=newchengshi(Integer.parseInt(data[0]),Double.parseDouble(data[1]),Double.parseDouble(data[2]));map.put(chengshi.no,chengshi);}}//分配距离矩阵存储空间distance=newdouble[map.size()+1][map.size()+1];//分配距离倒数矩阵存储空间heuristic=newdouble[map.size()+1][map.size()+1];//分配信息素矩阵存储空间pheromone=newdoubl[emap.size()+1][map.size()+1];for(inti=1;i<map.size()+1;i++){for(intj=1;j<map.size()+1;j++){//计算城市间的距离,并存入距离矩阵distance[i][j]=map.get(i).getDistance(map.get(j));//计算距离倒数,并存入距离倒数矩阵heuristic[i][j]=1/distance[i][j];//初始化信息素矩阵pheromone[i][j]=1;}}}catch(Exceptionexception){System.out.println("初始化数据失败!");}}2、TSP作图处理:privatevoidevaporatePheromone(){for(inti=1;i<pheromone.length;i++)----for(intj=1;j<pheromone.length;j++){pheromone[i][j]*=1-rate;}}3、关键源代码(带简单的注释):蚂蚁类代码:classmayi{//已访问城市列表privateboolean[]visited;//访问顺序表privateint[]tour;//已访问城市的个数privateintn;//总的距离privatedoubletotal;mayi(){//给访问顺序表分配空间tour=newint[distance.length+1];//已存入城市数量为n,刚开始为0n=0;//将起始城市1,放入访问结点顺序表第一项tour[++n]=1;//给已访问城市结点分配空间visited=newboolean[distance.length];//第一个城市为出发城市,设置为已访问visited[tour[n]]=true;}privateintchoosechengshi(){//用来random的随机数doub