全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/* * 使用模拟退火算法(SA)求解TSP问题(以中国TSP问题为例) * 参考自Matlab 智能算法30个案例分析 * 模拟退火的原理这里略去,可以参考上书或者相关论文 * update: 16/12/11 * author:lyrichu * email:919987476 */#include#include#include#include#include#define T0 50000.0 / 初始温度#define T_end (1e-8)#define q 0.98 / 退火系数#define L 1000 / 每个温度时的迭代次数,即链长#define N 27 / 城市数量int city_listN; / 用于存放一个解double city_posN2 = 41,94,37,84,53,67,25,62,7,64,2,99,68,58,71,44,54,62, 83,69,64,60,18,54,22,60,83,46,91,38,25,38,24,42,58,69,71,71,74,78,87,76, 18,40,13,40,82,7,62,32,58,35,45,21; / 中国27个城市坐标/41 94;37 84;53 67;25 62;7 64;2 99;68 58;71 44;54 62;83 69;64 60;18 54;22 60;/83 46;91 38;25 38;24 42;58 69;71 71;74 78;87 76;18 40;13 40;82 7;62 32;58 35;45 21/函数声明double distance(double *,double *); / 计算两个城市距离double path_len(int *); / 计算路径长度void init(); /初始化函数void create_new(); / 产生新解/ 距离函数double distance(double * city1,double * city2) double x1 = *city1; double y1 = *(city1+1); double x2 = *(city2); double y2 = *(city2+1); double dis = sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2); return dis;/ 计算路径长度double path_len(int * arr) double path = 0; / 初始化路径长度 int index = *arr; / 定位到第一个数字(城市序号) for(int i=0;iN-1;i+) int index1 = *(arr+i); int index2 = *(arr+i+1); double dis = distance(city_posindex1-1,city_posindex2-1); path += dis; int last_index = *(arr+N-1); / 最后一个城市序号 int first_index = *arr; / 第一个城市序号 double last_dis = distance(city_poslast_index-1,city_posfirst_index-1); path = path + last_dis; return path; / 返回总的路径长度/ 初始化函数void init() for(int i=0;i T_end) / 当温度低于结束温度时,退火结束 for(int i=0;i= 0) r = (double)rand()/(RAND_MAX); if(exp(-df/T) = r) / 保留原来的解 memcpy(city_list,city_list_copy,N*sizeof(int); T *= q; / 降温 count+; finish = clock(); / 退火过程结束 double duration = (double)(finish-start)/CLOCKS_PER_SEC; / 计算时间 printf(采用模拟退火算法,初始温度T0=%.2f,降温系数q=%.2f,每个温度迭代%d次,共降温%d次,得到的TSP最优路径为:n,T0,q,L,count); for(int i=0;i,city_listi); printf(%dn,city_listN-1); double len
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 打工人招聘测试题及答案
- 餐具的租赁协议书
- 公共贴地砖协议书
- 公积金买房协议书
- 铁路与企业协议书
- 共同建围墙协议书
- 关于付钱的协议书
- 关于美化的协议书
- 车友俱乐部协议书
- 农业数字化技术员安全知识竞赛知识考核试卷含答案
- 连接器设计手册要点
- 药品注册审评CDE组织机构人员信息
- 《危险品航空运输培训》课件04危险品的分类
- 《基础生态学(第3版)》课件第九章 生态系统的能量流动
- 营口水土保持规划
- 鲁迅《故乡》优秀PPT课件.ppt
- 鲁迅《雪》ppt课件
- 体育新课标测试题——附答案
- 关于奥氏体不锈钢磁性的说明
- 铁总计统【2017】177号关于进一步加强铁路建设项目征地拆迁工作和费用管理的指导意见
- 保卫黄河曲谱
评论
0/150
提交评论