TSP 遺傳演算法 gr48 之資料讀取

2021-09-27 11:47:04 字數 986 閱讀 7884

gr48是tsp問題的典型測試資料集,該資料集是乙個下三角矩陣,每乙個元素代表對應座標城市i->j的距離,那麼現在要做的就是讀取檔案read(),按照空格分開形成乙個一維向量,然後按照數量關係存到乙個二維矩陣中,處理方法如下:

一開始拿到資料集,完全不明白亂七八糟的一堆是什麼,後來才知道是乙個下三角矩陣,再後來才發現可以變成這樣:

突然覺得發現了新天地。

我參考的**用的是pandas,逐行讀取,可我這資料有點亂吶。最後我還是直接檔案讀取,用numpy進行陣列的處理。以下是我費了好大功夫研究出來的資料處理的超級超級簡單的**。

dist = np.zeros(

(citynum, citynum)

)with

open

(datapath)

asfile

: data = np.array(

file

.read(

).split())

count =

0print

(len

(data)

)for i in

range(10

):for j in

range(10

):if data[count]

=='0'

: dist[i, j]

= data[count]

count +=

1break

else

: dist[i, j]

= data[count]

count +=

1

可能下面判斷的部分還可以優化,如果大佬看到了這篇文章,請挽救一下我這只賊笨的小菜雞!!

每次遇到乙個新問題,我處理資料都得大半天,真想哭。每次聽到同學說,不想寫那個程式,一弄就得耽誤三四個小時,更得哭了!我每次都卡在資料處理上,怎麼搞?

不能放棄,多練習,順便把基礎打牢!

tsp遺傳演算法

include include include include include include using namespace std define m 10 種群規模 define n 31 省會 首府城市數量 define t 10000 遺傳代數 define earth radius 637...

tsp問題 遺傳演算法解決

tsp問題最簡單的求解方法是列舉法。它的解是多維的 多區域性極值的 趨於無窮大的複雜解的空間,搜尋空間是n個點的所有排列的集合,大小為 n 1 可以形象地把解空間看成是乙個無窮大的丘陵地帶,各山峰或山谷的高度即是問題的極值。求解tsp,則是在此不能窮盡的丘陵地帶中攀登以達到山頂或谷底的過程。這一篇將...

遺傳演算法解決TSP問題

基本原理在 中有注釋 1 include2 include 3 include 4 include5 include 6 using std string 7 8struct position9 1617 double tsp int n,struct position position,int t...