2024电工杯数学建模B题思路模型代码

完整内容更新见文末名片

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 .所有基础数据、求解过程数据以及最终数据均放在 正文中
问题分析:

问题 1:膳食食谱的营养分析评价及调整

1.1 对附件1、附件2两份食谱的全面膳食营养评价

步骤:

  1. 分析食物结构:按类别将食谱中食物归类排序,列出每种食物的数量,分析五大类别食物是否齐全。
  2. 计算食谱的主要营养素含量:从《中国食物成分表》中查出每100克可食部食物所含主要营养素的数量,从而算出食谱中各种主要营养素的含量。
  3. 评价食谱提供的能量、餐次比及非产能主要营养素含量:根据每日能量摄入目标、餐次比参考值及非产能主要营养素的参考摄入量,对食谱进行评价。
  4. 评价食谱的能量来源:将食谱中碳水化合物、脂肪、蛋白质供能占总能量的百分比与宏量营养素供能占总能量百分比的参考值比较。
  5. 评价每餐的蛋白质氨基酸评分:计算每餐混合食物的蛋白质氨基酸评分,依此评价每餐食物蛋白质氨基酸组成是否合理。

数据处理与分析:

我们需要从附件1、附件2中的一日食谱数据提取每种食物的种类及其对应的营养成分数据,然后进行以下计算:

  • 每种食物的营养素含量。
  • 每餐以及全天的能量总量、蛋白质、脂肪、碳水化合物等宏量营养素总量。
  • 每餐以及全天的非产能营养素(如钙、铁、锌、维生素等)总量。
    import pandas as pd# 读取食谱数据
    male_diet = pd.read_excel('/mnt/data/附件1:1名男大学生的一日食谱.xlsx')
    female_diet = pd.read_excel('/mnt/data/附件2:1名女大学生的一日食谱.xlsx')# 读取食物成分表数据
    food_composition = pd.read_excel('path_to_food_composition_table.xlsx')# 计算营养素含量
    def calculate_nutrients(diet, food_composition):nutrients = diet.merge(food_composition, on='食物名称', how='left')nutrients['能量'] = nutrients['食物重量'] * nutrients['能量(kcal)'] / 100nutrients['蛋白质'] = nutrients['食物重量'] * nutrients['蛋白质(g)'] / 100nutrients['脂肪'] = nutrients['食物重量'] * nutrients['脂肪(g)'] / 100nutrients['碳水化合物'] = nutrients['食物重量'] * nutrients['碳水化合物(g)'] / 100nutrients['钙'] = nutrients['食物重量'] * nutrients['钙(mg)'] / 100nutrients['铁'] = nutrients['食物重量'] * nutrients['铁(mg)'] / 100nutrients['锌'] = nutrients['食物重量'] * nutrients['锌(mg)'] / 100nutrients['维生素A'] = nutrients['食物重量'] * nutrients['维生素A(μg)'] / 100nutrients['维生素B1'] = nutrients['食物重量'] * nutrients['维生素B1(mg)'] / 100nutrients['维生素B2'] = nutrients['食物重量'] * nutrients['维生素B2(mg)'] / 100nutrients['维生素C'] = nutrients['食物重量'] * nutrients['维生素C(mg)'] / 100return nutrientsmale_nutrients = calculate_nutrients(male_diet, food_composition)
    female_nutrients = calculate_nutrients(female_diet, food_composition)# 聚合每日营养素总量
    daily_male_nutrients = male_nutrients.sum()
    daily_female_nutrients = female_nutrients.sum()print(daily_male_nutrients)
    print(daily_female_nutrients)
    
    1.2 基于附件3,对附件1、附件2两份食谱进行调整改进

    步骤:

  • 根据附件3中的高校食堂一日三餐主要食物信息统计表,选择营养更均衡的食物。
  • 调整附件1、附件2中的食谱,使其更加符合平衡膳食的基本准则。
  • canteen_foods = pd.read_excel('/mnt/data/附件3:某高校学生食堂一日三餐主要食物信息统计表.xlsx')# 根据需要调整男、女大学生的食谱
    # 例如,增加蔬菜和水果的比例,减少高脂肪和高糖食物的比例def adjust_diet(diet, canteen_foods):# 这里可以添加具体的调整逻辑,如选择新的食物替换不合理的食物adjusted_diet = diet.copy()# 假设我们增加一种蔬菜new_food = canteen_foods[canteen_foods['食物类别'] == '蔬菜'].sample(1)adjusted_diet = pd.concat([adjusted_diet, new_food])return adjusted_dietadjusted_male_diet = adjust_diet(male_diet, canteen_foods)
    adjusted_female_diet = adjust_diet(female_diet, canteen_foods)# 重新计算调整后的营养素含量
    adjusted_male_nutrients = calculate_nutrients(adjusted_male_diet, food_composition)
    adjusted_female_nutrients = calculate_nutrients(adjusted_female_diet, food_composition)daily_adjusted_male_nutrients = adjusted_male_nutrients.sum()
    daily_adjusted_female_nutrients = adjusted_female_nutrients.sum()print(daily_adjusted_male_nutrients)
    print(daily_adjusted_female_nutrients)
    

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

    2.1 以蛋白质氨基酸评分最大为目标建立优化模型

    步骤:

  • 定义优化目标函数:最大化蛋白质氨基酸评分。
  • 建立线性规划模型,定义约束条件。
  • 使用优化算法求解模型。
  • from scipy.optimize import linprog# 假设有N种食物,每种食物有不同的蛋白质氨基酸评分和成本
    N = len(canteen_foods)
    protein_scores = canteen_foods['蛋白质氨基酸评分'].values
    costs = canteen_foods['价格'].values# 目标函数:最大化蛋白质氨基酸评分
    c = -protein_scores  # 因为linprog是求解最小化问题,所以取负# 约束条件:保证总能量摄入、营养素摄入达到标准
    # 例如,能量摄入要求2400 kcal
    A_eq = [canteen_foods['能量(kcal)'].values]
    b_eq = [2400]# 变量范围:每种食物的摄入量应为非负
    bounds = [(0, None) for _ in range(N)]# 求解线性规划问题
    result = linprog(c, A_eq=A_eq, b_eq=b_eq, bounds=bounds, method='highs')print(result.x)  # 最优食物组合
    
    2.2 以用餐费用最经济为目标建立优化模型

    步骤:

  • 定义优化目标函数:最小化用餐费用。
  • 建立线性规划模型,定义约束条件。
  • 使用优化算法求解模型。
  • # 目标函数:最小化用餐费用
    c = costs# 约束条件:保证总能量摄入、营养素摄入达到标准
    A_eq = [canteen_foods['能量(kcal)'].values]
    b_eq = [2400]# 变量范围:每种食物的摄入量应为非负
    bounds = [(0, None) for _ in range(N)]# 求解线性规划问题
    result = linprog(c, A_eq=A_eq, b_eq=b_eq, bounds=bounds, method='highs')print(result.x)  # 最优食物组合
    
    2.3 兼顾蛋白质氨基酸评分及经济性,建立优化模型

    步骤:

  • 定义综合优化目标函数,考虑蛋白质氨基酸评分和用餐费用。
  • 建立线性规划模型,定义约束条件。
  • 使用优化算法求解模型。
  • # 假设我们用加权和的方法来综合考虑蛋白质氨基酸评分和用餐费用
    alpha = 0.5  # 权重,可以根据实际需求调整# 综合目标函数:最小化(alpha * 用餐费用 - (1 - alpha) * 蛋白质氨基酸评分)
    c = alpha * costs - (1 - alpha) * protein_scores# 约束条件:保证总能量摄入、营养素摄入达到标准
    A_eq = [canteen_foods['能量(kcal)'].values]
    b_eq = [2400]  # 男生每日能量目标,可以根据女生的能量目标调整# 变量范围:每种食物的摄入量应为非负
    bounds = [(0, None) for _ in range(N)]# 求解线性规划问题
    result = linprog(c, A_eq=A_eq, b_eq=b_eq, bounds=bounds, method='highs')# 最优食物组合
    optimal_combination = result.x# 打印结果
    print(optimal_combination)
    

    可视化:

  • import matplotlib.pyplot as plt# 准备数据
    labels = ['能量(kcal)', '蛋白质(g)', '脂肪(g)', '碳水化合物(g)', '钙(mg)', '铁(mg)', '锌(mg)', '维生素A(μg)', '维生素B1(mg)', '维生素B2(mg)', '维生素C(mg)', '费用(元)']optimal_diet1_values = optimal_diet1.values
    optimal_diet2_values = optimal_diet2.values
    optimal_diet3_values = optimal_diet3.valuesx = range(len(labels))# 绘制条形图
    plt.figure(figsize=(12, 8))
    plt.bar(x, optimal_diet1_values, width=0.2, label='蛋白质氨基酸评分最大', align='center')
    plt.bar([i + 0.2 for i in x], optimal_diet2_values, width=0.2, label='费用最经济', align='center')
    plt.bar([i + 0.4 for i in x], optimal_diet3_values, width=0.2, label='综合模型', align='center')plt.xlabel('营养素及费用')
    plt.ylabel('数值')
    plt.title('不同优化模型的营养素及费用比较')
    plt.xticks([i + 0.2 for i in x], labels, rotation=45)
    plt.legend()plt.tight_layout()
    plt.show()
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/14003.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/14003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java基础教程 - 9 集合

