Pergunta D do Concurso Nacional de Modelagem Matemática para Estudantes Universitários de 2023 Explicação detalhada das ideias de utilização do espaço para criar ovelhas Hu em cativeiro + código-fonte Python (2)

Ontem escrevi a explicação detalhada da primeira e segunda questões da Pergunta E e do código-fonte da ideia. Se você quiser começar com a Pergunta E, recomendo que consulte meu artigo. Pessoalmente, acho que a Pergunta E é melhor do que a pergunta D em termos de modelagem. Tenho dados e uma ideia de modelagem clara. Para a pergunta E, forneci diretamente o código-fonte do Python e você pode executá-lo diretamente:

2023 Concurso Nacional de Graduação em Matemática em Modelagem - Explicação Detalhada do Problema E + Análise do Código Fonte do Código Pythonhttps: icon-default.png?t=N7T8//zhuanlan.zhihu.com/p/654941615 2023 Concurso Nacional de Graduação em Matemática em Modelagem Explicação Detalhada do Problema E + Código Fonte do Código Python (2 ) icon-default.png?t=N7T8https:// /zhuanlan.zhihu.com/p/654977217 Apresse-se e leia com atenção, se necessário. Apresente-me brevemente: O blogueiro se concentrou em modelagem por quatro anos, participou de dezenas de modelagem matemática, grandes e pequenas, e entende os princípios de vários modelos, o processo de modelagem de cada modelo e vários métodos de análise de tópicos. Participou de mais de dez competições de modelagem matemática, ganhou dois prêmios M e um prêmio H em três competições nos EUA, e o segundo prêmio na competição nacional. Espero que você possa clicar em mim quando encontrar competições de modelagem no futuro. Posso fornecer ideias gratuitas e alguns códigos-fonte. Enquanto eu tiver tempo em futuras competições de modelagem digital, com certeza escreverei ideias gratuitas e de código aberto assim que possível. que possível. A blogueira acompanha diversas competições digitais e analógicas e recomenda a coluna cuidadosamente criada pelo autor. O objetivo desta coluna é usar rapidamente vários modelos matemáticos e códigos com base zero. Cada artigo contém projetos práticos e códigos executáveis. Os blogueiros acompanham todos os tipos de competições digitais e analógicas. Para cada competição digital e analógica, os blogueiros escreverão as ideias e códigos mais recentes nesta coluna, bem como ideias detalhadas e códigos totalmente executáveis:

Um estudo rápido - modelos comuns de modelagem matemática icon-default.png?t=N7T8https://blog.csdn.net/master_hunter/category_10967944.html Ontem resolvi a primeira questão do problema D. Muitas pessoas me pediram o código-fonte. Para ser sincero, o código-fonte é realmente difícil de fornecer. A equipe não se importa com o CP direto. O risco é muito alto. Já forneci a estrutura geral e as funções personalizadas, mas ainda não consigo combiná-las. :

Pergunta D do Concurso Nacional de Modelagem Matemática para Estudantes Universitários de 2023 Explicação detalhada das ideias de utilização do espaço para criar ovelhas Hu em cativeiro + código-fonte Python icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/655008846

Solução do problema um:

def simulate_annual_slaughter(basic_ewes, ram, pen_capacity):
    slaughtered_lambs = 0

    for _ in range(365):
        pregnant_ewes = min(basic_ewes, pen_capacity["natural_mating"]["ewes"]) * pen_capacity["natural_mating"]["ram"]

        # 怀孕
        lambs_born = min(pregnant_ewes * 2, pen_capacity["pregnancy"]["ewes"])

        # 分娩和哺乳
        lactating_ewes = min(lambs_born, pen_capacity["lactation"]["ewes"])
        lactating_lambs = min(lambs_born * 2, pen_capacity["lactation"]["lambs"])

        # 羊只成长
        fattening_lambs = min(lactating_lambs, pen_capacity["fattening"]["lambs"])

        # 更新羊只数量
        basic_ewes = basic_ewes + lambs_born - lactating_ewes

        # 累积出栏羊只数量
        slaughtered_lambs += fattening_lambs

    return slaughtered_lambs

# 初始条件
basic_ewes = 200  # 基础母羊数量
ram = 2  # 种公羊数量

# 羊栏规格
pen_capacity = {
    "natural_mating": {"ram": 1, "ewes": 14},
    "pregnancy": {"ewes": 8},
    "lactation": {"ewes": 6, "lambs": 6},
    "fattening": {"lambs": 14}
}

slaughtered_lambs = simulate_annual_slaughter(basic_ewes, ram, pen_capacity)

print(f"每年预计出栏羊只数量:{slaughtered_lambs:.2f} 只")

