(B题)2024电工杯数学建模解题思路|大学生平衡膳食食谱的优化设计及评价|完整代码论文集合

我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合,专为本次赛题设计,旨在帮助您深入理解数学建模的每一个环节。

让我们先来分析本次的B题!

电工杯数学建模(AB两题)完整内容可以在文章末尾领取!

让我们来看看B题,B题的第一个问题是:膳食食谱的营养分析评价及调整。

  1. 首先,根据附件1和附件2的食物摄入记录,计算出男生和女生一天摄入的能量,以及各种营养素的摄入量。

  2. 根据附件3提供的学生食堂食物信息,计算出男生和女生一天在食堂就餐的能量及各种营养素的摄入量。

  3. 将计算得到的能量及各种营养素的摄入量与附件4中的参考摄入量进行比较,评价男生和女生的膳食是否达到科学合理的标准。

  4. 如果发现男生和女生的膳食摄入不足或过量的营养素,可以根据附件4中的评价过程,调整食谱中的食物种类或食用量,使其达到平衡膳食的要求。

  5. 进行调整后,再次计算男生和女生的能量及各种营养素的摄入量,并对调整后的食谱进行全面的膳食营养评价。

1)对附件 1、附件 2 两份食谱做出全面的膳食营养评价:

根据附件4中的平衡膳食基本准则和能量及各种营养素参考摄入量,可以计算出附件1和附件2中每种营养素的摄入量。根据附件3提供的高校学生食堂一日三餐主要食物信息统计表,可以计算出附件1和附件2中每种食物的营养素含量。然后根据膳食食谱营养评价过程,计算出附件1和附件2中每种营养素的百分比摄入量,与各项指标要求进行比较,得出膳食营养评价结果。

2)基于附件3,对附件1、附件2 两份食谱进行较少的调整改进,并且再做出全面的膳食营养评价。

根据附件3提供的高校学生食堂一日三餐主要食物信息统计表,可以结合附件1和附件2的食物摄入情况,对食谱进行调整改进。可以通过增加或减少某些食物的摄入量,或者更换其他食物,来达到平衡膳食的要求。然后再根据膳食食谱营养评价过程,计算出改进后的食谱中每种营养素的百分比摄入量,与各项指标要求进行比较,得出膳食营养评价结果。

膳食营养评价过程中,计算每种营养素的百分比摄入量的公式为:

百分比摄入量 = (食物中营养素含量/每日参考摄入量) * 100%

其中,食物中营养素含量可以通过附件3中提供的食物信息表中的可食部分量和价格来计算,每日参考摄入量可以通过附件4中提供的各种营养素的参考摄入量来获取。

import pandas as pd

# 读取附件1和附件2的数据
df_male = pd.read_excel('附件1.xlsx')
df_female = pd.read_excel('附件2.xlsx')

# 计算每种食物的总摄入量
df_male['总摄入量'] = df_male['可食部分量'] * df_male['食用份数']
df_female['总摄入量'] = df_female['可食部分量'] * df_female['食用份数']

# 计算每种食物的总能量值
df_male['总能量值'] = df_male['总摄入量'] * df_male['能量(kcal/100g可食部分)']
df_female['总能量值'] = df_female['总摄入量'] * df_female['能量(kcal/100g可食部分)']

# 计算每种营养素的总摄入量
df_male['总蛋白质'] = df_male['总摄入量'] * df_male['蛋白质(g/100g可食部分)']
df_female['总蛋白质'] = df_female['总摄入量'] * df_female['蛋白质(g/100g可食部分)']

df_male['总脂肪'] = df_male['总摄入量'] * df_male['脂肪(g/100g可食部分)']
df_female['总脂肪'] = df_female['总摄入量'] * df_female['脂肪(g/100g可食部分)']

df_male['总碳水化合物'] = df_male['总摄入量'] * df_male['碳水化合物(g/100g可食部分)']
df_female['总碳水化合物'] = df_female['总摄入量'] * df_female['碳水化合物(g/100g可食部分)']

# 计算每种营养素的百分比
df_male['蛋白质占总能量比例'] = df_male['总蛋白质'] / df_male['总能量值']
df_female['蛋白质占总能量比例'] = df_female['总蛋白质'] / df_female['总能量值']

df_male['脂肪占总能量比例'] = df_male['总脂肪'] / df_male['总能量值']
df_female['脂肪占总能量比例'] = df_female['总脂肪'] / df_female['总能量值']

df_male['碳水化合物占总能量比例'] = df_male['总碳水化合物'] / df_male['总能量值']
df_female['碳水化合物占总能量比例'] = df_female['总碳水化合物'] / df_female['总能量值']

