旅行家问题:
旅行商问题(Travelling Salesman Problem, 简记TSP,亦称货郎担问题):设有n个城市和距离矩阵D=[dij],其中dij表示城市i到城市j的距离,i,j=1,2 … n,则问题是要找出遍访每个城市恰好一次的一条回路并使其路径长度为最短。
计算智能课的一次作业,要求使用模拟退火算法去进行旅行家问题的求解,主要参数有三个,t,l,rate
退火算法最特殊的地方在于其在过程中对比较差的结果也有选择的可能性,扩大了搜索解的范围,关于退火算法的具体描述可以百度。
代码如下(没有进行进一步的优化 有些地方不够好 重要的模拟退火的思路)
代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#include <math.h>
#define NUM 5
using namespace std;
int D[5][5]=
{
{
0,15,13,27,36},
{
15,0,18,177,66},
{
13,18,0,77,36},
{
27,177,77,0,76},
{
36,66,36,76,0}
};
int* Plist=(int *)malloc(5*sizeof(int));
int t,L