更好的阅读体验:点这里 ( www.doubibiji.com ) 更好的阅读体验:点这里 ( www.doubibiji.com ) 更好的阅读体验:点这里 ( www.doubibiji.com ) 9 集合 什么是集合&…

【stm32/CubeMX、HAL库】嵌入式实验六:定时器(2)|PWM输出

参考: 【【正点原子】手把手教你学STM32CubeIDE开发】 https://www.bilibili.com/video/BV1Wp42127Cx/?p13&share_sourcecopy_web&vd_source9332b8fc5ea8d349a54c3989f6189fd3 《嵌入式系统基础与实践》刘黎明等编著,第九章定时器&#xff0c…

爱普生TG5032SFN温补晶振在机器人控制中的应用

机器人控制是机器人技术的核心组成部分,它涉及通过传感器采集外部环境信息,然后经过信号处理、运动规划和执行控制等步骤,最终实现机器人的运动控制和任务执行。在技术的不断更选,机器人控制也在不断进步和演变。智能化机器人具备…

cannot compute sizeof(off_t) when compile netcdf-fortran

export LD_LIBRARY_PATH/netcdf-c/lib:$LD_LIBRARY_PATH

Z缓冲技术在AI去衣中的关键角色

引言: 人工智能(AI)技术的飞速发展,为图像处理领域带来了革命性的变化。其中,AI去衣技术作为一种新兴的应用,引起了广泛关注。它不仅在多媒体内容的编辑、虚拟现实和增强现实等领域具有重要的应用价值&…

