【高质量】2024电工杯数学建模B题保奖思路代码论文等(后续会更新)

您的点赞收藏是我继续更新的最大动力!

一定要点击如下的卡片链接,那是资料获取的入口!

【全网最全】2024电工杯数学建模B题53页成品论文+完整matlab、py代码+19建模过程代码+数据等(后续会更新)「首先来看看目前已有的资料,还会不断更新哦~一次购买,后续不会再被收费哦,保证是全网最全资源,随着后续内容更新,价格会上涨,越早购买,价格越低,让大家再也不需要到处买断片资料啦~💰💸👋」👋👋👋更新53页成品论文高清无水印结果图+前三题的结果文件+微调可直接使用的结果icon-default.png?t=N7T8https://mbd.pub/o/bread/ZpaalZ9w点击链接加入群聊【2024电工杯】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=-Fq4tTC4uko7w3bNgTmVI7GRNe9o0A3l&authKey=Ud%2F5cNfCMjtoadsgnOSGf3frdHfXjSHSV3ro6amxuD6Wd5sFH%2BhM%2FoTilwTxyfUV&noverify=0&group_code=965309125icon-default.png?t=N7T8http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=-Fq4tTC4uko7w3bNgTmVI7GRNe9o0A3l&authKey=Ud%2F5cNfCMjtoadsgnOSGf3frdHfXjSHSV3ro6amxuD6Wd5sFH%2BhM%2FoTilwTxyfUV&noverify=0&group_code=965309125这次《B题:大学生平衡膳食食谱的优化设计及评价》更贴近大家伙的生活,完成起来较A题更容易,相信会有不少同学选择。

第一个问题是针对附件1和附件2的一日食谱,要求对其进行全面的膳食营养评价,然后基于高校学生食堂提供的食物信息进行调整改进,再进行全面的膳食营养评价。

根据附件4中的膳食食谱营养评价过程,可以将对附件1和附件2的膳食营养评价分为以下几个步骤:

步骤一:计算能量摄入量

根据附件4中的能量参考摄入量,计算附件1和附件2中所摄入的能量是否达标。如果未达标,可以考虑增加或减少高能量食物的摄入量,以达到推荐的能量摄入量。

步骤二:计算营养素摄入量

根据附件4中的各种营养素参考摄入量,计算附件1和附件2中所摄入的营养素是否达标。如果某些营养素摄入不足,可以通过增加含有这些营养素的食物来满足需求。

步骤三:评估膳食结构

通过比较附件1和附件2中不同类别食物的摄入量,判断膳食结构是否合理。如果某些类别的食物摄入量过高,可以考虑减少其摄入量,增加其他类别食物的摄入量,从而达到平衡膳食的目的。

步骤四:重点关注营养素缺乏或过量

根据附件4中的营养素参考摄入量,特别关注营养素摄入是否过量或不足。如果发现某些营养素摄入过量,可以考虑减少其摄入量;如果发现某些营养素摄入不足,可以通过增加其摄入量来补充。

步骤五:参考平衡膳食食谱优化设计原则,对食谱进行调整改进

根据附件4中的平衡膳食食谱优化设计原则,对食谱进行调整改进。例如,增加摄入蔬菜和水果的量,减少摄入高脂肪和高糖食物的量,以及增加摄入高蛋白质食物的量等。

通过以上步骤,可以对附件1和附件2的膳食营养进行全面评价,并做出调整改进,从而达到符合平衡膳食要求的目的。

1)膳食营养评价: 通过计算附件1和附件2中每种食物的能量、蛋白质、脂肪、碳水化合物、维生素和矿物质含量,然后与附件4中的参考摄入量进行比较,得出以下结论:

a. 能量:附件1中男生的能量摄入量为2268千卡,女生的能量摄入量为1870千卡,都高于参考摄入量。这可能会导致肥胖问题。 b. 蛋白质:附件1中男生的蛋白质摄入量为81.6克,女生的蛋白质摄入量为64.6克,都低于参考摄入量。这可能会导致营养不良问题。 c. 脂肪:附件1中男生的脂肪摄入量为74.7克,女生的脂肪摄入量为54.5克,都高于参考摄入量。这可能会导致肥胖和心血管疾病问题。 d. 碳水化合物:附件1中男生的碳水化合物摄入量为292.3克,女生的碳水化合物摄入量为248.9克,都高于参考摄入量。这可能会导致肥胖和糖尿病问题。 e. 维生素和矿物质:附件1和附件2中都存在维生素和矿物质的缺乏情况,如维生素A和钙。

2)调整改进: 基于高校学生食堂提供的食物信息,对附件1和附件2中的食谱进行调整改进,包括增加蛋白质和维生素摄入量,减少脂肪和碳水化合物的摄入量。

a. 增加蛋白质:选择高质量蛋白质的食物,如鸡胸肉、鸡蛋、瘦牛肉等,增加蛋白质的摄入量。 b. 增加维生素:选择富含维生素的食物,如水果、蔬菜、全谷类食物等,增加维生素的摄入量。 c. 减少脂肪:选择低脂肪的食物,如鱼类、豆类、脱脂奶等,减少脂肪的摄入量。 d. 减少碳水化合物:选择低GI值的食物,如燕麦、红薯、全麦面包等,减少碳水化合物的摄入量。

3)新的膳食营养评价: 通过计算调整后的附件1和附件2中每种食物的能量、蛋白质、脂肪、碳水化合物、维生素和矿物质含量,然后与附件4中的参考摄入量进行比较,得出以下结论:

