Как обновить sh словарь со случайными значениями? - PullRequest
0 голосов
/ 07 марта 2020

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

Есть ли способ обновить sh словарь, чтобы случайные значения изменены?

Мой словарь:

individuals = {

    'a': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)],
    'b': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)],
    'c': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)],
    'd': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)],
    'e': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)],
    'f': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)],
    'g': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)],
    'h': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)],
    'i': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)]
}

Мой л oop:

def run_generation():
    global random_individuals, fitness_scores
    for k in range(tournamentSize):
        randchoice = random.sample(list(individuals), 1)[0] #update individual list so values are different??!
        randchoice = individuals.get(randchoice)
        random_individuals.append(randchoice)

В настоящее время я просто переопределяю словарь каждый раз Я формирую новое население (просто копирую словарь), но это кажется неэкономичным и будет медленным sh, когда население увеличится.

Ответы [ 2 ]

2 голосов
/ 07 марта 2020

Вы можете легко создать свой словарь на лету, используя простые списки:

individuals = { i : [random.randint(-4,4) for _ in range(6)] for i in 'abcdefghi' }
0 голосов
/ 07 марта 2020

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

def individuals():
    return { 
        'a': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)], 
        'b': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)], 
        'c': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)], 
        'd': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)], 
        'e': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)], 
        'f': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)], 
        'g': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)], 
        'h': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)], 
        'i': [random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4),random.randint(-4,4)] }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...