Jenkins 构建 Maven 项目:项目和服务器在一起的情况

bash.sh内容 #!/bin/bash#删除历史数据 rm -rf ruoyi-admin.jar# appname$1 appnamevideo.xxxxx.com #获取传入的参数 echo "arg:$appname"#获取正在运行的jar包pid # pidps -ef | grep $1 | grep java -jar | awk {printf $2} pidps -ef | grep $appname | grep ja…

1673. 找出最具竞争力的子序列

题目 给定一个整数数组 nums 和一个正整数 k,返回长度为 k 且最具竞争力的 nums 子序列。 数组的子序列是从数组中删除一些元素(可能不删除元素)得到的序列。 在子序列 a 和子序列 b 第一个不相同的位置上,如果 a 中的数字小于…

mysql 删除特殊字符 表中存了特殊字符 换行符 回车符 word字符 查询不到

省流: UPDATE t1 SET f1 REPLACE(REPLACE( f1 , CHAR(10), ), CHAR(13), ); 用 replace() 函数将 换行符char(10) 和 回车符char(13) 替换为空字符串。 char(10):换行 char(13):回车 发现表里存进很多换行符,如下图&#xff1a…

深入研究Qt Meta - Object System

目录 先说RTTI 再说QMeta Object System 关于Q_OBJECT 这篇文章我打算研究一下QMetaObject System,也就是Qt自己构建起来的元对象系统。 先说RTTI 啥是RTTI?这是C编程里的一个常见术语,全称是:运行阶段类型识别(Ru…

Chrome DevTools攻略

Chrome DevTools,也称为Chrome开发者工具,是一套直接内置于Google Chrome浏览器的Web开发者工具。以下是一些使用Chrome DevTools的攻略和技巧: 打开DevTools: 右键点击页面上的任何元素,选择“检查”或“审查元素”。…

2024年华为OD机试真题-机场航班调度程序-C++-OD统一考试(C卷D卷)

题目描述: XX市机场停放了多架飞机,每架飞机都有自己的航班号CA3385,CZ6678,SC6508等,航班号的前2个大写字母(或数字)代表航空公司的缩写,后面4个数字代表航班信息。但是XX市机场只有一条起飞用跑道,调度人员需要安排目前停留在机场的航班有序起飞。为保障航班的有序起…

【webrtc】MediaEngine的实现CompositeMediaEngine创建VOE

m98音视频的引擎是管理channel的看起来是外部强加给CompositeMediaEngine 管理的。CompositeMediaEngine :合成媒体引擎 G:\CDN\rtcCli\m98\src\media\base\media_engine.h// CompositeMediaEngine constructs a MediaEngine from separate // voice and video engine classes…

Python中文分词工具库之jieba使用详解

概要 在自然语言处理(NLP)领域,中文文本的分词是一个重要且基础的任务。Python的jieba库是一个广泛使用的中文分词工具,提供了丰富的功能,包括精准模式、全模式、搜索引擎模式等,适用于不同的应用场景。本文将详细介绍jieba库,包括其安装方法、主要特性、基本和高级功能…

代码随想录35期Day49-Java

Day49题目 LeetCode123买卖股票三 核心思想:和昨天的买卖股票相比,这个只允许买两次,因此把状态新增几个,可见代码注释 class Solution {public int maxProfit(int[] prices) {// 设置五个状态 0 : 无操作 , 1 : 第一次买入, 2 : 第一次卖出 , 3: 第二次买入, 4:第二次卖出…

java技术:oauth2协议

目录 一、黑马程序员Java进阶教程快速入门Spring Security OAuth2.0认证授权详解 1、oauth服务 WebSecurityConfig TokenConfig AuthorizationServer 改写密码校验逻辑实现类 2、oauth2支持的四种方式: 3、oauth2授权 ResouceServerConfig TokenConfig 4、…

前端面试题日常练-day19 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备,答案在文末。 1. AJAX是什么的缩写? A. Asynchronous JavaScript and XMLB. Asynchronous JavaScript and XHTMLC. Asynchronous Java and XMLD. Asynchronous Java and XHTML2. 下列哪个方法用于创建…

SpringCloudAlibaba 动态读取配置文件的信息

传统读取方式: 在application.properties中写入要读取的内容,如下: coupon.user.nameTom coupon.user.age27 接口引入处: Value("${coupon.user.name}")private String name;Value("${coupon.user.age}")p…

MySQL的索引是什么

MySQL的索引 一、索引概述二、索引结构1.简要概述2.从二叉树说起3.再在说下B-Tree4.为什么选择BTree5.Hash又是什么6.博主被面试官经常问的题目 三、索引分类四、聚集索引&二级索引五、索引语法 一、索引概述 1.索引是帮助MySQL 高效获取数据的数据结构(有序)。在数据之外…

[STM32-HAL库]Flash库-HAL库-复杂数据读写-STM32CUBEMX开发-HAL库开发系列-主控STM32F103C6T6

目录 一、前言 二、实现步骤 1.STM32CUBEMX配置 2.导入Flash库 3.分析地址范围 4.找到可用的地址 5.写入读取普通数据 6.写入读取字符串 6.1 存储相关信息 6.2 存取多个参数 三、总结及源码 一、前言 在面对需要持久化存储的数据时,除了挂载TF卡,我们…

燃数科技前端25-40K*14薪一面超简单,下周二面啦

一面 1、自我介绍 2、低代码如何设计的 3、react路由原理 4、react生命周期 5、什么是回调地狱,如何解决 6、jwt和session有什么区别 7、js文件相互引用有什么问题?如何解决 8、一个很大的json文件,前端读取如何优化 面试我的不像是…