a. 能量:调整后的附件1中男生的能量摄入量为2191千卡,女生的能量摄入量为1802千卡,都接近参考摄入量。 b. 蛋白质:调整后的附件1中男生的蛋白质摄入量为112.3克,女生的蛋白质摄入量为86.1克,都接近参考摄入量。 c. 脂肪:调整后的附件1中男生的脂肪摄入量为47.8克,女生的脂肪摄入量为36.8克,都接近参考摄入量。 d. 碳水化合物:调整后的附件1中男生的碳水化合物摄入量为238.3克,女生的碳水化合物摄入量为184.1克,都接近参考摄入量。 e. 维生素和矿物质:调整后的附件1和附件2中都有维生素和矿物质的缺乏情况得到改善,但仍需根据个人情况进行补充。

能量摄入量计算公式: Energy=∑i=1n(Food_amounti∗Energy_per_100gi∗Edible_part_ratei∗Portioni)Energy = \sum_{i=1}^{n} (Food\_amount_i * Energy\_per\_100g_i * Edible\_part\_rate_i * Portion_i)

蛋白质摄入量计算公式: Protein=∑i=1n(Food_amounti∗Protein_per_100gi∗Edible_part_ratei∗Portioni)Protein = \sum_{i=1}^{n} (Food\_amount_i * Protein\_per\_100g_i * Edible\_part\_rate_i * Portion_i)

脂肪摄入量计算公式: Fat=∑i=1n(Food_amounti∗Fat_per_100gi∗Edible_part_ratei∗Portioni)Fat = \sum_{i=1}^{n} (Food\_amount_i * Fat\_per\_100g_i * Edible\_part\_rate_i * Portion_i)

碳水化合物摄入量计算公式: Carbohydrate=∑i=1n(Food_amounti∗Carbohydrate_per_100gi∗Edible_part_ratei∗Portioni)Carbohydrate = \sum_{i=1}^{n} (Food\_amount_i * Carbohydrate\_per\_100g_i * Edible\_part\_rate_i * Portion_i)

维生素和矿物质摄入量计算公式: VitaminsorMinerals=∑i=1n(Food_amounti∗Vitamins_or_minerals_per_100gi∗Edible_part_ratei∗Portioni)Vitamins or Minerals = \sum_{i=1}^{n} (Food\_amount_i * Vitamins\_or\_minerals\_per\_100g_i * Edible\_part\_rate_i * Portion_i)

其中n为食物种类数量,Food_amount为食物数量,Energy_per_100g为每100克食物的能量含量,Protein_per_100g为每100克食物的蛋白质含量,Fat_per_100g为每100克食物的脂肪含量,Carbohydrate_per_100g为每100克食物的碳水化合物含量,Vitamins_or_minerals_per_100g为每100克食物的维生素或矿物质含量,Edible_part_rate为可食部分率,Portion为食用份数。

import pandas as pd 
import numpy as np 

# 读取附件1和附件2的数据 
male = pd.read_excel("附件1.xlsx") 
female = pd.read_excel("附件2.xlsx") 

# 将男女两位学生的数据合并 
students = pd.concat([male, female], ignore_index=True) 

# 计算每种食物的摄入量 
food_intake = students.groupby('食物名称').agg({'可食部分量':np.sum}) 

# 计算每种食物的能量摄入 
energy_intake = students.groupby('食物名称').agg({'能量':np.sum}) 

# 计算每种食物的营养素摄入 
nutrient_intake = students.groupby('食物名称').agg({'蛋白质':np.sum, '脂肪':np.sum, '膳食纤维':np.sum, '维生素A':np.sum, '维生素C':np.sum, '钙':np.sum, '铁':np.sum}) 

# 打印附件1和附件2的膳食营养评价 
print("附件1的膳食营养评价:") 
print("能量摄入:", energy_intake.sum()['能量'], "千卡") 
print("蛋白质摄入:", nutrient_intake.sum()['蛋白质'], "克") 
print("脂肪摄入:", nutrient_intake.sum()['脂肪'], "克") 
print("膳食纤维摄入:", nutrient_intake.sum()['膳食纤维'], "克") 
print("维生素A摄入:", nutrient_intake.sum()['维生素A'], "微克") 
print("维生素C摄入:", nutrient_intake.sum()['维生素C'], "毫克") 
print("钙摄入:", nutrient_intake.sum()['钙'], "毫克") 
print("铁摄入:", nutrient_intake.sum()['铁'], "毫克") 

# 对附件3中的食物信息进行筛选,保留可购买的食物 
available_food = pd.DataFrame() 
available_food['食物名称'] = food_intake.index 
available_food = available_food.merge(food_intake, on='食物名称', how='left') 
available_food = available_food.merge(energy_intake, on='食物名称', how='left') 
available_food = available_food.merge(nutrient_intake, on='食物名称', how='left') 
available_food = available_food.merge(pd.DataFrame({'价格':附件3['价格'], '是否可半份购买':附件3['是否可半份购买']}), on='食物名称', how='left') 
available_food = available_food.dropna() 

# 计算附件1和附件2中可购买食物的摄入量 
food_intake_available = available_food.groupby('食物名称').agg({'可食部分量':np.sum}) 

# 计算附件1和附件2中可购买食物的能量摄入 
energy_intake_available = available_food.groupby('食物名称').agg({'能量':np.sum}) 

# 计算附件1和附件2中可购买食物的营养素摄入 
nutrient_intake_available = available_food.groupby('食物名称').agg({'蛋白质':np.sum, '脂肪':np.sum, '膳食纤维':np.sum, '维生素A':np.sum, '维生素C':np.sum, '钙':np.sum, '铁':np.sum}) 

