Simulated Annealing(模拟退火算法)

 

/*
Simulated Annealing(模拟退火算法)
求解旅行商问题(TSP)
网上给的数据是31个省会的坐标,蚁群算法得到的结果是:15378
我算的结果中,最好的一次是:15495
*/
#include<iostream>
#include<cstdio>
#include<cstdlib>
//#include<ctime>
#include<cmath>
#include<time.h>
#define N 31       //城市个数
#define Tmax 8000  //初始温度
#define Tmin 1E-10 //终止温度
#define RATE 0.95  //温度衰减率
#define in_loop 13000 //内层循环次数
#define out_loop 2000 //外层循环次数
#define p_limit 10000 //概率选择次数using namespace std;//31个省会x和y的坐标
double x[N]={1304,3639,4177,3712,3488,3326,3238,4196,4312,4386,3007,2562,2788,2381,1332,3715,3918,4061,3780,3676,4029,4263,3429,3507,3394,3439,2935,3140,2545,2778,2370};
double y[N]={2312,1315,2244,1399,1535,1556,1229,1004,790,570,1970,1756,1491,1676,695,1678,2179,2370,2212,2578,2838,2931,1908,2367,2643,3201,3240,3550,2357,2826,2975};//两个城市之间的距离
double d[N][N];void init(){//初始化任意两个城市的距离for(int i=0;i<N;i++)for(int j=0;j<i;j++){d[i][j]=d[j][i]=sqrt((y[j]-y[i])*(y[j]-y[i])+(x[j]-x[i])*(x[j]-x[i]));}for(int i=0;i<N;i++)d[i][i]=0;srand((unsigned)time(0));
}//路径
class path{
public:path(){}~path(){}int city[N];    //依次经过的城市编号double dis;     //总的距离void totalLen(){dis=0;for(int i=0;i<N-1;i++)dis+=d[city[i]][city[i+1]];dis+=d[city[0]][city[N-1]];}
};//最优解
path bestpath;//产生新路径
path newpath(path prepath){path newp = prepath;int x,y,t;do{x=rand()%N;y=rand()%N;}while(x==y);t=newp.city[x];newp.city[x]=newp.city[y];newp.city[y]=t;newp.totalLen();return newp;
}//Annealing
void Anne()
{init();//随机选一个初始解for(int i=0;i<N;i++)bestpath.city[i]=i;bestpath.totalLen();int out_t=0,p_t=0;double T=Tmax,delta,prob, rnd;path np,cp; //新路径,当前路径cp=bestpath;while(out_t<out_loop&&T>Tmin){for(int i=0;i<in_loop;i++){np=newpath(cp);if(np.dis<cp.dis){cp=np;out_t=0;p_t=0;}else{delta=np.dis-cp.dis;prob=exp(-delta/T);rnd=rand()%10000/10000.0;if(prob>rnd)cp=np;p_t++;}if(p_t>p_limit){out_t++;break;}}if(cp.dis<bestpath.dis)bestpath=cp;T*=RATE;printf("dis= %f\n",bestpath.dis);}
}int main()
{Anne();return 0;
}

 

转载于:https://www.cnblogs.com/littlehoom/p/3612306.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++远征之继承篇——隐藏,isa,虚析构函数

一、隐藏 父子关系。成员&#xff08;数据成员或者成员函数&#xff09;同名&#xff1b;此时子类中会隐藏父类中的同名成员。无法函数重载&#xff0c;只会隐藏&#xff01;如果想访问父类中的同名成员&#xff0c;需要 :: 操作。 访问父类同名函数的方法 二、is-a &#xff…

表单元素对齐问题解决方案

之前一直困扰自己的一个问题就是表单内radio、select等的对齐问题&#xff0c;一直以来&#xff0c;都是给提示添加label&#xff0c;然后跟radio等一起浮动&#xff0c;然后再设置margin解决的&#xff0c;但是这样又得另外解决IE6下的双边距问题&#xff0c;搞得自己相当恼。…

(转)动态Entity Framework查询:Dynamic Query 介绍

原文地址&#xff1a;http://www.cnblogs.com/yinzixin/archive/2012/11/30/entity-framework-dynamic-query.html Dynamic Query是一个支持动态Entity Framework查询的库。它的设计初衷是为了减少在管理系统中大量出现的对一个数据集进行查找、排序、分页的这类场景的开发工作…

c++远征之继承篇——多重继承,多继承,虚继承,多继承时的重复定义解决方法

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 1、多重继承 &#xff08;1&#xff09;概念理解 2、多继承 &#xff08;1&#xff09;概念理解 3、虚继承 &#xff08;1&#xff09;问题的引出&#xff1a;多重继承和多继承的结合&#xff0c…

从Pycharm说起

说实话.作为一个Coder.每天在各种IDE中切换编写Code.如果一个IDE Look and Feel总是无形中影响你每天Code Farm的心情.那该是多么不爽的事情.特别是针对本人对IDE总是有一种天生“洁癖感”.每当一们语言或技术在无意中吸引我.或是已经在粗糙的本文编辑器初体验.都会在两到三天体…

JAVA开发工具下载

