Поскольку вы фиксируете результат ГСЧ в переменной.
a3=rd.randint(0,1)
a2=rd.randint(0,50)
a1=100-a2-a3
Не входит в цикл и не будет генерировать новые значения при каждой итерации цикла for, вместо этого a3, a2, a1
будет иметь постоянные значения, сгенерированные случайным образом один раз. Если вы хотите, чтобы a3, a2, a1
были случайными значениями для каждой итерации в цикле while, вам нужно определить их внутри цикла.
iteration = 0
while iteration < n_iterations:
a3=rd.randint(0,1)
a2=rd.randint(0,50)
a1=100-a2-a3
particle_position_vector = np.array([np.array([rd.randint(0,2), rd.randint(0,2), a1, a2, a3]) for _ in range(n_particles)])
print("iteration : ", iteration)
for i in range(n_particles):
fitness_cadidate = fitness_function(particle_position_vector[i])
print(-(fitness_cadidate), ' ', particle_position_vector[i], ' ')
Редактировать: OP сказал, что код не работает
Здесь вы можете увидеть, что я пытался, и я скопирую / вставлю именно вывод из командной строки.
import random as rd
import numpy as np
n_particles = 10
iteration = 5
n_iterations = 10
while iteration < n_iterations:
a3=rd.randint(0,1)
a2=rd.randint(0,50)
a1=100-a2-a3
particle_position_vector = np.array([np.array([rd.randint(0,2), rd.randint(0,2), a1, a2, a3]) for _ in range(n_particles)])
print(a3)
print(a2)
print(a1)
print(particle_position_vector)
iteration += 1
Вывод:
1
30
69
[[ 2 2 69 30 1]
[ 2 0 69 30 1]
[ 0 2 69 30 1]
[ 1 1 69 30 1]
[ 1 0 69 30 1]
[ 0 0 69 30 1]
[ 2 0 69 30 1]
[ 1 0 69 30 1]
[ 2 1 69 30 1]
[ 1 1 69 30 1]]
0
50
50
[[ 1 2 50 50 0]
[ 0 2 50 50 0]
[ 2 2 50 50 0]
[ 1 0 50 50 0]
[ 0 1 50 50 0]
[ 2 0 50 50 0]
[ 0 0 50 50 0]
[ 0 2 50 50 0]
[ 1 1 50 50 0]
[ 1 1 50 50 0]]
1
23
76
[[ 2 0 76 23 1]
[ 2 0 76 23 1]
[ 1 1 76 23 1]
[ 2 0 76 23 1]
[ 2 1 76 23 1]
[ 2 0 76 23 1]
[ 1 0 76 23 1]
[ 1 2 76 23 1]
[ 2 2 76 23 1]
[ 0 1 76 23 1]]
1
7
92
[[ 2 1 92 7 1]
[ 0 0 92 7 1]
[ 2 2 92 7 1]
[ 1 1 92 7 1]
[ 1 2 92 7 1]
[ 1 1 92 7 1]
[ 0 2 92 7 1]
[ 0 2 92 7 1]
[ 1 0 92 7 1]
[ 2 0 92 7 1]]
1
2
97
[[ 2 2 97 2 1]
[ 1 0 97 2 1]
[ 1 2 97 2 1]
[ 0 2 97 2 1]
[ 1 2 97 2 1]
[ 2 2 97 2 1]
[ 2 1 97 2 1]
[ 2 1 97 2 1]
[ 1 1 97 2 1]
[ 2 2 97 2 1]]
Как видите,для каждой итерации a1
, a2
и a3
назначаются разные случайные значения.