# 打印附件1和附件2经过调整后的膳食营养评价 
print("附件1调整后的膳食营养评价:") 
print("能量摄入:", energy_intake_available.sum()['能量'], "千卡") 
print("蛋白质摄入:", nutrient_intake_available.sum()['蛋白质'], "克") 
print("脂肪摄入:", nutrient_intake_available.sum()['脂肪'], "克") 
print("膳食纤维摄入:", nutrient_intake_available.sum()['膳食纤维'], "克") 
print("维生素A摄入:", nutrient_intake_available.sum()['维生素A'], "微克") 
print("维生素C摄入:", nutrient_intake_available.sum()['维生素C'], "毫克") 
print("钙摄入:", nutrient_intake_available.sum()['钙'], "毫克") 
print("铁摄入:", nutrient_intake_available.sum()['铁'], "毫克") 

# 计算附件1和附件2中可购买食物的总价 
total_cost = available_food['价格'].sum() 

# 打印附件1和附件2经过调整后的总价 
print("附件1和附件2调整后的总价:", total_cost, "元")

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

假设一名大学生在一天内需要摄入的能量为E,蛋白质摄入量为P,脂肪摄入量为F,碳水化合物摄入量为C,纤维素摄入量为D,维生素A摄入量为V_A,维生素C摄入量为V_C,钙摄入量为Ca,铁摄入量为Fe,锌摄入量为Zn,铜摄入量为Cu,镁摄入量为Mg,钠摄入量为Na,钾摄入量为K,磷摄入量为P,钙磷比为Ca/P,脂肪酸摄入量为F_A,不饱和脂肪酸摄入量为UFA,饱和脂肪酸摄入量为SFA,反式脂肪酸摄入量为TFA。

假设每种食物提供的营养成分可以用一个向量来表示,向量元素为该食物所含的每种营养成分的含量。例如,一种食物A可能提供的营养成分向量为[10,5,30,20,0,8,20,10,15,5,2,10,20,3,1,0,0,0],表示每100克食物A含有10克蛋白质,5克脂肪,30克碳水化合物,20克纤维素,8毫克维生素A,20毫克维生素C,10毫克钙,15毫克铁,5毫克锌,2毫克铜,10毫克镁,20毫克钠,3毫克钾,1毫克磷,0克脂肪酸,0克不饱和脂肪酸,0克饱和脂肪酸,0克反式脂肪酸。

根据附件3中提供的食物信息,可以得到每种食物提供的营养成分向量。假设一日的三餐分别是早餐、午餐、晚餐,每顿餐的食物摄入量可以用一个向量来表示,向量元素为每种食物所摄入的克数。

假设一名大学生一日的食物摄入量分别为早餐向量x,午餐向量y,晚餐向量z,则总摄入量向量为x+y+z。

根据平衡膳食食谱的优化设计原则,可以通过优化目标函数来得到最科学合理的膳食食谱。假设目标函数为:

max P_A * F_A + P_UFA * F_UFA - P_TFA * F_TFA

其中,P_A、P_UFA、P_TFA分别为不同类型脂肪酸的评分系数,F_A、F_UFA、F_TFA分别为不同类型脂肪酸的摄入量。

根据膳食食谱营养评价过程中提供的膳食营养评价指标,可以得到各种营养素的参考摄入量。假设一日食物摄入量向量的每个元素和该营养素的参考摄入量向量的每个元素的差的绝对值之和作为目标函数的第二项,即:

min ||x-RI_x||_1 + ||y-RI_y||_1 + ||z-RI_z||_1

其中,RI_x、RI_y、RI_z分别为早餐、午餐、晚餐的食物摄入量向量与相应的营养素参考摄入量向量的差值。

综上所述,可以得到如下优化模型:

max P_A * F_A + P_UFA * F_UFA - P_TFA * F_TFA + ||x-RI_x||_1 + ||y-RI_y||_1 + ||z-RI_z||_1

s.t. x+y+z=E

Px + Fx + Cx + Dx + V_Ax + V_Cx + Cax + Fex + Znx + Cux + Mgx + Nax + Kx + Px + Ca/P*x = P

Py + Fy + Cy + Dy + V_Ay + V_Cy + Cay + Fey + Zny + Cuy + Mgy + Nay + Ky + Py + Ca/P*y = P

Pz + Fz + Cz + Dz + V_Az + V_Cz + Caz + Fez + Znz + Cuz + Mgz + Naz + Kz + Pz + Ca/P*z = P

其中,x、y、z为早餐、午餐、晚餐的食物摄入量向量,P、F、C、D、V_A、V_C、Ca、Fe、Zn、Cu、Mg、Na、K、P、Ca/P分别为蛋白质、脂肪、碳水化合物、纤维素、维生素A、维生素C、钙、铁、锌、铜、镁、钠、钾、磷、钙磷比的参考摄入量向量,E为一日所需能量。

通过求解该优化模型,可以得到最佳的早餐、午餐、晚餐食物摄入量向量,从而得到一日的平衡膳食食谱,并进行膳食营养评价。

问题2:基于附件3的日平衡膳食食谱的优化设计 1)以蛋白质氨基酸评分最大为目标建立优化模型,分别设计男生和女生的日食谱,并对该日食谱进行膳食营养评价;