一、eclipse下载 下载地址&#xff1a;http://www.eclipse.org/downloads/packages/ 点击下载 弹出下载框 压缩包解压后就可以使用 转载于:https://www.cnblogs.com/djlsunshine/p/11373287.html

c++远征之多态篇——虚函数及其实现原理

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 1、多态的定义 简单理解&#xff0c;就是对于同一条命令&#xff0c;不同对象会做出不同的操作。相同对象收到不同消息&#xff0c;或者不同对象收到相同消息时&#xff0c;产生不同的动作。 2、多态…

c++远征之多态篇——纯虚函数和抽象类、接口类

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 1、纯虚函数 没有函数体&#xff1b;0&#xff1b;即只有函数声明&#xff0c;而没有函数定义的虚函数&#xff0c;是纯虚函数。 2、抽象类 概念&#xff1a;含有纯虚函数的类&#xff0c;叫抽象类…

W3 Total Cache+Hacklog Remote Attachment Upyun

2019独角兽企业重金招聘Python工程师标准>>> Hacklog Remote Attachment Upyun 是「荒野无灯」开发的WP插件&#xff0c;可以很方便的配合又拍云使用。通过这个插件&#xff0c;可以在添加媒体的时候上传至又拍云&#xff0c;对速度有极大的提升。 另外&#xff0c;…

VS2013崩溃,无法打开项目的解决方案

最近遇到VS2013&#xff0c;在打开解决方案时&#xff0c;报如下错误&#xff1a; “未找到与约束 ContractName Microsoft.Internal.VisualStudio.PlatformUI.ISolutionAttachedCollectionServiceRequiredTypeIdentity Microsoft.Internal.VisualStudio.PlatformUI.ISolutionA…

c++远征之多态篇——运行时类型识别(RTTI)

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 1、RTTI&#xff08;Run-Time Type Information&#xff09;&#xff0c;运行时类型识别。 涉及typeid、dynamic_cast这两个知识点。RTTI技术可以通过父类指针&#xff0c;识别其所指向对象的真实数…

用c#写的一个局域网聊天客户端 类似小飞鸽

最后在公司实习&#xff0c;新人不给活干&#xff0c;就自己随便看看&#xff0c;了解一些DevExpress控件啊&#xff0c;编码规范啊之类的&#xff0c;自己就寻思着写一点点小东西练习练习 出于自己对c# socket这块不熟&#xff0c;就选择了这块&#xff0c;顺便可以进一步了解…

c++远征之多态篇——异常处理

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 1、关于异常的一些概念 异常&#xff1a;程序运行期出现的错误。 数组下标越界&#xff1b;除数为0&#xff1b;内存不足&#xff1b;…… 异常处理&#xff1a;对有可能发生异常的地方做出预见性的…

图像传感器之CMOS(2)

转&#xff1a;http://www.elecfans.com/application/Military_avionics/2013/0531/319531.html 提高宇航级图像传感器生产能力 日前&#xff0c;在能量效率方面不断创新的安森美半导体公司已同斯坦福国际研究院&#xff08;SRI&#xff09;和波尔航天科技公司合作&#xff0c;…

c++远征之模板篇——友元函数、友元类

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 一、友元函数 1、分类 全局函数——》友元全局函数 成员函数——》友元成员函数 2、关键字friend 友元全局函数 如下&#xff0c;利用friend修饰的函数&#xff0c;其参数应该是本类的引用或者指…

PHP通过session判断防止表单重复提交实例

PHP通过session判断防止表单重复提交实例 PHP通过session判断防止表单重复提交实例&#xff0c;当用户提交表单后&#xff0c;为防止重复操作&#xff0c;通过session来判断是否为初次提交&#xff0c;否则让他返回到之前表单页面。 当前表单页面is_submit设为0 1 SESSION_STAR…

c++远征之模板篇——静态数据成员,静态成员函数

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 1、静态数据成员 &#xff08;1&#xff09;不同于普通的数据成员&#xff0c;静态数据成员在没有实例化时&#xff0c;它也是存在的&#xff08;即它是和类共存的&#xff09;&#xff1b; &…

c++远征之模板篇——运算符重载

以下内容源于慕课网的学习整理&#xff0c;如有侵权&#xff0c;请告知删除。 一、运算符重载的概念 给原有的运算符赋予新的功能。比如下面的截图&#xff0c;本来加号并不具备坐标的相加的功能&#xff0c;但是通过运算符重载可以实现该功能。 二、运算符重载的本质 本质是…

frp对http协议应用

前言 frp是一个开源的项目, 可用于内网穿透的高性能的反向代理应用&#xff0c;支持 tcp, udp 协议&#xff0c;为 http 和 https 应用协议提供了额外的能力&#xff0c;且尝试性支持了点对点穿透。 github地址&#xff1a;https://github.com/fatedier/frp 此处对http的应用做…

树形列(无限级联下拉列的曲线版本)

先上效果图&#xff1a; 1、列表 - 列表设置 - 创建栏&#xff0c;“类型”选择“托管元数据”&#xff0c;如下图&#xff1a; 2、选中“托管元数据”后&#xff0c;可以到下面编辑需要的树形啦&#xff1a; 3、编辑好&#xff0c;确定&#xff0c;搞定&#xff1b;可以到列表…