J'ai récemment appris à utiliserpythonAlgorithme d'optimisation d'écriture pour résoudretspQuestions,Ainsi, certains.tspExemple de type,Par exemple::berbin8Attendez.、berlin52Attendez.、a208.tspAttendez.,Comment utiliserpythonImporter.tspEt les papiers??Notez le problème.
1.Voyons d'abord.berlin8.tspFormat des données du fichier,Je vois.,No7La ligne commence à enregistrer les coordonnées du noeud,Ça ne sert à rien que la dernière ligne soit un signe de fin,En gros, tous les exemples sont dans ce format;
2.Ici, j'utilisepandasImporter des données,Attention aux besoinsSauter les six premières lignes sans lire(skiprows=6)
df = pd.read_csv(r".\Apprentissage combiné optimisé\demo_tsp\berlin8.tsp",sep=" ",skiprows=6,header=None,encoding='utf8')
Puis lisez les noeuds et les coordonnées,Les codes sont les suivants::
df = pd.read_csv(r".\Apprentissage combiné optimisé\demo_tsp\berlin8.tsp",sep=" ",skiprows=6,header=None,encoding='utf8')
node=list(df[0][0:-1])
num_points=len(node)
city_x = np.array(df[1][0:-1])
city_y = np.array(df[2][0:-1])
points= list(zip(city_x, city_y))
Imprimer les coordonnées des noeuds lus ,Ça a marché., Ensuite, vous pouvez écrire des algorithmes pour résoudre tspC'est un problème..
3.Ce n'est pas fini,,,,, J'ai utilisé la même méthode pour ouvrir berlin52.tspAu moment du dossier,Mauvaise déclaration! Cette déclaration d'erreur signifie lire le fichier 17 Attendez - vous à 3Champs,C'est - à - dire:dfIl y a trois colonnes, Mais quatre champs apparaissent , Il y a un problème avec les champs du fichier source .
ParserError: Error tokenizing data. C error: Expected 3 fields in line 17, saw 4
4. J'a i trouvé beaucoup d'options en ligne qui sont fastidieuses et pas nécessairement utiles , J'ai utilisé une méthode simple et brutale .Premier réglageerror_bad_lines=False, Puis, en lisant le fichier print Quelles lignes ont des erreurs sauter directement sans lire , Et la cause de l'erreur .
df = pd.read_csv(r".\Apprentissage combiné optimisé\demo_tsp\berlin52.tsp",sep=" ",skiprows=6,header=None,error_bad_lines=False)
Résultats:
b'Skipping line 17: expected 3 fields, saw 4\nSkipping line 25: expected 3 fields, saw 5\n
Les résultats montrent que 17Lignes et paragraphes25 Il y a plus de caractères dans la ligne ,Est un saut de ligne\n;
La façon la plus simple est de l'ouvrir directement .tspDocumentation,Trouver17Et25D'accord, Supprimer la ligne , Encore une fois, il suffit de l'enregistrer .
5. Répétez l'étape 4 pour relire le Code sans erreur ,Lire tout.