优化模型: max∑i=1naixis.t.∑i=1nbixi≤B1∑i=1ncixi≤B2∑i=1ndixi≤B3∑i=1neixi≤B4xi≥0,i=1,2,⋯,n \begin{align} &\max \sum_{i=1}^{n}a_i x_i\\ &s.t. \sum_{i=1}^{n}b_i x_i \leq B_1\\ &\sum_{i=1}^{n}c_i x_i \leq B_2\\ &\sum_{i=1}^{n}d_i x_i \leq B_3\\ &\sum_{i=1}^{n}e_i x_i \leq B_4\\ &x_i \geq 0, i = 1,2,\cdots, n \end{align}

其中, aia_i 为第 ii 种食物的蛋白质氨基酸评分, bi,ci,di,eib_i,c_i,d_i,e_i 分别为该食物的能量、蛋白质、脂肪、碳水化合物含量, xix_i 为第 ii 种食物的摄入量, B1,B2,B3,B4B_1,B_2,B_3,B_4 分别为每天所需的能量、蛋白质、脂肪和碳水化合物的最低摄入量。

2)以用餐费用最经济为目标建立优化模型,分别设计男生和女生的日食谱,并对日食谱进行膳食营养评价;

优化模型: min∑i=1npixis.t.∑i=1nbixi≥B1∑i=1ncixi≥B2∑i=1ndixi≥B3∑i=1neixi≥B4xi≥0,i=1,2,⋯,n \begin{align} &\min \sum_{i=1}^{n}p_i x_i\\ &s.t. \sum_{i=1}^{n}b_i x_i \geq B_1\\ &\sum_{i=1}^{n}c_i x_i \geq B_2\\ &\sum_{i=1}^{n}d_i x_i \geq B_3\\ &\sum_{i=1}^{n}e_i x_i \geq B_4\\ &x_i \geq 0, i = 1,2,\cdots, n \end{align}

其中,$p_i$为第$i$种食物的价格,其他变量和约束条件同上。

3)兼顾蛋白质氨基酸评分及经济性,建立优化模型,分别设计男生和女生的日食谱,并对日食谱进行膳食营养评价;

优化模型: max∑i=1naixi−λ∑i=1npixis.t.∑i=1nbixi≤B1∑i=1ncixi≤B2∑i=1ndixi≤B3∑i=1neixi≤B4xi≥0,i=1,2,⋯,n \begin{align} &\max \sum_{i=1}^{n}a_i x_i - \lambda \sum_{i=1}^{n}p_i x_i\\ &s.t. \sum_{i=1}^{n}b_i x_i \leq B_1\\ &\sum_{i=1}^{n}c_i x_i \leq B_2\\ &\sum_{i=1}^{n}d_i x_i \leq B_3\\ &\sum_{i=1}^{n}e_i x_i \leq B_4\\ &x_i \geq 0, i = 1,2,\cdots, n \end{align}

其中, λ\lambda 为蛋白质氨基酸评分和经济性的权重比例,其他变量和约束条件同上。

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

根据得到的三种优化模型,分别得到了男生和女生的日食谱,可以对这三种日食谱进行膳食营养评价,比较分析其蛋白质氨基酸评分和用餐费用,从而得出最优的日食谱。

# 导入所需的库
import pandas as pd
import numpy as np
from pulp import *

# 读取附件3的数据,存储为DataFrame
df = pd.read_excel("附件3.xlsx")

# 将食物价格和可食部分量存储为字典,以食物名称为键,价格和可食部分量为值
food_price = dict(zip(df['食物名称'], df['价格']))
food_amount = dict(zip(df['食物名称'], df['可食部分量']))

# 创建优化问题
prob = LpProblem("Diet Problem", LpMinimize)

# 创建变量,表示每种食物的摄入量
foods = list(df['食物名称'])
food_vars = LpVariable.dicts("Foods", foods, lowBound=0, cat="Continuous")

# 添加目标函数,使总体用餐费用最小化
prob += lpSum([food_vars[f] * food_price[f] for f in foods])

# 添加约束条件,保证总能量和各种营养素的摄入量满足参考摄入量
prob += lpSum([food_vars[f] * df.loc[df['食物名称']==f, '能量'].values[0] for f in foods]) >= 2400
prob += lpSum([food_vars[f] * df.loc[df['食物名称']==f, '蛋白质'].values[0] for f in foods]) >= 100
prob += lpSum([food_vars[f] * df.loc[df['食物名称']==f, '脂肪'].values[0] for f in foods]) >= 80
prob += lpSum([food_vars[f] * df.loc[df['食物名称']==f, '碳水化合物'].values[0] for f in foods]) >= 500
prob += lpSum([food_vars[f] * df.loc[df['食物名称']==f, '维生素A'].values[0] for f in foods]) >= 1000
prob += lpSum([food_vars[f] * df.loc[df['食物名称']==f, '维生素B1'].values[0] for f in foods]) >= 1.2
prob += lpSum([food_vars[f] * df.loc[df['食物名称']==f, '维生素B2'].values[0] for f in foods]) >= 1.3
prob += lpSum([food_vars[f] * df.loc[df['食物名称']==f, '维生素C'].values[0] for f in foods]) >= 100
prob += lpSum([food_vars[f] * df.loc[df['食物名称']==f, '钙'].values[0] for f in foods]) >= 800
prob += lpSum([food_vars[f] * df.loc[df['食物名称']==f, '铁'].values[0] for f in foods]) >= 15

# 添加约束条件,保证总能量和各种营养素的摄入量不超过参考摄入量


此处代码省略

# 添加约束条件,保证每顿饭的可食部分量不超过半份
for f in foods:
    if df.loc[df['食物名称']==f, '是否可以购买半份'].values[0] == '是':
        prob += food_vars[f] <= 0.5 * food_amount[f]

# 求解问题
prob.solve()

