Сколько потомков мы должны произвести в генетическом алгоритме?
Предположим, у меня есть 100 попсовых размеров, я должен сделать 10 потомков? Я хочу, чтобы лучшая комбинация между попсайзом и потомством быстро достигла конвергенции, и, пожалуйста, включите также бумагу.
2 ответа
Нет лучшего потомка / популяции для каждой проблемы, которую вы можете решить с помощью генетического алгоритма. Каждая проблема имеет лучшую конфигурацию, которая неизвестна не только по потомству / популяции, но также по вероятности мутации, дизайну хромосом и т. Д.
С учетом сказанного существует множество решений, таких как полная замена, частичная замена и т. Д. Со своими преимуществами и недостатками. Вы должны изучить их и решить, какой из них больше всего подходит для вашей проблемы.
- Предположим, численность населения N для вашего GA.
chrom # 0 = "01010110101" | Fitness = f0
chrom # 1 = "11010010111" | Fitness = f1
chrom # 2 = "01010111011" | Fitness = f2
chrom # 3 = "01111010100" | Fitness = f3
.
.
.
chrom # N = "01011010110" | Fitness = fN
-Вы случайным образом применяете турнир с хромосомами из основной популяции с размером T: (T < N)
Tournament chrom # 0 = "01010110101" | Fitness = f0
Tournament chrom # 1 = "11010010111" | Fitness = f1
Tournament chrom # 2 = "01010111011" | Fitness = f2
Tournament chrom # 3 = "01111010100" | Fitness = f3
.
.
.
Tournament chrom # T = "01011010110" | Fitness = fT
просто получить матовую хромосому:
Mate Chromosome # 1
другой турнир:
Mate Chromosome # 2
Вы применяете кроссовер, чтобы вернуть потомство:
Crossover(Mate Chromosome # 1, Mate Chromosome # 2) => offspring
Технически это означает, что вы получите N потомков для своего нового населения.
Mutation(offspring) => new chromosome for new population
Продолжайте итерацию, пока не достигнете максимального размера целевой хромосомы.