# 计算每种营养素的参考摄入量
df_male['参考蛋白质摄入量'] = df_male['体重(kg)'] * 1.2
df_female['参考蛋白质摄入量'] = df_female['体重(kg)'] * 0.9

df_male['参考脂肪摄入量'] = df_male['体重(kg)'] * 1.1
df_female['参考脂肪摄入量'] = df_female['体重(kg)'] * 0.8

df_male['参考碳水化合物摄入量'] = df_male['体重(kg)'] * 7
df_female['参考碳水化合物摄入量'] = df_female['体重(kg)'] * 6

# 计算每种营养素的缺口值
df_male['蛋白质缺口'] = df_male['参考蛋白质摄入量'] - df_male['总蛋白质']
df_female['蛋白质缺口'] = df_female['参考蛋白质摄入量'] - df_female['总蛋白质']

df_male['脂肪缺口'] = df_male['参考脂肪摄入量'] - df_male['总脂肪']
df_female['脂肪缺口'] = df_female['参考脂肪摄入量'] - df_female['总脂肪']

df_male['碳水化合物缺口'] = df_male['参考碳水化合物摄入量'] - df_male['总碳水化合物']
df_female['碳水化合物缺口'] = df_female['参考碳水化合物摄入量'] - df_female['总碳水化合物']

# 输出男大学生的营养分析评价
print('男大学生的营养分析评价:\n')
print('总能量值:', df_male['总能量值'].sum())
print('总蛋白质:', df_male['总蛋白质'].sum())
print('总脂肪:', df_male['总脂肪'].sum())
print('总碳水化合物:', df_male['总碳水化合物'].sum())
print('蛋白质占总能量比例:', df_male['蛋白质占总能量比例'].mean())
print('脂肪占总能量比例:', df_male['脂肪占总能量比例'].mean())
print('碳水化合物占总能量比例:', df_male['碳水化合物占总能量比例'].mean())
print('蛋白质缺口:', df_male['蛋白质缺口'].sum())
print('脂肪缺口:', df_male['脂肪缺口'].sum())
print('碳水化合物缺口:', df_male['碳水化合物缺口'].sum())

# 输出女大学生的营养分析评价
print('\n女大学生的营养分析评价:\n')
print('总能量值:', df_female['总能量值'].sum())
print('总蛋白质:', df_female['总蛋白质'].sum())
print('总脂肪:', df_female['总脂肪'].sum())
print('总碳水化合物:', df_female['总碳水化合物'].sum())
print('蛋白质占总能量比例:', df_female['蛋白质占总能量比例'].mean())
print('脂肪占总能量比例:', df_female['脂肪占总能量比例'].mean())
print('碳水化合物占总能量比例:', df_female['碳水化合物占总能量比例'].mean())
print('蛋白质缺口:', df_female['蛋白质缺口'].sum())
print('脂肪缺口:', df_female['脂肪缺口'].sum())
print('碳水化合物缺口:', df_female['碳水化合物缺口'].sum())

# 对附件3中的食物信息进行分析,找出高蛋白质、低脂肪、低碳水化合物的食物
省略部分代码

问题二是基于附件 3 的日平衡膳食食谱的优化设计。

优化模型 1:以蛋白质氨基酸评分最大为目标的优化模型

设 x1, x2, ..., x6 分别表示早餐、午餐、晚餐、加餐1、加餐2、加餐3的食物选择情况,其中 x1, x2, x3, x4, x5, x6 取值为 0 或 1,表示选择或不选择。

设 P1, P2, ..., P6 分别表示早餐、午餐、晚餐、加餐1、加餐2、加餐3的蛋白质摄入量,单位为克。

设 A1, A2, ..., A6 分别表示早餐、午餐、晚餐、加餐1、加餐2、加餐3的蛋白质氨基酸评分,单位为毫克。

目标函数为:max Z = A1x1 + A2x2 + A3x3 + A4x4 + A5x5 + A6x6

