Проблема с присвоением значения элементам двумерного массива

Проблема с присвоением значений в двумерном массиве 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()

→ Ссылка