KeyError: 0 во время выполнения цикла while - PullRequest
0 голосов
/ 17 октября 2019

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

in stochasticUniversalSampling
    if fitness_prob[j] > points[i]:
KeyError: 0

Я пытаюсь назначить каждой хромосоме диапазон, равный по длине ее пригодности иначальная точка, которая находится после конечной точки предыдущей хромосомы (например, первая хромосома 0-1,53, 2-я хромосома 1,54-2,26, 3-я хромосома 2,27-3,42 и т. д.). Выберите хромосомы, диапазон которых содержит маркер (обратите внимание, что хромосома может иметь 2 маркера, в этом случае она выбирается дважды).

city.txt

5
1 823170 415922
2 793699 274913
3 981665 218777
4 878910 431320
5 910125 405907

1 Ответ

1 голос
/ 17 октября 2019

Когда вы создали fitness_prob, вы использовали значения из self.population в качестве ключей. Но в цикле while вы используете индексы fitness_prob в качестве ключей, когда вы должны использовать значения. Изменить:

if fitness_prob[j] > points[i]:

на

if fitness_prob[self.population[j]] > points[i]:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...