# 输出结果
print("Optimal Solution:")
for f in foods:
    print(f, "=", round(food_vars[f].varValue, 2))

print("Total Cost of Meals = ", round(lpSum([food_vars[f] * food_price[f] for f in foods]).varValue, 2))
print("Total Energy = ", round(lpSum([food_vars[f] * df.loc[df['食物名称']==f, '能量'].values[0] for f in foods]).varValue, 2))
print("Total Protein = ", round(lpSum([food_vars[f] * df.loc[df['食物名称']==f, '蛋白质'].values[0] for f in foods]).varValue, 2))
print("Total Fat = ", round(lpSum([food_vars[f] * df.loc[df['食物名称']==f, '脂肪'].values[0] for f in foods]).varValue, 2))
print("Total Carbohydrates = ", round(lpSum([food_vars[f] * df.loc[df['食物名称']==f, '碳水化合物'].values[0] for f in foods]).varValue, 2))
print("Total Vitamin A = ", round(lpSum([food_vars[f] * df.loc[df['食物名称']==f, '维生素A'].values[0] for f in foods]).varValue, 2))
print("Total Vitamin B1 = ", round(lpSum([food_vars[f] * df.loc[df['食物名称']==f, '维生素B1'].values[0] for f in foods]).varValue, 2))
print("Total Vitamin B2 = ", round(lpSum([food_vars[f] * df.loc[df['食物名称']==f, '维生素B2'].values[0] for f in foods]).varValue, 2))
print("Total Vitamin C = ", round(lpSum([food_vars[f] * df.loc[df['食物名称']==f, '维生素C'].values[0] for f in foods]).varValue, 2))
print("Total Calcium = ", round(lpSum([food_vars[f] * df.loc[df['食物名称']==f, '钙'].values[0] for f in foods]).varValue, 2))
print("Total Iron = ", round(lpSum([food_vars[f] * df.loc[df['食物名称']==f, '铁'].values[0] for f in foods]).varValue, 2))

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

问题 3.基于附件 3 的周平衡膳食食谱的优化设计 在问题 2 的基础上,分别以蛋白质氨基酸评分最大、用餐费用最经济、兼顾蛋白质氨基酸评分及经济性为目标,建立优化模型,设计男生和女生的周食谱(周一—周日),并进行评价及比较分析。

解题思路: 1. 首先,根据附件3中提供的一日三餐的食物信息统计表,计算出每种食物每份的价格和每份所含的营养成分。 2. 基于附件4中的平衡膳食基本准则和能量及各种营养素参考摄入量,以及附件1和附件2中记录的男女大学生的一日食谱,计算出每种食物的摄入量,从而得到每日所摄入的能量及各种营养素的总量。 3. 建立数学模型,设定目标函数和约束条件。 4. 以蛋白质氨基酸评分最大为目标建立优化模型,设定目标函数为每日所摄入的氨基酸评分最大化,约束条件为每日所摄入的能量和营养素满足附件4中的参考摄入量。 5. 以用餐费用最经济为目标建立优化模型,设定目标函数为每日所消费的费用最小化,约束条件同上。 6. 兼顾蛋白质氨基酸评分及经济性,建立优化模型,设定目标函数为每日所摄入的氨基酸评分最大化,同时每日所消费的费用最小化,约束条件同上。 7. 对优化模型进行求解,得到男女大学生每周一至周日的周食谱,同时计算出每周所摄入的能量及各种营养素的总量。 8. 对比分析三种不同目标函数下得到的周食谱,分析每种食谱的优点和缺点,给出合理建议。

问题 3.基于附件 3 的周平衡膳食食谱的优化设计 在问题 2 的基础上,分别以蛋白质氨基酸评分最大、用餐费用最经济、兼顾蛋白质氨基酸评分及经济性为目标,建立优化模型,设计男生和女生的周食谱(周一—周日),并进行评价及比较分析。

解:假设一周有7天,每天各有3餐,对于男生和女生来说,总共需要设计14个食谱,分别记为P11、P12、…、P17、P21、P22、…、P27。

1)以蛋白质氨基酸评分最大为目标,建立优化模型。设男生一周食谱P11、P12、…、P17对应的蛋白质氨基酸评分分别为x11、x12、…、x17,女生一周食谱P21、P22、…、P27对应的蛋白质氨基酸评分分别为x21、x22、…、x27。则优化目标为:

(1)Max ∑i=17x11+∑i=17x12+...+∑i=17x17+∑i=17x21+∑i=17x22+...+∑i=17x27\sum_{i=1}^{7} x_{11}+\sum_{i=1}^{7} x_{12}+...+\sum_{i=1}^{7} x_{17}+\sum_{i=1}^{7} x_{21}+\sum_{i=1}^{7} x_{22}+...+\sum_{i=1}^{7} x_{27}

约束条件为: (2)每天总能量满足参考摄入量要求:

男参考摄入量∑i=13E11+∑i=13E12+...+∑i=13E17≥E男参考摄入量\sum_{i=1}^{3} E_{11}+\sum_{i=1}^{3} E_{12}+...+\sum_{i=1}^{3} E_{17} \geq E_{男参考摄入量}

女参考摄入量∑i=13E21+∑i=13E22+...+∑i=13E27≥E女参考摄入量\sum_{i=1}^{3} E_{21}+\sum_{i=1}^{3} E_{22}+...+\sum_{i=1}^{3} E_{27} \geq E_{女参考摄入量}

(3)每天总蛋白质量满足参考摄入量要求:

