You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:36:04