设置n个城市。每个走过一遍回到原点
#include<iostream>
#include<cmath>
#include<time.h>
using namespace std;
double T0 = 280;//初始温度
double a = 0.92;//温度衰减系数
int N = 10;//城市数n10
int city_list[10] = {1,2,3,4,5,6,7,8,9,10};//存放解路径
int Lk = 1000;//每个温度下固定迭代次数
int city[10][2] =
{
{1,2},{22,10},{13,13},{12,12},{1,9},{3,5},{10,15},{18,10},{2,10},{4,20}
};//城市坐标
double distance(int* c1, int* c2)//计算两个城市的距离
{
double dis = 0;//初始化距离
double x1 = *c1;
double x2 = *c2;
double y1 = *(c1 + 1);
double y2 = *(c2 + 1);
dis = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
return dis;
}
double path_len(int* city_list)
{
double len = 0;
for (int i = 0; i < N - 1; i++)
{
int c1 = *(city_list+i);
int c2 = *(city_list + i + 1);
double dis = distance(city[c1-1], city[c2-1]);//减1是因为city_list是从1到10
len += dis;
}
int index = *cit