约束条件为:

  1. 早餐、午餐、晚餐的总能量摄入量应符合能量参考摄入量的要求: P1 + P2 + P3 ≤ 2500

  2. 加餐的总能量摄入量不超过早餐、午餐、晚餐总能量摄入量的 10%: (P4 + P5 + P6) ≤ 0.1(P1 + P2 + P3)

  3. 早餐、午餐、晚餐的总脂肪摄入量应符合脂肪参考摄入量的要求: (P1 * 9 + P2 * 9 + P3 * 9) ≤ 25% * (P1 + P2 + P3) * 4

  4. 加餐的总脂肪摄入量不超过早餐、午餐、晚餐总脂肪摄入量的 10%: ((P4 * 9 + P5 * 9 + P6 * 9) ≤ 0.1 * (P1 * 9 + P2 * 9 + P3 * 9))

  5. 早餐、午餐、晚餐的总碳水化合物摄入量应符合碳水化合物参考摄入量的要求: (P1 * 4 + P2 * 4 + P3 * 4) ≤ 60% * (P1 + P2 + P3) * 4

  6. 加餐的总碳水化合物摄入量不超过早餐、午餐、晚餐总碳水化合物摄入量的 10%: ((P4 * 4 + P5 * 4 + P6 * 4) ≤ 0.1 * (P1 * 4 + P2 * 4 + P3 * 4))

  7. 早餐、午餐、晚餐的总胆固醇摄入量应符合胆固醇参考摄入量的要求: (P1 * 7.5 + P2 * 7.5 + P3 * 7.5) ≤ 25% * (P1 + P2 + P3) * 4

  8. 加餐的总胆固醇摄入量不超过早餐、午餐、晚餐总胆固醇摄入量的 10%: ((P4 * 7.5 + P5 * 7.5 + P6 * 7.5) ≤ 0.1 * (P1 * 7.5 + P2 * 7.5 + P3 * 7.5))

  9. 早餐、午餐、晚餐的蛋白质摄入量应符合蛋白质参考摄入量的要求: P1 + P2 + P3 ≥ 10% * (P1 + P2 + P3) * 4

  10. 加餐的总蛋白质摄入量不少于早餐、午餐、晚餐总蛋白质摄入量的 10%: (P4 + P5 + P6) ≥ 0.1 * (P1 + P2 + P3)

  11. 早餐、午餐、晚餐的蛋白质氨基酸评分应符合蛋白质氨基酸评分参考摄入量的要求: A1 + A2 + A3 ≥ 100% * (A1 + A2 + A3)

  12. 加餐的总蛋白质氨基酸评分不少于早餐、午餐、晚餐总蛋白质氨基酸评分的 10%: (A4 + A5 + A6) ≥ 0.1 * (A1 + A2 + A3)

  13. 早餐、午餐、晚餐的总纤维摄入量应符合纤维参考摄入量的要求: (P1 * 2 + P2 * 2 + P3 * 2) ≥ 80% * (P1 + P2 + P3) * 4

  14. 加餐的总纤维摄入量不少于早餐、午餐、晚餐总纤维摄入量的 10%: ((P4 * 2 + P5 * 2 + P6 * 2) ≥ 0.1 * (P1 * 2 + P2 * 2 + P3 * 2))

  15. 早餐、午餐、晚餐的总钙摄入量应符合钙参考摄入量的要求: (P1 * 0.3 + P2 * 0.3 + P3 * 0.3) ≥ 100% * (P1 + P2 + P3) * 4

  16. 加餐的总钙摄入量不少于早餐、午餐、晚餐总钙摄入量的 10%: ((P4 * 0.3 + P5 * 0.3 + P6 * 0.3) ≥ 0.1 * (P1 * 0.3 + P2 * 0.3 + P3 * 0.3))

  17. 早餐、午餐、晚餐的总铁摄入量应符合铁参考摄入量的要求: (P1 * 3 + P2 * 3 + P3 * 3) ≥ 100% * (P1 + P2 + P3) * 4

  18. 加餐的总铁摄入量不少于早餐、午餐、晚餐总铁摄入量的 10%: ((P4 * 3 + P5 * 3 + P6 * 3) ≥ 0.1 * (P1 * 3 + P2 * 3 + P3 * 3))

优化模型 2:以用餐费用最经济为目标的优化模型

设 x1, x2, ..., x6 分别表示早餐、午餐、晚餐、加餐1、加餐2、加餐3的食物选择情况,其中 x1, x2, x3, x4, x5, x6 取值为 0 或 1,表示选择或不选择。

设 P1, P2, ..., P6 分别表示早餐、午餐、晚餐、加餐1、加餐2、加餐3的食物价格。

目标函数为:min Z = P1x1 + P2x2 + P3x3 + P4x4 + P5x5 + P6x6

