Выбор выжившей популяции в генетическом алгоритме «избирателя» - PullRequest
1 голос
/ 31 января 2011

Я работал над генетическим алгоритмом, в котором есть популяция, состоящая из людей с цветом и предпочтением.Предпочтение и цвет происходят из небольшого числа конечных состояний, вероятно, около 4 или 5. (пример: 1 | 1, 5 | 2, 3 | 3 и т. Д.)

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

Моя текущая идея состоит в том, чтобы циклически проходить через каждого человека, и вычислить шанс, что они выживут, основываясь на количестве голосов, и т. д. и затем бросить кубикчтобы увидеть, живут ли они.

В настоящее время я делаю это так, чтобы, если v[x] представляет процент голосов за цвет x, индивидуальный k с цветом c имеет v[c] шансвыживание.Однако это означает, что если есть равные числа всех 5 типов (a | a) особей, 4/5 из них погибают, и это нехорошо.

Есть ли у кого-нибудь представление о методе случайностиЯ мог бы использовать, чтобы определить шанс выжить?Например, алгоритм, который за v голосует за c, v особей с цветом c выживает (в среднем по статистике).

Ответы [ 2 ]

0 голосов
/ 31 января 2011

Ну, вы можете взвесить вероятности в соответствии со значением, возвращенным путем передачи каждого член населения к функции стоимости .

Это кажется мне наиболее простым способом, совместимым с генетическим мета-эвристического.

Более распространенным является разделение текущего населения на сегменты, основанные на значение, возвращаемое от передачи их функции стоимости.

Так, например, если каждое поколение состоит из 100 членов, то верхний N (N просто определяется пользователем параметр, часто что-то около 5-10% от общего числа) членов с наименьшей стоимостью результат функции) передаются следующему поколению такими, какие они есть (элитарность). Возможно, это то, что вы подразумеваете под «выжить». Если так, то снова эти «выжившие» определяются путем ранжирования членов населения в соответствии с функцией стоимости значение и выбор тех членов выше вашей определенной константы доли элитарности. Остальные (большинство) следующего поколения создаются либо мутация или кроссинговер.

Мутация :

# one member of the current population:
[4, 5, 1, 7, 4, 2, 8, 9]

# small random change in one member of prior generation, to create mutant that is 
# a member of the next generation
[4, 9, 1, 7, 4, 2, 8, 9]

Кроссовер

# two of the 'top' members of the current generation
[4, 5, 1, 7, 4, 2, 8, 9]
[2, 3, 6, 9, 2, 1, 6, 4]

# offpsring is a member of the next generation
[4, 5, 1, 7, 2, 1, 6, 4]
0 голосов
/ 31 января 2011

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

...