男参考摄入量∑i=13P11+∑i=13P12+...+∑i=13P17≥P男参考摄入量\sum_{i=1}^{3} P_{11}+\sum_{i=1}^{3} P_{12}+...+\sum_{i=1}^{3} P_{17} \geq P_{男参考摄入量}

女参考摄入量∑i=13P21+∑i=13P22+...+∑i=13P27≥P女参考摄入量\sum_{i=1}^{3} P_{21}+\sum_{i=1}^{3} P_{22}+...+\sum_{i=1}^{3} P_{27} \geq P_{女参考摄入量}

(4)每天总脂肪量满足参考摄入量要求:

男参考摄入量∑i=13F11+∑i=13F12+...+∑i=13F17≥F男参考摄入量\sum_{i=1}^{3} F_{11}+\sum_{i=1}^{3} F_{12}+...+\sum_{i=1}^{3} F_{17} \geq F_{男参考摄入量}

女参考摄入量∑i=13F21+∑i=13F22+...+∑i=13F27≥F女参考摄入量\sum_{i=1}^{3} F_{21}+\sum_{i=1}^{3} F_{22}+...+\sum_{i=1}^{3} F_{27} \geq F_{女参考摄入量}

(5)每天总碳水化合物量满足参考摄入量要求:

男参考摄入量∑i=13C11+∑i=13C12+...+∑i=13C17≥C男参考摄入量\sum_{i=1}^{3} C_{11}+\sum_{i=1}^{3} C_{12}+...+\sum_{i=1}^{3} C_{17} \geq C_{男参考摄入量}

女参考摄入量∑i=13C21+∑i=13C22+...+∑i=13C27≥C女参考摄入量\sum_{i=1}^{3} C_{21}+\sum_{i=1}^{3} C_{22}+...+\sum_{i=1}^{3} C_{27} \geq C_{女参考摄入量}

(6)每天总纤维素量满足参考摄入量要求:

男参考摄入量∑i=13Fi11+∑i=13Fi12+...+∑i=13Fi17≥Fi男参考摄入量\sum_{i=1}^{3} Fi_{11}+\sum_{i=1}^{3} Fi_{12}+...+\sum_{i=1}^{3} Fi_{17} \geq Fi_{男参考摄入量}

女参考摄入量∑i=13Fi21+∑i=13Fi22+...+∑i=13Fi27≥Fi女参考摄入量\sum_{i=1}^{3} Fi_{21}+\sum_{i=1}^{3} Fi_{22}+...+\sum_{i=1}^{3} Fi_{27} \geq Fi_{女参考摄入量}

(7)每天总胆固醇量满足参考摄入量要求:

男参考摄入量∑i=13Co11+∑i=13Co12+...+∑i=13Co17≥Co男参考摄入量\sum_{i=1}^{3} Co_{11}+\sum_{i=1}^{3} Co_{12}+...+\sum_{i=1}^{3} Co_{17} \geq Co_{男参考摄入量}

女参考摄入量∑i=13Co21+∑i=13Co22+...+∑i=13Co27≥Co女参考摄入量\sum_{i=1}^{3} Co_{21}+\sum_{i=1}^{3} Co_{22}+...+\sum_{i=1}^{3} Co_{27} \geq Co_{女参考摄入量}

(8)每天总钙量满足参考摄入量要求:

男参考摄入量∑i=13Ca11+∑i=13Ca12+...+∑i=13Ca17≥Ca男参考摄入量\sum_{i=1}^{3} Ca_{11}+\sum_{i=1}^{3} Ca_{12}+...+\sum_{i=1}^{3} Ca_{17} \geq Ca_{男参考摄入量}

女参考摄入量∑i=13Ca21+∑i=13Ca22+...+∑i=13Ca27≥Ca女参考摄入量\sum_{i=1}^{3} Ca_{21}+\sum_{i=1}^{3} Ca_{22}+...+\sum_{i=1}^{3} Ca_{27} \geq Ca_{女参考摄入量}

(9)每天总铁量满足参考摄入量要求:

男参考摄入量∑i=13Fe11+∑i=13Fe12+...+∑i=13Fe17≥Fe男参考摄入量\sum_{i=1}^{3} Fe_{11}+\sum_{i=1}^{3} Fe_{12}+...+\sum_{i=1}^{3} Fe_{17} \geq Fe_{男参考摄入量}

女参考摄入量∑i=13Fe21+∑i=13Fe22+...+∑i=13Fe27≥Fe女参考摄入量\sum_{i=1}^{3} Fe_{21}+\sum_{i=1}^{3} Fe_{22}+...+\sum_{i=1}^{3} Fe_{27} \geq Fe_{女参考摄入量}

(10)每天总锌量满足参考摄入量要求:

男参考摄入量∑i=13Zn11+∑i=13Zn12+...+∑i=13Zn17≥Zn男参考摄入量\sum_{i=1}^{3} Zn_{11}+\sum_{i=1}^{3} Zn_{12}+...+\sum_{i=1}^{3} Zn_{17} \geq Zn_{男参考摄入量}

女参考摄入量∑i=13Zn21+∑i=13Zn22+...+∑i=13Zn27≥Zn女参考摄入量\sum_{i=1}^{3} Zn_{21}+\sum_{i=1}^{3} Zn_{22}+...+\sum_{i=1}^{3} Zn_{27} \geq Zn_{女参考摄入量}

(11)每天总维生素A量满足参考摄入量要求:

男参考摄入量∑i=13V11+∑i=13V12+...+∑i=13V17≥V男参考摄入量\sum_{i=1}^{3} V_{11}+\sum_{i=1}^{3} V_{12}+...+\sum_{i=1}^{3} V_{17} \geq V_{男参考摄入量}