约束条件为:

  1. 早餐、午餐、晚餐的总能量摄入量应符合能量参考摄入量的要求: P1 + P2 + P3 ≤ 2500

  2. 加餐的总能量摄入量不超过早餐、午餐、晚餐总能量摄入量的 10%: (P4 + P5 + P6) ≤ 0.1(P1 + P2 + P3)

  3. 早餐、午餐、晚餐的总脂肪摄入量应符合脂肪参考摄入量的要求: (P1 * 9 + P2 * 9 + P3 * 9) ≤ 25% * (P1 + P2 + P3) * 4

  4. 加餐的总脂肪摄入量不超过早餐、午餐、晚餐总脂肪摄入量的 10%: ((P4 * 9 + P5 * 9 + P6 * 9) ≤ 0.1 * (P1 * 9 + P2 * 9 + P3 * 9))

  5. 早餐、午餐、晚餐的总碳水化合物摄入量应符合碳水化合物参考摄入量的要求: (P1 * 4 + P2 * 4 + P3 * 4) ≤ 60

基于附件 3 的日平衡膳食食谱的优化设计

对 1)—3)得到的日食谱进行比较分析。

通过比较分析,可以得出最优的日平衡膳食食谱。

该问题需要建立优化模型,以蛋白质氨基酸评分最大为目标,设计男生和女生的日食谱,并对该日食谱进行膳食营养评价。

问题 3是基于附件3的周平衡膳食食谱的优化设计。

根据附件3提供的高校学生食堂一日三餐的食物信息,我们需要设计男生和女生的周食谱,并进行评价及比较分析。因此,我们需要考虑以下因素:

  1. 蛋白质氨基酸评分最大:蛋白质是人体必需的营养物质,其氨基酸评分越高,表示蛋白质的质量越高,对身体发育和健康有重要作用。

  2. 用餐费用最经济:在设计周食谱时,我们也需要考虑用餐费用,确保周食谱的经济性。

  3. 兼顾蛋白质氨基酸评分及经济性:最终的周食谱应该兼顾蛋白质氨基酸评分和经济性,既保证蛋白质质量,又能控制用餐费用。

为了解决这个问题,我们可以采用线性规划的方法进行数学建模,建立如下的优化模型:

目标函数:最大化蛋白质氨基酸评分

约束条件: 1. 蛋白质总量应满足每日参考摄入量的要求; 2. 膳食总能量应满足每日参考摄入量的要求; 3. 每周的蛋白质氨基酸评分应满足每日的最低要求; 4. 每周的用餐费用应满足预算限制。

同时,我们也可以建立另一个目标函数来最小化用餐费用,约束条件与上述相同。

最后,我们可以将两个目标函数进行权衡,建立一个新的目标函数,如最大化蛋白质氨基酸评分同时最小化用餐费用,约束条件同样与上述相同。

通过求解这些优化模型,我们可以得到男生和女生的周食谱,然后进行膳食营养评价和比较分析,最终得出最优的周食谱设计。

在问题2的基础上,我们可以建立如下优化模型:

# 导入相关库
import numpy as np
import pandas as pd
import pulp

# 读取附件3中的数据
df = pd.read_excel('附件3.xlsx')

# 定义男生和女生的营养需求量
male_nutrients = {'能量': 2800, '蛋白质': 75, '脂肪': 20, '碳水化合物': 50, '维生素A': 900, '维生素B1': 1.4, '维生素B2': 1.6, '维生素C': 100, '钙': 800, '铁': 18, '锌': 15}
female_nutrients = {'能量': 2200, '蛋白质': 65, '脂肪': 20, '碳水化合物': 55, '维生素A': 700, '维生素B1': 1.1, '维生素B2': 1.2, '维生素C': 80, '钙': 700, '铁': 15, '锌': 12}

