我阅读了TutorialsPoint和this question and answer on StackOverflow上的教程。但是,在遗传算法的“父代选择和交叉”过程中,我仍然不了解交叉概率的含义。
说我的人口为100,交叉概率为0.9。这是什么意思?我可以吗?
然后,父母不知何故越过了,有些人变异了。此时人口是否需要正好有100名成员,或者还有哪些人可以加入下一代?
答案 0 :(得分:2)
如何选择父解决方案也可能有所不同。可能更可能选择更适合的父母解决方案来产生后代,并且无论产生什么后代都将构成下一代的父母群体。或者,可以随机选择母体溶液以产生后代。然后对合并的父母和后代种群进行选择,以创建下一代的父母种群。
通常,父母人口将始终等于规定的人口规模。但是,有可能产生更多的后代,然后仅选择一个子集。或者每一代只能创建几个后代,每个后代都可能替代父代解决方案。一些实施方案还可能会随着时间的推移改变人口规模,也许首先使用大量的人口来促进勘探,然后随着时间的推移减小人口的规模来促进剥削。
答案 1 :(得分:1)
它不完全是10个父母,平均10个父母。 以下是我遵循的伪代码。
current_population <- comes from previous generation
new_population <- []
for i upto number of chromosomes in current_population :
parent1, parent2 <- pick 2 parents from current population based on fitness function
if random_number is less than cross_over_ratio :
offspring <- crossover (parent1, parent2)
else:
if random_number is 0.5:
offspring <- parent1
else:
offspring <- parent2
append the offspring to new_population
for i upto number of chromosomes in new_population :
if random_number is less than mutation_ratio :
i_th chromosome in new_population <- mutation (i_th chromosome in new_population)