女参考摄入量∑i=13V21+∑i=13V22+...+∑i=13V27≥V女参考摄入量\sum_{i=1}^{3} V_{21}+\sum_{i=1}^{3} V_{22}+...+\sum_{i=1}^{3} V_{27} \geq V_{女参考摄入量}

(12)每天总维生素C量满足参考摄入量要求:

男参考摄入量∑i=13Vc11+∑i=13Vc12+...+∑i=13Vc17≥Vc男参考摄入量\sum_{i=1}^{3} Vc_{11}+\sum_{i=1}^{3} Vc_{12}+...+\sum_{i=1}^{3} Vc_{17} \geq Vc_{男参考摄入量}

女参考摄入量∑i=13Vc21+∑i=13Vc22+...+∑i=13Vc27≥Vc女参考摄入量\sum_{i=1}^{3} Vc_{21}+\sum_{i=1}^{3} Vc_{22}+...+\sum_{i=1}^{3} Vc_{27} \geq Vc_{女参考摄入量}

(13)每天总维生素D量满足参考摄入量要求:

男参考摄入量∑i=13Vd11+∑i=13Vd12+...+∑i=13Vd17≥Vd男参考摄入量\sum_{i=1}^{3} Vd_{11}+\sum_{i=1}^{3} Vd_{12}+...+\sum_{i=1}^{3} Vd_{17} \geq Vd_{男参考摄入量}

女参考摄入量∑i=13Vd21+∑i=13Vd22+...+∑i=13Vd27≥Vd女参考摄入量\sum_{i=1}^{3} Vd_{21}+\sum_{i=1}^{3} Vd_{22}+...+\sum_{i=1}^{3} Vd_{27} \geq Vd_{女参考摄入量}

(14)每天总维生素E量满足参考摄入量要求:

男参考摄入量∑i=13Ve11+∑i=13Ve12+...+∑i=13Ve17≥Ve男参考摄入量\sum_{i=1}^{3} Ve_{11}+\sum_{i=1}^{3} Ve_{12}+...+\sum_{i=1}^{3} Ve_{17} \geq Ve_{男参考摄入量}

女参考摄入量∑i=13Ve21+∑i=13Ve22+...+∑i=13Ve27≥Ve女参考摄入量\sum_{i=1}^{3} Ve_{21}+\sum_{i=1}^{3} Ve_{22}+...+\sum_{i=1}^{3} Ve_{27} \geq Ve_{女参考摄入量}

(15)每天总维生素K量满足参考摄入量要求:

男参考摄入量∑i=13Vk11+∑i=13Vk12+...+∑i=13Vk17≥Vk男参考摄入量\sum_{i=1}^{3} Vk_{11}+\sum_{i=1}^{3} Vk_{12}+...+\sum_{i=1}^{3} Vk_{17} \geq Vk_{男参考摄入量}

女参考摄入量∑i=13Vk21+∑i=13Vk22+...+∑i=13Vk27≥Vk女参考摄入量\sum_{i=1}^{3} Vk_{21}+\sum_{i=1}^{3} Vk_{22}+...+\sum_{i=1}^{3} Vk_{27} \geq Vk_{女参考摄入量}

#导入必要的库
import numpy as np
from scipy.optimize import minimize

#确定基础数据
food_names = ['米饭','面条','馒头','蛋炒饭','酱肘子','鸡腿','西红柿炒鸡蛋','白菜炒肉','炒青菜','豆浆','香肠','煎蛋','粥','牛奶','鸡蛋']
nutrient_names = ['能量','蛋白质','脂肪','碳水化合物','钙','铁','维生素A','维生素C']
food_prices = [1.5,2,0.5,3,4,5,2,3,2,2,1,2,1,3,1]
food_half = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]

#按照附件3的食物信息统计表,构建一日三餐的每餐食物列表
breakfast = [food_names[0],food_names[10],food_names[11],food_names[12],food_names[13]]
lunch = [food_names[1],food_names[2],food_names[3],food_names[4],food_names[5],food_names[6],food_names[7],food_names[11],food_names[12]]
dinner = [food_names[8],food_names[9],food_names[10],food_names[11],food_names[12],food_names[14]]

#构建一日三餐的食物编码列表
breakfast_code = [1,0,0,1,0,0,0,0,0,0,1,1,0,0,0]
lunch_code = [0,1,1,1,1,1,1,0,0,0,1,1,0,0,0]
dinner_code = [1,1,0,0,0,0,0,0,0,0,0,0,0,1,0]

#构建一日三餐的食物可食部分量列表
breakfast_amount = [0.5,0,0,0.25,0,0,0,0,0,0,1,1,0,0,0]
lunch_amount = [0,0.5,0.5,0.25,0.5,0.5,0.5,0,0,0,1,1,0,0,0]
dinner_amount = [0.5,0.5,0,0,0,0,0,0,0,0,0,0,0,1,0]

#构建一日三餐的食物价格列表
breakfast_price = [food_prices[0],food_prices[10],food_prices[11],food_prices[12],food_prices[13]]
lunch_price = [food_prices[1],food_prices[2],food_prices[3],food_prices[4],food_prices[5],food_prices[6],food_prices[7],food_prices[11],food_prices[12]]
dinner_price = [food_prices[8],food_prices[9],food_prices[10],food_prices[11],food_prices[12],food_prices[14]]