# 初始条件
basic_ewes = 200  # 基础母羊数量
ram = 4  # 种公羊数量

# 阶段参数
natural_mating_period = 20
gestation_period = 149
lactation_period = 40
fattening_period = 210
rest_period = 20

# 羊栏规格
pen_capacity = {
    "natural_mating": {"ram": 1, "ewes": 14},
    "pregnancy": {"ewes": 8},
    "lactation": {"ewes": 6, "lambs": 6},
    "fattening": {"lambs": 14}
}
# 模拟中使用的羊栏数量
used_pens = {
    "natural_mating": 0,
    "pregnancy": 0,
    "lactation": 0,
    "fattening": 0
}
# 记录出栏羊只数量
slaughtered_lambs = 0

# 模拟一年的时间
for _ in range(365):

    # 自然交配
    pregnant_ewes = min(basic_ewes, pen_capacity["natural_mating"]["ewes"]) * ram

    # 怀孕
    lambs_born = min(pregnant_ewes * 2, pen_capacity["pregnancy"]["ewes"])

    # 分娩和哺乳
    lactating_ewes = min(lambs_born, pen_capacity["lactation"]["ewes"])
    lactating_lambs = min(lambs_born * 2, pen_capacity["lactation"]["lambs"])

    # 羊只成长
    fattening_lambs = min(lactating_lambs, pen_capacity["fattening"]["lambs"])

    # 更新羊只数量
    basic_ewes = basic_ewes + lambs_born - lactating_ewes
    ram = ram

    # 累积出栏羊只数量
    slaughtered_lambs += fattening_lambs
    # 记录使用的羊栏数量
    used_pens["natural_mating"] += 1
    used_pens["pregnancy"] += 1
    used_pens["lactation"] += 1
    used_pens["fattening"] += 1

# 所需羊栏数量
required_pens = max(used_pens.values())

# 现有羊栏数量
existing_pens = 112

# 计算羊栏缺口
pen_shortage = required_pens - existing_pens

# 输出结果
print(f"现有羊栏数量:{existing_pens} 栏")
print(f"所需羊栏数量:{required_pens} 栏")
print(f"羊栏缺口:{pen_shortage} 栏")

 

O texto acima é apenas para referência, você pode modificar os parâmetros correspondentes de acordo com a situação de resolução de problemas de sua equipe.

Questão 2

Com base na pergunta 1, é fornecido um plano de produção específico para 112 currais de ovinos padrão (incluindo o momento e a quantidade de carneiros para acasalamento e ovelhas básicas, o uso de currais de ovinos, o número anual de ovelhas para abate, etc.), de modo que que O número anual de ovelhas abatidas é o maior.

responder

A partir da correlação da questão, a questão 1 e a questão 2 podem realmente ser consideradas como estratégia de cálculo e otimização de inversão para obter a solução ideal. Então a ideia da segunda questão não pode ser considerada a partir dos resultados do cálculo. Deve-se calcular o número básico de ovelhas que atende ao número padrão de currais de ovelhas e analisar passo a passo a partir das condições básicas. Então vamos redefinir o problema:

Suponha que os números de carneiros reprodutores e ovelhas fundadoras sejam x e y , respectivamente .

Em cada ciclo reprodutivo, a capacidade reprodutiva da ovelha básica é y , portanto o número de ovelhas que podem ser produzidas em cada ciclo é 2×2× y .

A duração total de um ciclo reprodutivo é 20+149+20+210=419 dias

Portanto, 0,87 ciclos restantes podem ser realizados em um ano, então o número de ovinos produzidos por ano é 0,87×2×y

Para garantir que pelo menos 1.500 ovelhas sejam abatidas todos os anos, precisamos resolver a equação:

0,87×2× y ≥1500

Resolva para obter y≥861

Sob a condição de realização de produção contínua, assumindo que a taxa de utilização de cada curral de ovelhas seja p , as seguintes condições precisam ser atendidas:

  • Tempo de utilização do curral para acasalamento natural: p ×20 dias
  • Cercado para ovelhas usado durante a gravidez: p×149 dias
  • Curral para ovelhas em lactação: p×40 dias
  • Cercado utilizado no período de engorda de cordeiros: p ×210 dias
  • Período ocioso do rebanho de ovelhas: (1− p )×20 dias

Combinando os resultados anteriores, podemos determinar um número razoável de machos reprodutores e ovelhas base. Este número é então usado para simular o número de ovinos abatidos para estimar a variação anual de ovinos abatidos.

# 计算一个繁育周期的总长度
breeding_cycle_length = natural_mating_period + gestation_period + lactation_period + fattening_period

