Python遗传算法实践:大鼠繁殖模拟场景下功能函数实现咨询
大鼠繁殖选育模拟功能实现代码
import random # 全局参数定义 number_rats = 50 # 初始种群固定规模,可按需调整 min_offspring = 2 max_offspring = 10 mutation_prob = 0.1 # 负向突变触发概率10% mutation_decay = 0.9 # 突变后体重衰减比例 def breeding(female, male): offspring = [] number_offspring = random.randint(min_offspring, max_offspring) for _ in range(number_offspring): # 生成基础体重:父母本区间三角分布取值 base_weight = random.triangular(female, male) # 负向突变逻辑判断 if random.random() < mutation_prob: base_weight *= mutation_decay offspring.append(base_weight) return offspring def generate_random_pairs(population): # 随机打乱种群后两两配对,种群数为奇数时自动丢弃最后1个未配对个体 shuffled = random.sample(population, len(population)) pairs = [] for i in range(0, len(shuffled) - 1, 2): pairs.append((shuffled[i], shuffled[i+1])) return pairs def filter_offspring(all_offspring, target_size): # 子代按体重降序排序,保留前target_size个个体 sorted_offspring = sorted(all_offspring, reverse=True) return sorted_offspring[:target_size]
迭代选育使用示例
if __name__ == "__main__": # 初始化种群:初始体重范围200-300g current_pop = [random.uniform(200, 300) for _ in range(number_rats)] # 迭代选育100代 for epoch in range(100): all_offspring = [] # 生成配对 pairs = generate_random_pairs(current_pop) # 批量繁殖 for fem, male in pairs: all_offspring.extend(breeding(fem, male)) # 筛选得到新一代种群 current_pop = filter_offspring(all_offspring, number_rats) # 输出每代平均体重 avg_weight = sum(current_pop)/len(current_pop) print(f"第{epoch+1}代平均体重:{avg_weight:.2f}g")
内容的提问来源于stack exchange,提问作者python noobie
相关产品推荐
相关产品推荐