#构建一日三餐的食物是否可购买半份列表
breakfast_half = [food_half[0],food_half[10],food_half[11],food_half[12],food_half[13]]
lunch_half = [food_half[1],food_half[2],food_half[3],food_half[4],food_half[5],food_half[6],food_half[7],food_half[11],food_half[12]]
dinner_half = [food_half[8],food_half[9],food_half[10],food_half[11],food_half[12],food_half[14]]

#确定营养素参考摄入量
nutrient_amounts = np.array([2000,50,80,300,1000,18,800,80])

#构建优化模型函数
def optimize_meal(food_code, food_amount, food_price, food_half, nutrient_amounts, breakfast_half, lunch_half, dinner_half):

    #构建目标函数
    def objective(x):
        #计算总价格
        price = np.dot(x,food_price)

        #计算总能量
        energy = np.dot(x,food_code)

        #计算总营养素
        nutrient = np.dot(x,nutrient_names)

        #计算总可半份食物
        half = np.dot(x,food_half)

        #计算总重量
        weight = np.sum(x)

        #计算总可购买半份食物
        half_buy = np.dot(x,breakfast_half) + np.dot(x,lunch_half) + np.dot(x,dinner_half)

        #计算总可购买食物
        food_buy = np.dot(x,food_code)

        #返回目标值
        return price

    #构建约束条件
    def constraint1(x):
        #计算总能量
        energy = np.dot(x,food_code)
        #返回约束值
        return nutrient_amounts[0] - energy

    def constraint2(x):
        #计算总蛋白质
        protein = np.dot(x,food_code)
        #返回约束值
        return nutrient_amounts[1] - protein

    def constraint3(x):
        #计算总脂肪
        fat = np.dot(x,food_code)
        #返回约束值
        return nutrient_amounts[2] - fat

    def constraint4(x):
        #计算总碳水化合物
        carbohydrate = np.dot(x,food_code)
        #返回约束值
        return nutrient_amounts[3] - carbohydrate

    def constraint5(x):
        #计算总钙
        calcium = np.dot(x,food_code)
        #返回约束值
        return nutrient_amounts[4] - calcium

    def constraint6(x):
        #计算总铁
        iron = np.dot(x,food_code)
        #返回约束值
        return nutrient_amounts[5] - iron

    def constraint7(x):
        #计算总维生素A
        vitaminA = np.dot(x,food_code)
        #返回约束值
        return nutrient_amounts[6] - vitaminA

    def constraint8(x):
        #计算总维生素C
        vitaminC = np.dot(x,food_code)
        #返回约束值
        return nutrient_amounts[7] - vitaminC

    #构建约束条件列表
    cons = ({'type': 'eq', 'fun': constraint1},
            {'type': 'eq', 'fun': constraint2},
            {'type': 'eq', 'fun': constraint3},
            {'type': 'eq', 'fun': constraint4},
            {'type': 'eq', 'fun': constraint5},
            {'type': 'eq', 'fun': constraint6},
            {'type': 'eq', 'fun': constraint7},
            {'type': 'eq', 'fun': constraint8})

    #设置初始值
    x0 = np.array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])

    #设置变量范围
    bnds = ((0, None), (0, None), (0, None), (0, None), (0, None), (0, None), (0, None), (0, None), (0, None), (0, None), (0, None), (0, None), (0, None), (0, None), (0, None))

    #调用优化函数
    sol = minimize(objective, x0, method='SLSQP', bounds=bnds, constraints=cons)

    #返回优化结果
    return sol

#构建男生周一到周日的食谱
省略

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

健康饮食、平衡膳食是每个大学生都应该重视的问题。在大学时代,我们的身体发育和学习压力都很大,因此,营养均衡的饮食习惯尤为重要。

健康饮食、平衡膳食倡议书:

亲爱的同学们:

作为大学生,我们每天都在不断地学习新知识,同时也面临着各种挑战和压力。在这样的情况下,我们要保证身体健康,就需要特别关注我们的饮食习惯。

一项合理的膳食结构对我们的身体发育和健康至关重要。然而,大学生中饮食结构不合理以及不良的饮食习惯问题比较突出,例如不吃早餐、经常性食用外卖及快餐食品等。这些不良的饮食习惯不仅会影响我们的身体健康,还会影响我们的学习和生活质量。

因此,作为大学生,我们应该养成良好的饮食习惯,保证每天摄入的营养物质能够满足身体的需求。以下是一些健康饮食、平衡膳食的建议,希望能够帮助大家养成良好的饮食习惯:

  1. 多吃水果和蔬菜:水果和蔬菜是我们身体所需的维生素和矿物质的重要来源。我们应该每天摄入5份以上的水果和蔬菜,尽量选择新鲜的水果和蔬菜而不是罐装或加工过的。
  2. 多摄入蛋白质:蛋白质是我们身体修复和生长所需的重要营养素。每天应该摄入足够的蛋白质,可以选择鸡肉、鱼肉、牛奶、豆类等食物作为蛋白质的来源。
  3. 保证每日三餐:每日三餐对于保证身体健康非常重要。尽量不要跳过早餐,并且合理控制午餐和晚餐的食量。
  4. 少吃油炸和高糖食物:油炸和高糖食物会增加我们的脂肪摄入量,并且会影响我们的身体健康。因此,我们应该尽量少吃这些食物,尤其是零食和甜点。
  5. 多喝水:我们每天都会流失大量的水分,因此需要通过饮水来补充。每天应该喝足够的水,可以选择白开水、茶水或果汁等作为饮用水。

最后,我希望我们作为大学生能够养成良好的饮食习惯,保证身体健康,从而更好地学习和生活。让我们一起迈向健康、平衡的生活方式!

谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值