Алгоритм ближайшего соседа? - PullRequest
0 голосов
/ 11 апреля 2020

Я получаю сообщение об ошибке при попытке выполнить свою функцию. Я думаю, что это связано с вычислением расстояния между двумя координатами. Например, [5,2] и [6,7], он не может рассчитать расстояние между этими координатами.

Вот мой код:

import math
import copy

def calculate_distance(starting_x, starting_y, destination_x, destination_y):
    distance = math.hypot(destination_x - starting_x, destination_y - starting_y)  # calculates Euclidean distance (straight-line) distance between two points
    return distance

def nearest_neighbour_algorithm(selected_map):

  temp_map = copy.deepcopy(selected_map)
  optermised_map = [] 

  optermised_map.append(temp_map.pop()) 

  for x in range(len(temp_map)):
    nearest_value = 1000 
    neares_index = 0       
    for i in range(len(temp_map[x])):
      current_value = calculate_distance(*optermised_map[x], *temp_map[x])

      if nearest_value > current_value: 
        nearest_value = current_value 
        nearest_index = i 

    optermised_map.append(temp_map[nearest_index])
    del temp_map[nearest_index] 

  return optermised_map

copy_map = generate_map_1(200,200,5)
print("Map Points: ", copy_map)
print("Nearest Neighbour: ", nearest_neighbour_algorithm(copy_map))

Проблема здесь:

 current_value = calculate_distance(optermised_map[x] - temp_map[i])

Я пытаюсь передать 2 координаты моей функции вычисления расстояния, но это не так я не могу это сделать, так как я получаю сообщение об ошибке

1 Ответ

0 голосов
/ 11 апреля 2020

, потому что вы не можете вычесть список из другого списка

что именно вы хотите сделать, чтобы вычесть каждый элемент temp_map из карты optermised?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...