資源簡介
本資源包括“基于模擬退火算法解決TSP問題”的相關代碼以及TSP的城市數據。

代碼片段和文件信息
#include?
#include??
#include?
#include?
#include?
#include? //?本文用于輸出對齊
#include?
#include?
#include?“SA.h“
using?namespace?std;
//?城市數據格式轉化
void?CityDataTranslate(){
ifstream?read_in;
read_in.open(“L:\\Coding\\TSP_SA模擬退火算法\\TSP_SA模擬退火算法\\ch150.txt“); //?待轉換數據
if?(!read_in.is_open())
{
cout<<“文件讀取失敗.“< return;
}
ofstream?fout(“L:\\Coding\\TSP_SA模擬退火算法\\TSP_SA模擬退火算法\\city_150.txt“); //?轉換后的數據存入文檔?city_150.txt
double?city_table[MAX_CITYNUM][MAX_CITYNUM];
int?city_No[MAX_CITYNUM];
double?city_x[MAX_CITYNUM];
double?city_y[MAX_CITYNUM];
int?vex_num;
read_in?>>?vex_num;
fout?<
for?(int?i?=?0;?i? {
read_in?>>?city_No[i]?>>?city_x[i]?>>?city_y[i];
fout?< }
fout<
for?(int?i?=?0;?i? {
city_table[i][i]?=?0;
for?(int?j?=?0;?j? {
double?temp?=?(city_x[i]?-?city_x[j])*(city_x[i]?-?city_x[j])?+?(city_y[i]?-?city_y[j])*(city_y[i]?-?city_y[j]);
city_table[i][j]?=?sqrt(temp);
fout?< }
fout< }
}
int?main(){
//?CityDataTranslate();???//?創建城市表
time_t?T_begin?=?clock();
Graph?G;
CreateGraph(G);
//?1.?initial?w?and?target?function?f(w)
//?2.?random?production?new?solution?-?eg:?ABCDEA?-->?ABCEDA
//?3.?judge?whether?accepted?new?solution?or?not?
//?4.?Simulate?Annealing
TSP_solution?bestSoluion?=?SA_TSP(G);
Display(G?bestSoluion);
time_t?T_end?=?clock();
double?RunningTime?=?double(T_end?-?T_begin)/CLOCKS_PER_SEC;
cout<<“程序運行時間?RunningTime?=?“<
system(“pause“);
return?0;
}
void?CreateGraph(Graph?&G){
ifstream?read_in;
read_in.open(“L:\\Coding\\TSP_SA模擬退火算法\\TSP_SA模擬退火算法\\city_5.txt“);
if?(!read_in.is_open())
{
cout<<“文件讀取失敗.“< return;
}
read_in?>>?G.vex_num;
//?read_in?>>?G.arc_num;
G.arc_num?=?0;
for?(int?i?=?0;i? {
read_in?>>?G.vexs[i];
}
G.vexs[G.vex_num]?=?‘\0‘; //?char的結束符.
for?(int?i?=?0;?i? {
for?(int?j?=?0;?j? {
read_in?>>?G.arcs[i][j];
//?calculate?the?arc_num
if?(G.arcs[i][j]?>?0)
{
G.arc_num++;
}
}
}
//?display
cout<<“無向圖創建完畢,相關信息如下:“< cout<<“【頂點數】?G.vex_num?=?“< cout<<“【邊數】?G.arc_num?=?“< cout<<“【頂點向量】?vexs[max_vexNum]?=?“;
for?(int?i?=?0;?i? {
cout?< }
cout< for?(int?i?=?0;?i? {
for?(int?j?=?0;?j? {
cout?< }
cout< }
}
TSP_solution?SA_TSP(Graph?G){
srand?(?unsigned?(?time(0)?)?);
//?當前溫度
double?Current_Temperature?=?INITIAL_TEMPERATURE;
//?最優解
TSP_solution?Best_solution;
Best_solution.le
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????758??2016-11-05?18:51??SA_TSP\city_10.txt
?????文件???????1098??2016-11-05?18:46??SA_TSP\city_12.txt
?????文件???????1736??2016-11-05?13:04??SA_TSP\city_15.txt
?????文件???????5248??2016-11-04?17:21??SA_TSP\city_26.txt
?????文件???????7422??2016-11-04?17:14??SA_TSP\city_31.txt
?????文件?????????89??2017-01-16?23:48??SA_TSP\city_5.txt
?????文件????????277??2016-11-05?16:32??SA_TSP\city_6.txt
?????文件????????824??2017-01-16?22:58??SA_TSP\SA.h
?????文件???????7372??2017-01-16?23:48??SA_TSP\TSP_SA.cpp
?????目錄??????????0??2017-01-17?21:54??SA_TSP
-----------?---------??----------?-----??----
????????????????24824????????????????????10
- 上一篇:labview中excel存儲vi
- 下一篇:山東省17地市市縣級geojson數據
評論
共有 條評論