Как отслеживать индекс строки для строк, которые я случайно выбираю из матрицы? - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь выполнить выбор турнира в GA, при этом мне нужно выбрать две строки случайным образом. Есть ли способ отслеживать значения индексов двух случайных строк, которые я выбираю из матрицы self.population, и сохранять их в переменных?

На данный момент он просто выводит две случайные строки, но мне нужно отслеживать, какие строки были выбраны.

Ниже представлено то, что у меня есть до сих пор, хотя в идеале я хотел бы сохранить обе строки, которые я выбираю из своей матрицы, в отдельных переменных.


self.population = [[0 1 1 1 0 0 1 1 0 1]
                  [1 0 1 1 0 0 0 1 1 1]
                  [0 0 0 0 0 1 1 0 0 0]
                  [1 1 0 0 1 1 1 0 1 1]
                  [0 1 0 1 1 1 1 1 1 0]
                  [0 0 0 0 1 0 1 1 1 0]]

def tournament_select(self):
    b = np.random.randint(0, self.population[0], 2) 
    return self.population[b]

1 Ответ

2 голосов
/ 29 мая 2020

Это то, что вы ищете?

from random import sample
import numpy as np

population = np.array([[0, 1, 1, 1, 0, 0, 1, 1, 0, 1],
    [1, 0, 1, 1, 0, 0, 0, 1, 1, 1],
    [0, 0, 0, 0, 0, 1, 1, 0, 0, 0],
    [1, 1, 0, 0, 1, 1, 1, 0, 1, 1],
    [0, 1, 0, 1, 1, 1, 1, 1, 1, 0],
    [0, 0, 0, 0, 1, 0, 1, 1, 1, 0]])


def tournament_select():
    row_indices = sample(range(len(population)), k=2)
    return row_indices, population[row_indices]

row_indices, candidates = tournament_select()
print(row_indices)
print(candidates)

Вывод:

[2, 3]
[[0 0 0 0 0 1 1 0 0 0]
 [1 1 0 0 1 1 1 0 1 1]]
...