# 计算一年内可以进行的繁育周期数
num_cycles_per_year = days_in_year / breeding_cycle_length

# 问题 1: 确定养殖场种公羊与基础母羊的合理数量
# 基础母羊数量 (y) 至少需要满足每年出栏不少于1500只羊的条件
required_ewes = 1500 / (2 * num_cycles_per_year)

# 问题 2: 估算现有标准羊栏数量的缺口
# 确定每个羊栏的利用率
pen_capacity = num_pens * pen_utilization

# 一个羊栏在一个繁育周期内的总利用天数
pen_total_days = pen_utilization * breeding_cycle_length

# 一个羊栏的平均利用天数,考虑到空闲期
pen_average_days = pen_total_days + (1 - pen_utilization) * rest_period

# 可以养殖的基础母羊数量
feasible_ewes = pen_capacity * pen_average_days / breeding_cycle_length

# 问题 3: 估算年化出栏羊只数量的范围
# 计算实际每年产羊的数量
actual_annual_lambs = 2 * num_cycles_per_year * required_ewes

# 输出结果
print(f"问题 1: 养殖场需要至少 {int(required_ewes)} 只基础母羊。")
print(f"问题 2: 现有标准羊栏数量满足的基础母羊数量为 {int(feasible_ewes)} 只。")
print(f"问题 3: 年化出栏羊只数量的范围为 {int(actual_annual_lambs)} 只.")

Questão 1: A fazenda precisa de pelo menos 860 ovelhas básicas.

Pergunta 2: O número básico de ovelhas que o número padrão existente de currais pode atender é 85.

Pergunta 3: O intervalo do número anualizado de ovinos abatidos é 1.500.

Para fornecer um plano de produção específico, precisamos considerar os seguintes fatores:

  1. O número e o momento do acasalamento de ovelhas básicas e carneiros reprodutores.
  2. O plano de utilização do curral garante que as ovelhas em todas as fases possam ser adequadamente alojadas.
  3. Maximizar o número anual de ovinos abatidos.

O espaço no curral das ovelhas será utilizado tanto quanto possível para maximizar a produção.

Plano de produção:

Os carneiros reprodutores são emparelhados com ovelhas básicas:

    • Tempo de emparelhamento: 10 dias antes do período natural de acasalamento
    • Número de carneiros reprodutores: 2
    • Número básico de ovelhas: 100

gravidez:

  • Número de currais de ovelhas utilizados: 8 (112 currais de ovelhas / 0,87)
  • Capacidade por curral: 8 ovelhas gestantes
  • Ciclo de gravidez: 149 dias

Parto e lactação:

  • Número de currais de ovelhas utilizados: 9 (112 currais de ovelhas / 0,87)
  • Capacidade por curral: 6 ovelhas e seus cordeiros
  • Número total de ovelhas: 54 ovelhas + 54 cordeiros
  • Ciclo de parto: 40 dias

Período de engorda de cordeiro:

  • Número de currais de ovelhas utilizados: 8 (112 currais de ovelhas / 0,87)
  • Capacidade por curral: 14 cordeiros
  • Ciclo de engorda de cordeiro: 210 dias

ciclo:

Terminado o período de engorda dos cordeiros, as ovelhas adultas são devolvidas à área de espera, os cordeiros são transferidos para a área de engorda e o ciclo prossegue para a próxima rodada.

Só espero que você possa me conhecer quando encontrar competições de modelagem no futuro. Posso fornecer ideias gratuitas e alguns códigos-fonte. Enquanto eu tiver tempo em futuras competições de modelagem digital, com certeza escreverei ideias gratuitas e de código aberto o mais rápido possível Sua atenção Curtidas e curtidas são minha motivação para escrever! ! ! Se quiser saber mais, entre em contato com o blogueiro~~~~ Além disso, gostaria de recomendar a coluna cuidadosamente criada pelo autor. O objetivo desta coluna é usar rapidamente vários modelos matemáticos e códigos com base zero. Cada artigo contém projetos práticos e códigos executáveis. Os blogueiros acompanham todos os tipos de competições digitais e analógicas. Para cada competição digital e analógica, os blogueiros escreverão as ideias e códigos mais recentes nesta coluna, bem como ideias detalhadas e códigos completos:

Aprendizado rápido em um artigo – modelos comumente usados ​​em modelagem matemática icon-default.png?t=N7T8https://blog.csdn.net/master_hunter/category_10967944.html

O próximo capítulo atualiza o código-fonte da segunda questão e da quarta questão da questão E

Acho que você gosta

Origin blog.csdn.net/master_hunter/article/details/132780033
Recomendado
Clasificación