2024年电工杯数学建模竞赛B题论文和代码已完成,代码为B题全部问题的代码,论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解(问题1模型的建立和求解、问题2模型的建立和求解、问题3模型的建立和求解)、模型的评价等等
2024电工杯数学建模竞赛B题论文和代码获取↓↓↓↓↓
https://www.yuque.com/u42168770/qv6z0d/tpdozi4vi1b0u20z
摘要
本文针对高校食堂的营养配餐问题,构建了一系列营养评价和优化模型,旨在为大学生提供营养均衡、经济实惠的膳食。首先,文章建立了综合考虑食物种类、能量、宏量营养素、微量营养素和氨基酸评分的营养评价模型,并引入TOPSIS法对食谱的营养价值进行评估。在此基础上,文章分别以蛋白质摄入量最大化和总成本最小化为目标,构建了单目标线性规划模型,并考虑营养均衡性、食物多样性等约束条件。进一步,文章构建了多目标整数规划模型,同时优化营养质量和经济成本两个目标。此外,文章还针对一周食谱的连续优化问题,提出了周食谱优化模型,引入重复率约束和菜品相似度指标,得到营养均衡、口味多样的整周食谱。最后,文章分析了所建模型的优缺点,并探讨了模型的推广应用。
针对问题1的营养评价,文章建立了综合评价模型,以食物种类数量、总能量、蛋白质含量、脂肪含量、碳水化合物含量、膳食纤维含量、微量元素含量、维生素含量以及氨基酸评分九个指标为基础,采用TOPSIS法对食谱的营养质量进行评估。通过与理想解和负理想解的对比,该模型直观地展示了食谱在各指标上的表现。以某高校食堂的两份实际食谱为例,文章计算了它们的综合评价得分,并使用雷达图和柱状图进行了可视化展示。结果表明,男生食谱和女生食谱的营养质量还有待进一步改善,尤其在食物种类多样性和微量营养素摄入方面存在不足。该评价模型的创新点在于全面考虑了各类营养指标,并引入客观赋权法TOPSIS,为食堂管理者和学生提供直观的参考。
针对问题2的营养优化,文章分别构建了单目标和多目标优化模型。单目标模型分别以蛋白质摄入量最大化和总成本最小化为目标函数,以能量供给、三大宏量营养素比例、微量营养素摄入量等营养要求为约束条件,采用线性规划方法求解。以某高校食堂的候选菜品为例,文章给出了两个优化目标下的最优食谱组合和相应的营养指标。结果表明,蛋白质最大化食谱的氨基酸评分显著高于成本最小化食谱,但相应的经济成本也更高。多目标整数规划模型在营养均衡约束的基础上,进一步考虑了食物多样性、荤素搭配比例、重复率控制等因素,同时优化营养质量和经济成本,并采用加权法将多目标转化为单目标。以重复实验数据为例,文章得到了一组帕累托最优解,并分析了不同权重下的食谱特点。该模型的创新点在于综合考虑多方面因素,在营养、经济、多样性等方面进行权衡,更加贴近实际需求。
(后续摘要略,见完整)
关键词:高校食堂;营养配餐;综合评价;线性规划;多目标优化;周食谱优化;TOPSIS法;遗传算法
问题重述
B 题:大学生平衡膳食食谱的优化设计及评价
大学时代是学知识长身体的重要阶段,同时也是良好饮食习惯形成的重要时期。这一特定年龄段的年轻人,不仅身体发育需要有充足的能量和各种营养素,而且繁重的脑力劳动和较大量的体育锻炼也需要消耗大量的能源物质。
大学生中饮食结构不合理以及不良的饮食习惯问题比较突出,主要表现在不吃早餐或者早餐吃的马虎、经常性食用外卖及快餐食品、个别学生通过控制进食来减少皮下脂肪的积存而造成营养不良等等。大学阶段掌握一定的营养知识,形成良好的饮食习惯,对于促进生长发育、保证身体健康有重要的意义。
1 名男大学生和 1 名女大学生分别记录了各自一日三餐的食物摄入情况,详见附件 1、附件 2,他们想知道自己的膳食营养摄入是否科学合理、还需要做出哪些调整改进。
高校食堂提供的一日三餐是大学生膳食营养摄入的主要来源,附件 3 为某高校学生食堂一日三餐主要食物信息统计表。
对给定膳食食谱各种营养素的分析评价、平衡膳食食谱的优化设计有明确的基本要求,详见附件 4。
请同学们根据附件 4 中的平衡膳食基本准则、能量及各种营养素参考摄入量等各项指标要求,按照“膳食食谱营养评价过程”以及“平衡膳食食谱优化设计原则”,解决以下问题。
问题 1.膳食食谱的营养分析评价及调整
1) 对附件 1、附件 2 两份食谱做出全面的膳食营养评价;
2) 基于附件 3,对附件 1、附件 2 两份食谱进行较少的调整改进,并且再做出全面的膳食营养评价。
问题 2.基于附件 3 的日平衡膳食食谱的优化设计
1) 以蛋白质氨基酸评分最大为目标建立优化模型,分别设计男生和女生的日食谱,并对日食谱进行膳食营养评价;
2) 以用餐费用最经济为目标建立优化模型,分别设计男生和女生的日食谱,并对日食谱进行膳食营养评价;
3) 兼顾蛋白质氨基酸评分及经济性,建立优化模型,分别设计男生和女生的日食谱,并对日食谱进行膳食营养评价;
4) 对 1)—3)得到的日食谱进行比较分析。
问题 3.基于附件 3 的周平衡膳食食谱的优化设计
在问题 2 的基础上,分别以蛋白质氨基酸评分最大、用餐费用最经济、兼顾蛋白质氨基酸评分及经济性为目标,建立优化模型,设计男生和女生的周食谱(周一—周日),并进行评价及比较分析。
问题 4.针对大学生饮食结构及习惯,写一份健康饮食、平衡膳食的倡议书。
问题分析
问题1:膳食食谱的营养分析评价及调整的分析
这一问题的目的是评估附件1和附件2中给出的一名男生和一名女生的一日三餐食谱的营养价值是否合理。需要根据中国居民膳食指南中提供的膳食宝塔和平衡膳食餐盘图的标准,从食物种类多样性、能量供给以及各种营养素含量等多个角度进行全面评估。
评估结果可能会发现,这两份食谱在某些方面存在营养失衡的问题,比如能量供给过多或过少、某些营养素摄入不足或过剩等。因此,需要对这两份食谱进行适当的调整和改进,以使其更加符合平衡膳食的要求。
调整后的食谱需要再次进行全面的营养评估,对比调整前后的差异,确认调整是否有效。如果仍然存在问题,可以继续优化,直到达到合理的营养水平为止。这个过程需要充分利用附件3中提供的食堂菜品营养信息表,选择合适的食材进行替换和搭配。
问题2:基于附件3的日平衡膳食食谱的优化设计的分析
这一问题要求以不同的优化目标,如蛋白质氨基酸评分最大化、用餐费用最小化或两者兼顾,分别为男生和女生设计一份日平衡膳食食谱。这需要建立相应的优化模型,并在附件3提供的菜品选择范围内,选取合适的食材组合,满足各种营养需求。
在设计过程中,需要充分考虑能量需求、宏量营养素比例、非产能营养素摄入量等各方面的限制条件,使得最终的食谱能够满足中国居民膳食指南中提出的平衡膳食标准。同时,还需要注意食材的种类多样性,确保每天摄入足够种类的食物。
优化设计得到的日食谱需要进行营养评估,了解各种营养素的摄入水平,并对比不同优化目标下食谱的差异。通过分析和比较,可以更好地理解不同目标对食谱设计的影响,为后续的周食谱优化设计提供参考。
问题3:基于附件3的周平衡膳食食谱的优化设计 的分析
在问题2的基础上,这一问题进一步要求设计覆盖一周(周一到周日)的平衡膳食食谱。相比于单日食谱,周食谱需要考虑不同餐次之间的搭配,实现整体营养的均衡和多样性。
优化模型的建立需要充分体现一周内各种营养素摄入量的总和,并将其与参考值进行对比和约束。同时,还需要注意每天食物种类的变化,避免重复过多。在一些特殊日子,如节假日,也可以适当调整食谱以满足实际需求。
最终得到的男生和女生周食谱需要进行全面的营养评估,检查是否达到了各项营养目标。与单日食谱相比,周食谱的评估更加注重整体平衡性。通过与问题2中的日食谱进行对比分析,可以总结出更加合理的膳食安排策略。
问题4:针对大学生饮食结构及习惯的倡议书的分析
:这一问题要求针对大学生中普遍存在的不良饮食习惯和结构失衡问题,撰写一份倡议书,旨在引导和促进大学生形成良好的饮食行为。倡议书应该着眼于当前大学生群体的实际状况,揭示这些不良习惯给身心健康带来的潜在危害。
倡议书的核心内容应该包括平衡膳食的基本理念和标准,如食物多样化、营养均衡、适度节制等。同时,还需要针对大学生常见的错误饮食方式,如挑食、偏食、过量进食等,提出具体的纠正建议和行动方案。
除了阐述理论知识外,倡议书还应该更多地关注实践操作,给出一些易于执行的膳食安排和饮食技巧,帮助大学生真正将平衡膳食的理念融入到日常生活中。此外,倡议书的表达方式应该生动活泼、富有感染力,以提高大学生的接受度和参与热情。
模型假设
在前面对问题1到问题3的模型建立与求解过程中,我们使用了以下几个主要的模型假设:
营养素含量的可获得性:我们假设食堂提供的菜品营养信息是完整且准确的,即每道菜品的能量、蛋白质、脂肪、碳水化合物、膳食纤维以及各种微量营养素的含量数据是已知的,可以直接用于构建模型和计算营养指标,而现实中这些数据的获取可能存在一定的难度和不确定性。
膳食搭配的线性组合特性:我们假设一份食谱的营养价值可以由各道菜品的营养价值线性叠加而得,即食物之间不存在交互作用,各营养素之间也没有消长关系,这种简化假设虽然有利于模型的建立和求解,但可能与实际情况有一定的偏差。
(其他假设略,见完整版)
符号说明
以上是问题1到问题3中使用的主要符号及其说明,包括了决策变量、营养参数、约束条件参数以及目标函数系数等。(部分,完整见文末)
模型的建立与求解
问题1.1食谱综合评价模型的建立与求解
对于问题1的第一个小问题,即对附件1和附件2中给出的一名男生和一名女生的一日三餐食谱进行全面的膳食营养评价,我们需要建立一个综合评价模型。该模型应该能够从多个角度对食谱进行评估,包括食物种类多样性、能量供给水平、主要营养素含量以及蛋白质氨基酸评分等。下面是对该问题的详细分析、模型建立及算法步骤。
思路分析
评价一份食谱的营养价值需要从以下几个方面入手:
- 食物种类多样性评价:根据中国居民膳食指南的要求,每天摄入的食物种类应大于12种,每周摄入的食物种类应大于25种。同时,每天摄入的食物应包括谷薯类、蔬菜水果类、畜禽蛋奶类、豆奶坚果类和油脂类五大类别。因此,我们需要统计食谱中包含的食物种类数量,并检查是否包含这五大类别。
(略,见完整版本)
综合评价模型建立
假设评价对象为一份日食谱,包含n种食物,每种食物的可食部分量为 q i ( i = 1 , 2 , . . . , n ) q_i(i=1,2,...,n) qi(i=1,2,...,n) 。我们定义以下评价指标:
N N N :食物种类数量
E E E :食谱提供的总能量(kcal)
P P P :食谱中蛋白质的总含量(g)
F F F :食谱中脂肪的总含量(g)
C C C :食谱中碳水化合物的总含量(g)
D f D_f Df :食谱中膳食纤维的总含量(g)
M j ( j = 1 , 2 , . . . , 11 ) M_j(j=1,2,...,11) Mj(j=1,2,...,11) :食谱中第j种非产能营养素的总含量,包括钙、铁、锌、维生素A、维生素B1、维生素B2和维生素C等11种
S S S :混合食物蛋白质的氨基酸评分
那么,综合评价模型可以表示为:
Y = f ( N , E , P , F , C , D f , M 1 , M 2 , . . . , M 11 , S ) Y=f(N,E,P,F,C,D_f,M_1,M_2,...,M_{11},S) Y=f(N,E,P,F,C,Df,M1,M2,...,M11,S)
其中, f f f 是一个综合评价函数,将各个指标综合考虑,对食谱的营养价值做出总体评价。
为了量化评价,我们需要对各个指标进行归一化处理,使它们在同一量级上,然后赋予不同的权重,最终得到一个评价分数。归一化和加权的具体方法由决策者确定。
综合评价模型求解算法
评价过程可以按照以下算法步骤执行:
-
输入:一份包含n种食物的日食谱,每种食物的可食部分量 q i ( i = 1 , 2 , . . . , n ) q_i(i=1,2,...,n) qi(i=1,2,...,n) 。
-
统计食物种类数量 N N N ,检查是否包含五大类别。
-
根据《中国食物成分表》,查找每种食物的营养素含量,计算食谱中各种营养素的总含量:
E
=
∑
i
=
1
n
q
i
×
e
i
E=\sum_{i=1}^{n}q_i\times e_i
E=i=1∑nqi×ei
P
=
∑
i
=
1
n
q
i
×
p
i
P=\sum_{i=1}^{n}q_i\times p_i
P=i=1∑nqi×pi
F
=
∑
i
=
1
n
q
i
×
f
i
F=\sum_{i=1}^{n}q_i\times f_i
F=i=1∑nqi×fi
C
=
∑
i
=
1
n
q
i
×
c
i
C=\sum_{i=1}^{n}q_i\times c_i
C=i=1∑nqi×ci
D
f
=
∑
i
=
1
n
q
i
×
d
f
,
i
D_f=\sum_{i=1}^{n}q_i\times d_{f,i}
Df=i=1∑nqi×df,i
M
j
=
∑
i
=
1
n
q
i
×
m
j
,
i
,
j
=
1
,
2
,
.
.
.
,
11
M_j=\sum_{i=1}^{n}q_i\times m_{j,i},\quad j=1,2,...,11
Mj=i=1∑nqi×mj,i,j=1,2,...,11
其中, e i , p i , f i , c i , d f , i , m j , i e_i,p_i,f_i,c_i,d_{f,i},m_{j,i} ei,pi,fi,ci,df,i,mj,i 分别表示第 i i i 种食物每100克可食部分含有的能量(kcal)、蛋白质(g)、脂肪(g)、碳水化合物(g)、膳食纤维(g)和第 j j j 种非产能营养素(量纲单位视营养素种类而定)的含量。
- 计算蛋白质、脂肪和碳水化合物的能量供应占比:
蛋白质能量供应占比
=
P
×
4
E
×
100
%
\text{蛋白质能量供应占比}=\frac{P\times 4}{E}\times 100\%
蛋白质能量供应占比=EP×4×100%
脂肪能量供应占比
=
F
×
9
E
×
100
%
\text{脂肪能量供应占比}=\frac{F\times 9}{E}\times 100\%
脂肪能量供应占比=EF×9×100%
碳水化合物能量供应占比
=
C
×
4
E
×
100
%
\text{碳水化合物能量供应占比}=\frac{C\times 4}{E}\times 100\%
碳水化合物能量供应占比=EC×4×100%
- 计算混合食物蛋白质的氨基酸评分 S S S :
S = min 1 ≤ k ≤ 8 { ∑ i = 1 n q i × a k , i ∑ i = 1 n q i × p i × 1 r k × 100 } S=\min\limits_{1\leq k\leq 8}\left\{\frac{\sum\limits_{i=1}^{n}q_i\times a_{k,i}}{\sum\limits_{i=1}^{n}q_i\times p_i}\times \frac{1}{r_k}\times 100\right\} S=1≤k≤8min⎩ ⎨ ⎧i=1∑nqi×pii=1∑nqi×ak,i×rk1×100⎭ ⎬ ⎫
其中, a k , i a_{k,i} ak,i 表示第 i i i 种食物每100克可食部分含有的第 k k k 种必需氨基酸的量(g), r k r_k rk 为第 k k k 种必需氨基酸的参考评分模式值(mg/g蛋白质)。该公式中的最小值对应于第一限制氨基酸,其评分即为混合食物蛋白质的氨基酸评分。
- 根据上述计算结果,对照相应的参考标准,对食谱在各个方面进行评价,包括:
- 能量供给是否合理
- 宏量营养素(蛋白质、脂肪、碳水化合物)供能占比是否合理
- 各种非产能营养素摄入量是否达标
- 蛋白质氨基酸评分是否合理
-
将各方面的评价结果综合考虑,通过评价函数 f f f 得到最终的综合评价分数 Y Y Y 。
-
输出:食谱的营养评价报告,包括各项指标的具体值、评价结果,以及需要改进的方面。
该算法的主要数学公式如下:
食物种类统计:
N
=
#
{
食物种类
}
N=\#\{\text{食物种类}\}
N=#{食物种类}
营养素总含量计算:
E
=
∑
i
=
1
n
q
i
×
e
i
E=\sum_{i=1}^{n}q_i\times e_i
E=i=1∑nqi×ei
P
=
∑
i
=
1
n
q
i
×
p
i
P=\sum_{i=1}^{n}q_i\times p_i
P=i=1∑nqi×pi
F
=
∑
i
=
1
n
q
i
×
f
i
F=\sum_{i=1}^{n}q_i\times f_i
F=i=1∑nqi×fi
C
=
∑
i
=
1
n
q
i
×
c
i
C=\sum_{i=1}^{n}q_i\times c_i
C=i=1∑nqi×ci
D
f
=
∑
i
=
1
n
q
i
×
d
f
,
i
D_f=\sum_{i=1}^{n}q_i\times d_{f,i}
Df=i=1∑nqi×df,i
M
j
=
∑
i
=
1
n
q
i
×
m
j
,
i
,
j
=
1
,
2
,
.
.
.
,
11
M_j=\sum_{i=1}^{n}q_i\times m_{j,i},\quad j=1,2,...,11
Mj=i=1∑nqi×mj,i,j=1,2,...,11
宏量营养素能量供应占比:
蛋白质能量供应占比
=
P
×
4
E
×
100
%
\text{蛋白质能量供应占比}=\frac{P\times 4}{E}\times 100\%
蛋白质能量供应占比=EP×4×100%
脂肪能量供应占比
=
F
×
9
E
×
100
%
\text{脂肪能量供应占比}=\frac{F\times 9}{E}\times 100\%
脂肪能量供应占比=EF×9×100%
碳水化合物能量供应占比
=
C
×
4
E
×
100
%
\text{碳水化合物能量供应占比}=\frac{C\times 4}{E}\times 100\%
碳水化合物能量供应占比=EC×4×100%
蛋白质氨基酸评分:
S
=
min
1
≤
k
≤
8
{
∑
i
=
1
n
q
i
×
a
k
,
i
∑
i
=
1
n
q
i
×
p
i
×
1
r
k
×
100
}
S=\min\limits_{1\leq k\leq 8}\left\{\frac{\sum\limits_{i=1}^{n}q_i\times a_{k,i}}{\sum\limits_{i=1}^{n}q_i\times p_i}\times \frac{1}{r_k}\times 100\right\}
S=1≤k≤8min⎩
⎨
⎧i=1∑nqi×pii=1∑nqi×ak,i×rk1×100⎭
⎬
⎫
综合评价模型:
Y
=
f
(
N
,
E
,
P
,
F
,
C
,
D
f
,
M
1
,
M
2
,
.
.
.
,
M
11
,
S
)
Y=f(N,E,P,F,C,D_f,M_1,M_2,...,M_{11},S)
Y=f(N,E,P,F,C,Df,M1,M2,...,M11,S)
该模型不仅考虑了能量和主要营养素,还涵盖了非产能营养素和蛋白质质量等重要指标。
问题1.2食谱改进优化模型的建立与求解
对于问题1的第二个小问题,我们需要基于附件3中提供的高校食堂菜品信息,对附件1和附件2中给出的男生和女生的一日三餐食谱进行较少的调整改进,使其更符合平衡膳食的要求。为此,我们需要建立一个食谱优化模型,将原有食谱与食堂菜品进行适当替换和搭配,以达到营养均衡的目标。下面是对该问题的详细分析、模型建立及算法步骤。
思路分析
优化一份食谱的营养结构需要从以下几个方面入手:
-
保持食物种类多样性:根据中国居民膳食指南的要求,每天摄入的食物种类应大于12种,并包含五大类别。因此,在调整食谱时,我们需要确保新食谱中食物种类数量不低于原有食谱,且涵盖所有类别。
-
控制能量供给水平:根据题目给出的标准,男生每日能量摄入目标为2400kcal,女生为1900kcal。我们需要调整食谱,使其总能量尽可能接近目标值。
-
优化宏量营养素比例:蛋白质、脂肪和碳水化合物的能量供应占比应分别控制在10%-15%、20%-30%和50%-65%的范围内。我们需要通过菜品替换和搭配,优化这三种宏量营养素的比例。
-
提高蛋白质氨基酸评分:混合食物蛋白质的氨基酸评分反映了蛋白质质量,一般要求大于80分才算合理。我们需要选择合适的高分食材,提升食谱的整体氨基酸评分。
-
满足非产能营养素需求:各种非产能营养素如钙、铁、锌、维生素A、B1、B2、C等的摄入量应尽可能接近参考值。我们需要选择富含这些营养素的食材,补充原有食谱的营养缺口。
-
控制调整幅度:由于需要对原有食谱进行较少的调整,因此我们应尽量保留原有菜品,只对营养失衡的部分进行替换和补充。
基于以上分析,我们可以建立一个食谱优化模型,将原有食谱与食堂菜品进行合理搭配,从而优化食谱的营养结构。
食谱优化模型建立
假设原有食谱包含 n n n 种食物,每种食物的可食部分量为 q i ( i = 1 , 2 , . . . , n ) q_i(i=1,2,...,n) qi(i=1,2,...,n) 。食堂提供的备选菜品有 m m m 种,每种菜品的可食部分量为 r j ( j = 1 , 2 , . . . , m ) r_j(j=1,2,...,m) rj(j=1,2,...,m) 。我们引入决策变量 x j ( j = 1 , 2 , . . . , m ) x_j(j=1,2,...,m) xj(j=1,2,...,m) ,表示第 j j j 种菜品是否被选入新食谱,取值为0或1。
那么,食谱优化模型可以表示为:
min
f
(
E
,
P
,
F
,
C
,
D
f
,
M
1
,
M
2
,
.
.
.
,
M
11
,
S
)
s.t.
N
≥
12
E
∈
[
E
min
,
E
max
]
10
%
≤
P
×
4
E
×
100
%
≤
15
%
20
%
≤
F
×
9
E
×
100
%
≤
30
%
50
%
≤
C
×
4
E
×
100
%
≤
65
%
S
≥
80
M
j
≥
M
j
,
min
,
j
=
1
,
2
,
.
.
.
,
11
∑
j
=
1
m
r
j
×
x
j
≤
Q
max
x
j
∈
{
0
,
1
}
,
j
=
1
,
2
,
.
.
.
,
m
\begin{align*} \min\quad& f(E,P,F,C,D_f,M_1,M_2,...,M_{11},S)\\ \text{s.t.}\quad& N\geq 12\\ & E\in [E_{\min},E_{\max}]\\ & 10\%\leq \frac{P\times 4}{E}\times 100\%\leq 15\%\\ & 20\%\leq \frac{F\times 9}{E}\times 100\%\leq 30\%\\ & 50\%\leq \frac{C\times 4}{E}\times 100\%\leq 65\%\\ & S\geq 80\\ & M_j\geq M_{j,\min},\quad j=1,2,...,11\\ & \sum_{j=1}^{m}r_j\times x_j\leq Q_{\max}\\ & x_j\in\{0,1\},\quad j=1,2,...,m \end{align*}
mins.t.f(E,P,F,C,Df,M1,M2,...,M11,S)N≥12E∈[Emin,Emax]10%≤EP×4×100%≤15%20%≤EF×9×100%≤30%50%≤EC×4×100%≤65%S≥80Mj≥Mj,min,j=1,2,...,11j=1∑mrj×xj≤Qmaxxj∈{0,1},j=1,2,...,m
其中:
- E E E :新食谱提供的总能量(kcal)
- P P P :新食谱中蛋白质的总含量(g)
- F F F :新食谱中脂肪的总含量(g)
- C C C :新食谱中碳水化合物的总含量(g)
- D f D_f Df :新食谱中膳食纤维的总含量(g)
- M j ( j = 1 , 2 , . . . , 11 ) M_j(j=1,2,...,11) Mj(j=1,2,...,11) :新食谱中第j种非产能营养素的总含量
- S S S :新食谱中混合食物蛋白质的氨基酸评分
- N N N :新食谱中食物种类数量
- E min , E max E_{\min},E_{\max} Emin,Emax :能量供给的下限和上限
- M j , min ( j = 1 , 2 , . . . , 11 ) M_{j,\min}(j=1,2,...,11) Mj,min(j=1,2,...,11) :第j种非产能营养素的最低摄入量
- Q max Q_{\max} Qmax :新食谱总量的上限
目标函数 f f f 是一个综合评价函数,将能量、各种营养素含量以及蛋白质氨基酸评分等多个指标综合考虑,对新食谱的营养价值做出评估。
约束条件具体说明如下:
(公式略,见完整版本)
食谱优化模型求解算法
针对该优化模型,我们可以采用以下算法步骤进行求解:
- 输入:
原有食谱,包含 n n n 种食物,每种食物的可食部分量为 q i ( i = 1 , 2 , . . . , n ) q_i(i=1,2,...,n) qi(i=1,2,...,n)
食堂菜品信息,包含 m m m 种菜品,每种菜品的可食部分量为 r j ( j = 1 , 2 , . . . , m ) r_j(j=1,2,...,m) rj(j=1,2,...,m)
能量供给目标区间 [ E min , E max ] [E_{\min},E_{\max}] [Emin,Emax]
- 各种营养素的最低摄入量要求 M j , min ( j = 1 , 2 , . . . , 11 ) M_{j,\min}(j=1,2,...,11) Mj,min(j=1,2,...,11)
- 新食谱总量上限 Q max Q_{\max} Qmax
-
计算原有食谱的营养指标:
- 食物种类数量 N N N
- 总能量 E E E
- 蛋白质总量 P P P
- 脂肪总量 F F F
- 碳水化合物总量 C C C
- 膳食纤维总量 D f D_f Df
- 各种非产能营养素总量 M j ( j = 1 , 2 , . . . , 11 ) M_j(j=1,2,...,11) Mj(j=1,2,...,11)
- 混合食物蛋白质氨基酸评分 S S S
-
初始化决策变量 x j = 0 ( j = 1 , 2 , . . . , m ) x_j=0(j=1,2,...,m) xj=0(j=1,2,...,m)
-
建立优化模型:
min f ( E , P , F , C , D f , M 1 , M 2 , . . . , M 11 , S ) s.t. N ≥ 12 E ∈ [ E min , E max ] 10 % ≤ P × 4 E × 100 % ≤ 15 % 20 % ≤ F × 9 E × 100 % ≤ 30 % 50 % ≤ C × 4 E × 100 % ≤ 65 % S ≥ 80 M j ≥ M j , min , j = 1 , 2 , . . . , 11 ∑ j = 1 m r j × x j ≤ Q max x j ∈ { 0 , 1 } , j = 1 , 2 , . . . , m \begin{align*} \min\quad& f(E,P,F,C,D_f,M_1,M_2,...,M_{11},S)\\ \text{s.t.}\quad& N\geq 12\\ & E\in [E_{\min},E_{\max}]\\ & 10\%\leq \frac{P\times 4}{E}\times 100\%\leq 15\%\\ & 20\%\leq \frac{F\times 9}{E}\times 100\%\leq 30\%\\ & 50\%\leq \frac{C\times 4}{E}\times 100\%\leq 65\%\\ & S\geq 80\\ & M_j\geq M_{j,\min},\quad j=1,2,...,11\\ & \sum_{j=1}^{m}r_j\times x_j\leq Q_{\max}\\ & x_j\in\{0,1\},\quad j=1,2,...,m \end{align*} mins.t.f(E,P,F,C,Df,M1,M2,...,M11,S)N≥12E∈[Emin,Emax]10%≤EP×4×100%≤15%20%≤EF×9×100%≤30%50%≤EC×4×100%≤65%S≥80Mj≥Mj,min,j=1,2,...,11j=1∑mrj×xj≤Qmaxxj∈{0,1},j=1,2,...,m -
采用优化算法(如整数规划、启发式算法等)求解优化模型,得到决策变量 x j ∗ ( j = 1 , 2 , . . . , m ) x_j^*(j=1,2,...,m) xj∗(j=1,2,...,m) 的最优解。
-
根据最优解 x j ∗ x_j^* xj∗ ,确定新食谱中的菜品组合:
- 如果 x j ∗ = 1 x_j^*=1 xj∗=1 ,则将第 j j j 种菜品加入新食谱
- 如果 x j ∗ = 0 x_j^*=0 xj∗=0 ,则不将第 j j j 种菜品加入新食谱
-
计算新食谱的营养指标,包括总能量、各种营养素含量以及蛋白质氨基酸评分等。
-
将新食谱的营养指标与原有食谱进行对比,评估调整效果。如果新食谱在各方面都满足要求,则停止;否则返回步骤4,进一步调整优化模型的参数,重新求解。
-
输出:经过优化后的新食谱及其营养评价报告。
该算法的主要数学公式如下:
原有食谱营养指标计算:
E
=
∑
i
=
1
n
q
i
×
e
i
E=\sum_{i=1}^{n}q_i\times e_i
E=i=1∑nqi×ei
P
=
∑
i
=
1
n
q
i
×
p
i
P=\sum_{i=1}^{n}q_i\times p_i
P=i=1∑nqi×pi
F
=
∑
i
=
1
n
q
i
×
f
i
F=\sum_{i=1}^{n}q_i\times f_i
F=i=1∑nqi×fi
C
=
∑
i
=
1
n
q
i
×
c
i
C=\sum_{i=1}^{n}q_i\times c_i
C=i=1∑nqi×ci
D
f
=
∑
i
=
1
n
q
i
×
d
f
,
i
D_f=\sum_{i=1}^{n}q_i\times d_{f,i}
Df=i=1∑nqi×df,i
M
j
=
∑
i
=
1
n
q
i
×
m
j
,
i
,
j
=
1
,
2
,
.
.
.
,
11
M_j=\sum_{i=1}^{n}q_i\times m_{j,i},\quad j=1,2,...,11
Mj=i=1∑nqi×mj,i,j=1,2,...,11
S
=
min
1
≤
k
≤
8
{
∑
i
=
1
n
q
i
×
a
k
,
i
∑
i
=
1
n
q
i
×
p
i
×
1
r
k
×
100
}
S=\min\limits_{1\leq k\leq 8}\left\{\frac{\sum\limits_{i=1}^{n}q_i\times a_{k,i}}{\sum\limits_{i=1}^{n}q_i\times p_i}\times \frac{1}{r_k}\times 100\right\}
S=1≤k≤8min⎩
⎨
⎧i=1∑nqi×pii=1∑nqi×ak,i×rk1×100⎭
⎬
⎫
新食谱营养指标计算:
(公式略,见完整版本)
其中, e i , p i , f i , c i , d f , i , m j , i , a k , i e_i,p_i,f_i,c_i,d_{f,i},m_{j,i},a_{k,i} ei,pi,fi,ci,df,i,mj,i,ak,i 分别表示第 i i i 种原有食物每100克可食部分含有的能量、蛋白质、脂肪、碳水化合物、膳食纤维、第 j j j 种非产能营养素和第 k k k 种必需氨基酸的含量; e j , p j , f j , c j , d f , j , m j , j , a k , j e_j,p_j,f_j,c_j,d_{f,j},m_{j,j},a_{k,j} ej,pj,fj,cj,df,j,mj,j,ak,j 分别表示第 j j j 种备选菜品每100克可食部分含有的相应营养素含量。
通过建立和求解该优化模型,我们可以在原有食谱的基础上,选择合适的食堂菜品进行替换和补充,从而得到一份营养更加均衡的新食谱。该模型不仅考虑了能量和主要营养素,还涵盖了非产能营养素、蛋白质质量以及种类多样性等多个维度,可以更好地满足平衡膳食的要求。
# 计算每餐的总营养素
adjusted_nutrients_male = {'热量 (kcal)': 0, '蛋白质 (g)': 0, '脂肪 (g)': 0, '碳水化合物 (g)': 0}
male_ls = []
for key in meals:
total_nutrients = {'热量 (kcal)': 0, '蛋白质 (g)': 0, '脂肪 (g)': 0, '碳水化合物 (g)': 0}
for item in meals[key]:
for _, food in food_male.iterrows():
if food['食物名称'] == item:
nutrient = foods_nutrients[foods_nutrients['食物名称'] == food['主要成分']].iloc[0]
portion_size = food['可食部(克/份)'] * food['食用份数'] / 100 # 换算成100g标准
total_nutrients['热量 (kcal)'] += nutrient['热量 (kcal)'] * portion_size
total_nutrients['蛋白质 (g)'] += nutrient['蛋白质 (g)'] * portion_size
total_nutrients['脂肪 (g)'] += nutrient['脂肪 (g)'] * portion_size
total_nutrients['碳水化合物 (g)'] += nutrient['碳水化合物 (g)'] * portion_size
print(f"{key}的总营养素:", total_nutrients)
male_ls.append(total_nutrients)
adjusted_nutrients_male['热量 (kcal)'] += total_nutrients['热量 (kcal)']
adjusted_nutrients_male['蛋白质 (g)'] += total_nutrients['蛋白质 (g)']
adjusted_nutrients_male['脂肪 (g)'] += total_nutrients['脂肪 (g)']
adjusted_nutrients_male['碳水化合物 (g)'] += total_nutrients['碳水化合物 (g)']
print(f"一天的总营养素:", adjusted_nutrients_male)
问题2.1以蛋白质氨基酸评分最大为目标模型的建立与求解
对于问题2的第一个小问题,我们需要基于附件3中的食堂菜品信息,以蛋白质氨基酸评分最大为目标,分别设计男生和女生的日平衡膳食食谱。这是一个典型的线性规划问题,需要在满足各项营养约束条件的同时,寻找最优的菜品搭配方案。下面是对该问题的详细分析、模型建立及算法步骤。
思路分析
设计一份日平衡膳食食谱需要从以下几个方面考虑:
-
食物种类多样性:根据中国居民膳食指南,每天摄入的食物种类应不少于12种,并尽可能包含谷薯类、蔬菜水果类、畜禽鱼蛋奶类、大豆坚果类等不同类别。因此,在选择食堂菜品时,要注意保证足够的多样性。
-
能量供给:男生和女生的日能量摄入目标分别为2400kcal和1900kcal。设计食谱时,需要通过合理搭配不同的菜品,使总能量尽可能接近目标值,避免过多或过少。
-
宏量营养素比例:饮食中的三大宏量营养素,即蛋白质、脂肪和碳水化合物,其能量供应比例应分别控制在10%-15%、20%-30%和50%-65%的范围内。在选择菜品时,要注意平衡这三种营养素的比例。
-
微量营养素摄入:膳食中还需要提供足够的维生素、矿物质等微量营养素,如钙、铁、锌、维生素A、B1、B2、C等。设计食谱时,要选择富含这些营养素的菜品,以满足人体需要。
-
氨基酸评分:衡量蛋白质质量的一个重要指标是氨基酸评分,理想的评分应在80分以上。由于题目要求以评分最大为目标,因此在菜品选择时,要优先考虑评分高的食物。
-
摄入总量控制:食谱中各种菜品的份数不能太多,否则可能超出正常的食量范围。因此需要在模型中设置摄入总量的上限。
综合以上分析,我们可以建立一个线性规划模型,通过优化各道菜品的选择份数,在满足营养约束条件的同时,使蛋白质氨基酸评分达到最大。
蛋白质氨基酸评分优化模型建立
假设食堂提供 n n n道菜品,第 i i i道菜品的可食部分量为 q i ( i = 1 , 2 , . . . , n ) q_i(i=1,2,...,n) qi(i=1,2,...,n),氨基酸评分为 s i s_i si。我们需要决定每道菜品的选择份数 x i x_i xi,使得总氨基酸评分最大化,同时满足各项营养约束条件。
目标函数:
max
∑
i
=
1
n
s
i
x
i
\max\quad \sum_{i=1}^{n}s_ix_i
maxi=1∑nsixi
约束条件:
-
食物种类多样性约束:
∑ i = 1 n δ i ≥ 12 \sum_{i=1}^{n}\delta_i\geq 12 i=1∑nδi≥12
其中, δ i \delta_i δi是布尔变量,当 x i > 0 x_i>0 xi>0时取1,否则取0。 -
能量约束:
0.9 E ≤ ∑ i = 1 n e i x i q i ≤ 1.1 E 0.9E\leq \sum_{i=1}^{n}e_ix_iq_i\leq 1.1E 0.9E≤i=1∑neixiqi≤1.1E
其中, E E E为能量摄入目标(男生为2400kcal,女生为1900kcal), e i e_i ei为第 i i i道菜品每100克可食部的能量(kcal)。 -
宏量营养素比例约束:
0.1 ≤ ∑ i = 1 n p i x i q i ∑ i = 1 n e i x i q i ≤ 0.15 0.1\leq \frac{\sum_{i=1}^{n}p_ix_iq_i}{\sum_{i=1}^{n}e_ix_iq_i}\leq 0.15 0.1≤∑i=1neixiqi∑i=1npixiqi≤0.15
0.2 ≤ ∑ i = 1 n f i x i q i ∑ i = 1 n e i x i q i ≤ 0.3 0.2\leq \frac{\sum_{i=1}^{n}f_ix_iq_i}{\sum_{i=1}^{n}e_ix_iq_i}\leq 0.3 0.2≤∑i=1neixiqi∑i=1nfixiqi≤0.3
0.5 ≤ ∑ i = 1 n c i x i q i ∑ i = 1 n e i x i q i ≤ 0.65 0.5\leq \frac{\sum_{i=1}^{n}c_ix_iq_i}{\sum_{i=1}^{n}e_ix_iq_i}\leq 0.65 0.5≤∑i=1neixiqi∑i=1ncixiqi≤0.65
其中, p i , f i , c i p_i,f_i,c_i pi,fi,ci分别为第 i i i道菜品每100克可食部的蛋白质、脂肪和碳水化合物含量(克)。 -
微量营养素摄入约束:
∑ i = 1 n m i j x i q i ≥ M j , j = 1 , 2 , . . . , k \sum_{i=1}^{n}m_{ij}x_iq_i\geq M_j,\quad j=1,2,...,k i=1∑nmijxiqi≥Mj,j=1,2,...,k
其中, m i j m_{ij} mij为第 i i i道菜品每100克可食部的第 j j j种微量营养素含量, M j M_j Mj为第 j j j种微量营养素的推荐摄入量。 -
摄入总量约束:
∑ i = 1 n x i q i ≤ Q \sum_{i=1}^{n}x_iq_i\leq Q i=1∑nxiqi≤Q
其中, Q Q Q为食物摄入总量的上限。
决策变量非负约束:
x
i
≥
0
,
i
=
1
,
2
,
.
.
.
,
n
x_i\geq 0,\quad i=1,2,...,n
xi≥0,i=1,2,...,n
该模型的目标是在满足营养均衡要求的前提下,通过合理搭配食堂菜品,使蛋白质氨基酸评分达到最大。约束条件包括食物多样性、能量摄入量、三大宏量营养素比例、微量营养素摄入量以及食物总量限制等。
2024电工杯数学建模竞赛A题论文和代码获取↓↓↓↓↓
https://www.yuque.com/u42168770/qv6z0d/tpdozi4vi1b0u20z