# 建立优化模型
def optimize(df, nutrients):
    # 创建问题
    prob = pulp.LpProblem("Diet Problem", pulp.LpMinimize)

    # 定义变量
    food_vars = pulp.LpVariable.dicts("Food", df['食物名称'], lowBound=0, cat='Integer')

    # 定义目标函数
    prob += pulp.lpSum([df['价格'][i] * food_vars[df['食物名称'][i]] for i in range(len(df))])

    # 添加约束条件
    # 总能量
    prob += pulp.lpSum([df['能量'][i] * food_vars[df['食物名称'][i]] for i in range(len(df))]) >= nutrients['能量']
    # 总蛋白质
    prob += pulp.lpSum([df['蛋白质'][i] * food_vars[df['食物名称'][i]] for i in range(len(df))]) >= nutrients['蛋白质']
    # 总脂肪
    prob += pulp.lpSum([df['脂肪'][i] * food_vars[df['食物名称'][i]] for i in range(len(df))]) >= nutrients['脂肪']
    # 总碳水化合物
    prob += pulp.lpSum([df['碳水化合物'][i] * food_vars[df['食物名称'][i]] for i in range(len(df))]) >= nutrients['碳水化合物']
    # 总维生素A
    prob += pulp.lpSum([df['维生素A'][i] * food_vars[df['食物名称'][i]] for i in range(len(df))]) >= nutrients['维生素A']
    # 总维生素B1
    prob += pulp.lpSum([df['维生素B1'][i] * food_vars[df['食物名称'][i]] for i in range(len(df))]) >= nutrients['维生素B1']
    # 总维生素B2
    prob += pulp.lpSum([df['维生素B2'][i] * food_vars[df['食物名称'][i]] for i in range(len(df))]) >= nutrients['维生素B2']
    # 总维生素C
    prob += pulp.lpSum([df['维生素C'][i] * food_vars[df['食物名称'][i]] for i in range(len(df))]) >= nutrients['维生素C']
    # 总钙
    prob += pulp.lpSum([df['钙'][i] * food_vars[df['食物名称'][i]] for i in range(len(df))]) >= nutrients['钙']
    # 总铁
    prob += pulp.lpSum([df['铁'][i] * food_vars[df['食物名称'][i]] for i in range(len(df))]) >= nutrients['铁']
    # 总锌
    prob += pulp.lpSum([df['锌'][i] * food_vars[df['食物名称'][i]] for i in range(len(df))]) >= nutrients['锌']

    # 求解问题
    prob.solve()

    # 输出结果
    print("Status:", pulp.LpStatus[prob.status])
    for v in prob.variables():
        if v.varValue > 0:
            print(v.name, "=", v.varValue)
    print("Total Cost = ", pulp.value(prob.objective))

# 以蛋白质氨基酸评分最大为目标建立优化模型
print("以蛋白质氨基酸评分最大为目标:")
optimize(df, male_nutrients)

# 以用餐费用最经济为目标建立优化模型
print("以用餐费用最经济为目标:")
optimize(df, male_nutrients)

省略代码

问题四是针对大学生饮食结构及习惯,写一份健康饮食、平衡膳食的倡议书。

尊敬的各位同学:

大学时光是人生中宝贵的阶段,也是我们培养健康饮食习惯的重要时期。一日三餐的饮食结构对于我们的身体健康和学习成绩都有着重要的影响。然而,现实中我们普遍存在着饮食不均衡的问题,如不吃早餐、经常食用外卖和快餐等。因此,我特别向大家发出健康饮食、平衡膳食的倡议。

首先,我们需要了解什么是健康饮食、平衡膳食。健康饮食是指每日摄入的食物能够提供我们所需的各种营养素,包括蛋白质、脂肪、碳水化合物、维生素、矿物质等。而平衡膳食是指每日摄入的食物能够保持各种营养素的平衡,避免某一种营养素过量或缺乏。只有健康饮食、平衡膳食才能保证我们的身体健康。

其次,我们需要掌握一些基本的营养知识,如各种营养素的作用、推荐摄入量等。这样我们才能合理安排每日的饮食,保证每天摄入足够的营养素。

最后,我们需要形成良好的饮食习惯。首先,每天都要吃早餐,早餐是一天中最重要的一餐,可以提供我们一天所需的能量和营养素。其次,尽量选择健康的食物,如多吃蔬菜水果、粗粮等,少吃油炸、加工食品。最后,合理安排每日的三餐,保证每天摄入各种营养素。

为了帮助大家更好地掌握健康饮食、平衡膳食的知识,我建议大家可以通过以下几个步骤来实现:

第一步,记录自己每日的饮食情况。可以使用手机软件或手工记录,包括每餐的食物名称、主要成分、食物编码、可食部分量等。

第二步,进行膳食营养评价。根据附件 4 中的平衡膳食基本准则、能量及各种营养素参考摄入量等指标要求,对自己的饮食情况进行分析评价,看看自己是否存在哪些不足。

第三步,根据评价结果进行调整改进。可以参考附件 3 中高校学生食堂提供的一日三餐主要食物信息,对自己的饮食进行调整,保证每天摄入足够的各种营养素。

第四步,养成良好的饮食习惯。通过实践,我们可以逐渐养成良好的饮食习惯,保证每天摄入健康、平衡的食物。

最后,我希望大家能够认识到健康饮食、平衡膳食的重要性,通过数学建模的方法来优化自己的饮食结构,保证身体健康,更好地投入到学习和工作中。谢谢大家!

但要注意,其实这里要针对大学生饮食结构及习惯,而这部分内容是要结合前三问的结果来综合分析撰写的。

由于篇幅过长

更多内容具体可以看看我的下方名片!
里面包含有本次竞赛一手资料与分析!
另外在赛中,我们也会陪大家一起解析建模比赛
记得关注Tina表姐哦~

  • 23
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值