Чтобы решить задачу коммивояжера (TSP) с использованием генетического алгоритма, я случайным образом генерирую список из Z точек на сетке N by N:
field = [random.sample(range(N), 2) for x in range(Z)]
После этого, чтобы создать случайный путь, по которому может путешествовать продавец, я перетасовываю точки и добавляю первую точку к последней, чтобы сделать путь «круговым».
path = random.sample(field, len(field))
path.append(member[0])
Этоодин из возможных «путей»:
[[0, 7], [167, 118], [150, 173], [37, 21], [48, 150], [0, 7]]
Однако мне также необходимо измерить пригодность, то есть длину пути, чтобы определить, какие пути следует исключить, а какие -сохранить (так как это генетический алгоритм).И здесь я не понимаю, как действовать дальше.
Моя текущая идея - использовать Формула расстояния для пары точек, но тогда все значения должны быть продублированы для меня.чтобы передать каждую пару координат x, y в мой калькулятор для нахождения формулы расстояния.
Например, для точек выше, она должна выглядеть примерно так:
[[[0, 7], [167, 118]], [[167, 118], [150, 173]], [[150, 173], [37, 21]],....]
С технической точки зрения я понятия не имею, как бы я мог создать такой список.
PS Я нашел этот ответ на проблему, однако он находится в R, и я до сих пор не понимаю, как подойти к этой проблеме.