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
英文地址,請注明出處:http://en.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文件,前端讀取如何優化 面試我的不像是…