Проблема с присвоением значения элементам двумерного массива
Проблема с присвоением значений в двумерном массиве self.P. При проверке по ходу итераций выводятся правильные числа. При попытке же вывести массив после окончания работы алгоритма в каждом "столбце" все значения одинаковы.
def algo(self):
for t in range(N*2):
for i in range(N):
for j in range(N):
if i != j:
b = self.pheromones[(i, j)]
#print(i,j)
self.P[i][j] = ((b[0] ** self.a) * (1 / self.distance(i, j)) ** self.b) / (self.sum(j))
print(i,j,self.P[i][j])
print("______________")
self.update_phero()
self.update_bridges()
for i in range(N):
print(self.P[i])
вот сам вывод
Ответы (1 шт):
Автор решения: Сергей
→ Ссылка
Упростил код до примера ниже. Он выдает разные данные по столбцам, то есть проблема ушла.
[0, 0, 0, 0]
[0, 0, 2, 3]
[0, 2, 0, 6]
[0, 3, 6, 0]
Рекомендую для начала убрать self.update_phero() и self.update_bridges(), так как проверочную печать вы делаете до них (что в них делается, вы не указали в вопросе, так что совет на базе чистой логики и рабочего кода ниже). Если проблема уйдет - анализируйте, что не так в одной из этих функций.
def algo():
P = [[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]]
for t in range(4 * 2):
for i in range(4):
for j in range(4):
if i != j:
P[i][j] = i*j
print(i, j, P[i][j])
print("______________")
for i in range(4):
print(P[i])
algo()