2024 电工杯(B题)数学建模完整思路+完整代码全解全析

你是否在寻找数学建模比赛的突破点?数学建模进阶思路!

作为经验丰富的数学建模团队,我们将为你带来2024电工杯数学建模竞赛(B题)的全面解析。这个解决方案包不仅包括完整的代码实现,还有详尽的建模过程和解析,帮助你全面理解并掌握如何解决类似问题。

完整内容在文章末尾阅读全文获取!

这次《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中都有维生素和矿物质的缺乏情况得到改善,但仍需根据个人情况进行补充。

其中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的日平衡膳食食谱的优化设计。

更多内容具体可以看看我的主页!
和 《小天数模》 团队,同名公众号 一起拿奖!里面包含本次竞赛全部思路与分析!

包含本次比赛全部题目和单题思路与代码,代码和文章会不断更新

关注小天数模,你们的支持是我更新的动力!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用队列实现栈,用栈实现队列

有两个地方会讨论到栈,一个是程序运行的栈空间,一个是数据结构中的栈,本文中讨论的是后者。 栈是一个先入后出,后入先出的数据结构,只能操作栈顶。栈有两个操作,push 和 pop,push 是向将数据压…

CentOS7 部署单机版 elasticsearch

一、环境准备 1、准备一台系统为CentOS7的服务器 [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) 2、创建新用户,用于elasticsearch服务 # elastic不允许使用root账号启动服务 [rootlocalhost ~]# useradd elastic [rootlo…

【全开源】沃德商协会管理系统源码(FastAdmin+ThinkPHP+Uniapp)

一款基于FastAdminThinkPHPUniapp开发的商协会系统,新一代数字化商协会运营管理系统,以“智慧化会员体系、智敏化内容运营、智能化活动构建”三大板块为基点,实施功能全场景覆盖,一站式解决商协会需求壁垒,有效快速建立…

PostgreSQL事务基础理解

PostgreSQL事务 事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。数据库事务通常包含一个序列对数据库的读和写操作,主要是包含以下两个目的: 为数据库操作序列提供一个从失败中恢复到正常状态的方法&#…

1.Redis之初识Redis分布式系统

1.初识Redis 1.1 官网 Redis中文网 Redis 教程 | 菜鸟教程 (runoob.com) 1.2 解释 在内存中存储数据 定义变量,不就是在内存中存储数据嘛?? Redis 是在分布式系统(进程的隔离性:Redis 就是基于网络,可以把自己内存中的变量给别的进程…

【Linux】简单模拟C语言文件标准库FILE

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 如果文章对…

Java进阶学习笔记10——子类构造器

子类构造器的特点: 子类的全部构造器,都会先调用父类的构造器,再执行自己。 子类会继承父类的数据,可能还会使用父类的数据。所以,子类初始化之前,一定先要完成父类数据的初始化,原因在于&…

【Java面试】一、Redis篇(上)

文章目录 0、准备1、缓存穿透:不存在的key2、缓存击穿:热点key过期3、缓存雪崩:大批key同时过期4、双写一致性4.1 要求高一致性4.2 允许一定的一致延迟 5、面试 0、准备 Redis相关概览: 以简历上所列的项目为切入点,展…

C语言/数据结构——队列的实现

一.前言 今天我们来聊一聊数据结构的一部分——队列。今天我们主要涉及队列的基本概念结构,以及队列的基本实现。 二.正文 1.1队列 1.12队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表&#xf…

ue5 中ps使用记录贴

一、快捷键记录 放大图形 ctrlalt空格 放大图形 缩小视口 ctrl空格 ctrlD 取消选区 ctrlt缩小文字 w魔棒工具 选择魔棒的时候把容差打开的多一点 二、案例 移动文字 在相应的图层选择 移动文字 修改图片里的颜色 在通道里拷贝红色通道,复制红色通道粘贴给正常图…

【ELK日志收集过程】

文章目录 为什么要使用ELK收集日志ELK具体应用场景ELK日志收集的流程 为什么要使用ELK收集日志 使用 ELK(Elasticsearch, Logstash, Kibana)进行日志收集和分析有多种原因。ELK 堆栈提供了强大、灵活且可扩展的工具集,能够满足现代 IT 系统对…

CIM模型

CIM 是 Esri 制图信息模型。 它是一个地图内容规范,用于记录在保存、读取、引用或打开时如何永久保留描述不同项目组件的信息。 该规范以 JSON 表示,适用于 ArcGIS 应用程序和 API 中的地图、场景、布局、图层、符号和样式。 CIM 不仅限于制图设置。 要了解属性的组织方式以及…

使用vue3实现右侧瀑布流滑动时左侧菜单的固定与取消固定

实现效果 实现方法 下面展示的为关键代码,想要查看完整流程及代码可参考https://blog.csdn.net/weixin_43312391/article/details/139197550 isMenuBarFixed为控制左侧菜单是否固定的参数 // 监听滚动事件 const handleScroll () > {const scrollTopThreshol…

数据库系统基础知识

一、基本概念 二、数据库三级模式两级映像 三、数据库的分析与设计过程 四、数据模型 五、关系代数 六、数据库完整性约束 七、关系型数据库SQL简介 八、关系数据库的规范化 九、数据库的控制功能 十、数据仓库与数据挖掘基础 十一、大数据基本概念 数据库基本概念 1、数据库…

Spring 对于事务上的应用的详细说明

1. Spring 对于事务上的应用的详细说明 文章目录 1. Spring 对于事务上的应用的详细说明每博一文案2. 事务概述3. 引入事务场景3.1 第一步:准备数据库表3.2 第二步:创建包结构3.3 第三步:准备对应数据库映射的 Bean 类3.4 第四步:…

hcia datacom学习(10):交换机基础

1.二层交换机工作原理 1.1交换机的5种行为 查看mac地址表的命令为 dis mac-address *一个MAC只能关联在一个接口上,一个接口上可以学习多个MAC *mac地址漂移:mac表中,mac地址的出接口从一个端口变为另一个端口的现象。 造成mac漂移的原因…

操作系统实验四 (综合实验)设计简单的Shell程序

前言 因为是一年前的实验,很多细节还有知识点我都已经遗忘了,但我还是尽可能地把各个细节讲清楚,请见谅。 1.实验目的 综合利用进程控制的相关知识,结合对shell功能的和进程间通信手段的认知,编写简易shell程序&…

轻松拿捏C语言——【字符函数】字符分类函数、字符转换函数

🥰欢迎关注 轻松拿捏C语言系列,来和 小哇 一起进步!✊ 🌈感谢大家的阅读、点赞、收藏和关注💕 🌹如有问题,欢迎指正 感谢 目录👑 一、字符分类函数🌙 二、字符转换函数…

Spring MVC/Web

1.Spring MVC 的介绍 Spring Web MVC是基于Servlet API构建的原始Web框架,也是Spring框架的一部分。它提供了灵活可扩展的MVC架构,方便开发者构建高性能的Web应用程序,并与 Spring 生态系统无缝集成。 2.MVC 设计模式 MVC(Model…

【游戏引擎】Unity脚本基础 开启游戏开发之旅

持续更新。。。。。。。。。。。。。。。 【游戏引擎】Unity脚本基础 Unity脚本基础C#语言简介C#基础 Unity脚本基础创建和附加脚本MonoBehaviour生命周期生命周期方法 示例脚本 Unity特有的API常用Unity API 实践示例:制作一个简单的移动脚本步骤1:创建…