2023 年 数维杯(B题)国际大学生数学建模挑战赛 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2021年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。
让我们来看看数维杯(B题)!
在这里插入图片描述

问题重述:

问题B:棉秆热解的催化反应

随着全球对可再生能源的需求增加,生物质能源因其成熟的可再生能源来源而受到广泛关注。棉秆作为一种农业废弃物,因其富含纤维素和木质素等生物质成分而被视为重要的生物质资源。尽管棉秆的热解可以产生各种形式的可再生能源,但其热解产品的质量和产量受到多种因素的影响,如热解温度和催化剂。因此,研究棉秆热解产物(附录中有名词定义)的机制和性质,以及研究催化剂在热解过程中的机制和影响对于棉秆的高效利用和可持续发展具有重要意义。某个化学工程实验室采用模型化合物法建立了热解组合:硫脱灰灰与棉秆以及硫脱灰灰与模型化合物。通过在不同混合比下对这些热解组合进行热解,以研究硫脱灰灰对棉秆热解产物生成的催化机制和影响。同时,在选择模型化合物时,需要考虑它们在实验过程中的可控性和稳定性,以及它们对棉秆热解的贡献。CE(纤维素寡糖)和LG(木质素)是棉秆中纤维素和木质素的代表性成分,可以更精细地控制实验条件,以研究硫脱灰灰对不同生物质成分的目标催化效应。因此,选择CE和LG作为模型化合物是基于对棉秆生物质组成和化学结构特性的合理判断。实验结果见附录1和附录2。硫脱灰灰/生物质热解实验采用固定床热解,在混合比例为10/100、20/100、30/100、40/100、50/100、60/100、80/100和100/100的情况下进行。这些混合比例的选择基于在这些实验条件下平行实验的相对误差约为5%。如果选择的混合比例太小,如5/100或7/100,相对误差将对实验结果产生显著影响,严重影响实验的探索和优化过程。如果能够使用数学模型和人工智能学习来预测在有限数据条件下的热解产品产量或产量,将不仅极大地减少实验优化所需的时间,还将为热解产品分布变化趋势提供准确指导。请通过数学建模回答以下问题:

  1. 对附录I中的每个热解组合,分析与相应热解组合的混合比相关的热解产物(焦油、水、焦渣、合成气)产量,并解释硫脱灰灰在作为催化剂时是否在促进棉秆、纤维素和木质素热解中发挥重要作用?
  2. 根据附录II,讨论每个三种热解组合的混合比对热解气体产量的影响,并通过制作相应的图像进行解释。
  3. 在相同硫脱灰灰比例的催化作用下,CE和LG的热解产物产量以及热解气体组分的产量是否有显著差异?请提供原因。
  4. 如何建立硫脱灰灰对CE和LG等模型化合物的催化反应机理模型,并对反应动力学进行建模和分析?
  5. 请使用数学模型或人工智能学习方法,在有限数据条件下预测热解产物的产量或数量。

问题一

  1. 建立回归模型:

考虑使用混合比例X和硫脱灰灰的催化作用D对热解产物 Y进行建模:

Y = β 0 + β 1 X + β 2 D + β 3 X D + ϵ Y = \beta_0 + \beta_1 X + \beta_2 D + \beta_3 XD + \epsilon Y=β0+β1X+β2D+β3XD+ϵ

其中:

  • Y 是热解产物的产量。
  • X是混合比例。
  • D是硫脱灰灰的催化作用(取1表示使用,0表示不使用)。
  • β 0 \beta_0 β0 是截距。
  • β 1 \beta_1 β1 是混合比例的系数。
  • β 2 \beta_2 β2是硫脱灰灰催化作用的系数。
  • β 3 \beta_3 β3是混合比例和硫脱灰灰催化作用的交互项的系数。
  • ϵ \epsilon ϵ是误差项。
  1. 最小二乘法估计参数:

最小二乘法的目标是最小化残差平方和:

Minimize  ∑ i = 1 n ( Y i − ( β 0 + β 1 X i + β 2 D i + β 3 X i D i ) ) 2 \text{Minimize } \sum_{i=1}^{n} (Y_i - (\beta_0 + \beta_1 X_i + \beta_2 D_i + \beta_3 X_iD_i))^2 Minimize i=1n(Yi(β0+β1Xi+β2Di+β3XiDi))2

对模型参数 β 0 , β 1 , β 2 , β 3 \beta_0, \beta_1, \beta_2, \beta_3 β0,β1,β2,β3 进行最小二乘法估计,可以得到估计值 β ^ 0 , β ^ 1 , β ^ 2 , β ^ 3 \hat{\beta}_0, \hat{\beta}_1, \hat{\beta}_2, \hat{\beta}_3 β^0,β^1,β^2,β^3

  1. 验证参数显著性:

通过 t 检验来验证参数的显著性。对每个参数进行 t 检验,检验的零假设为参数等于零,备择假设为参数不等于零。如果 t 统计量的 p 值小于显著性水平(通常设为0.05),则可以拒绝零假设,认为该参数是显著的。

这个过程可以使用统计软件进行实施,例如Python中的statsmodels或R中的lm函数。在这些软件中,通常可以得到参数估计、t统计量和p值等信息,用于判断模型的拟合效果和参数的显著性。

import pandas as pd
import statsmodels.api as sm# 读取数据
data = pd.read_excel('附件I.xlsx')  # 假设数据存储在Excel文件中# 数据预处理
X = data[['混合比例', '硫脱灰灰']]
Y = data['热解产物产量']# 添加截距项
X = sm.add_constant(X)# 拟合回归模型
model = sm.OLS(Y, X).fit()# 打印回归结果摘要
print(model.summary())# 参数显著性检验
p_values = model.pvalues
print("\n参数显著性检验:")
for i in range(len(p_values)):print(f"参数 {model.params.index[i]} 的 p 值为 {p_values[i]}")# 预测值
predictions = model.predict(X)# 残差分析
residuals = model.resid
print("\n残差分析:")
print("平均残差:", residuals.mean())
print("残差标准差:", residuals.std())# 绘制预测值与实际值的散点图
import matplotlib.pyplot as plt
#见完整版代码

问题二

  1. 热解组合回归模型建立:

    对于每个热解组合,建立一个回归模型,将混合比例 X作为自变量,热解气体产量(例如,H_2、CO、CO_2、CH_4等)作为因变量。这样的模型可以表示为:

Y i = β 0 i + β 1 i X + ϵ i Y_i = \beta_{0i} + \beta_{1i}X + \epsilon_i Yi=β0i+β1iX+ϵi

其中 Y i Y_i Yi 是热解气体产量, β 0 i \beta_{0i} β0i 是截距, β 1 i \beta_{1i} β1i是混合比例的系数, ϵ i \epsilon_i ϵi是误差项。对于每个热解组合,都会有一个相应的模型。

  1. 最小二乘法参数估计:

    使用最小二乘法对每个热解组合的模型进行参数估计,得到相应的模型参数。

  2. 参数显著性检验:

    对于每个热解组合的模型,进行参数显著性检验,判断混合比例的系数是否显著不等于零。这可以通过 t 检验或 F 检验来实现。显著性检验结果将有助于确定混合比例是否对热解气体产量产生显著影响。

  3. 制作图像进行解释:

    对于每个热解组合,可以制作散点图或折线图,横轴是混合比例 (X),纵轴是相应的热解气体产量。这样的图像有助于直观地理解混合比对热解气体产量的影响。可以分别绘制每个气体的图像,也可以考虑绘制多个气体在同一图中进行对比。

  4. 模型评估:

    在建立模型后,进行模型评估,检查残差是否符合模型假设,如正态性、独立性和同方差性等。这有助于验证模型是否适用于给定数据。

import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
import seaborn as sns# 读取数据
data = pd.read_excel('附件II.xlsx')# 遍历每个热解组合
for combination in data['热解组合'].unique():subset = data[data['热解组合'] == combination]# 数据预处理X = subset[['混合比例']]Y = subset[['H2', 'CO', 'CO2', 'CH4']]  # 假设有这些热解气体产量的数据# 添加截距项X = sm.add_constant(X)# 拟合回归模型model = sm.OLS(Y, X).fit()# 打印回归结果摘要print(f"\n热解组合: {combination}")print(model.summary())# 绘制残差图plt.figure(figsize=(12, 8))for i, gas in enumerate(Y.columns):plt.subplot(2, 2, i + 1)sns.residplot(x=model.predict(), y=model.resid, lowess=True, color='blue')plt.title(f'Residuals vs Fitted for {gas}')plt.xlabel('Fitted values')plt.ylabel('Residuals')

问题三

  1. 热解产物建模:

    a. 选择模型类型: 针对CE和LG两种模型类型,分别建立回归模型。对于热解产物(tar、water、char等),建立对应的回归模型,其中混合比例 (X) 是自变量。

    b. 数据预处理: 提取所需的数据,包括混合比例和热解产物的产量。对数据进行处理,确保数据质量和一致性。

    c. 回归模型建立: 使用最小二乘法拟合回归模型,建立混合比例与热解产物之间的关系。

    d. 模型评估: 检查模型的拟合效果,分析残差是否满足模型假设,如正态性、独立性和同方差性。

    e. 参数显著性检验: 对回归模型的参数进行显著性检验,判断混合比例的系数是否显著不等于零。

  2. 热解气体建模:

    a. 选择模型类型: 对于CE和LG两种模型类型,分别建立回归模型。对于热解气体(H2、CO、CO2、CH4等),建立对应的回归模型,其中混合比例 (X) 是自变量。

    b. 数据预处理: 提取所需的数据,包括混合比例和热解气体的产量。对数据进行处理,确保数据质量和一致性。

    c. 回归模型建立: 使用最小二乘法拟合回归模型,建立混合比例与热解气体之间的关系。

    d. 模型评估: 检查模型的拟合效果,分析残差是否满足模型假设,如正态性、独立性和同方差性。

    e. 参数显著性检验: 对回归模型的参数进行显著性检验,判断混合比例的系数是否显著不等于零。

  3. 结果解释与比较:

    a. 制作图像: 为每个模型制作图像,以直观展示混合比例对热解产物和热解气体的影响。可以考虑绘制散点图、折线图等。

    b. 参数比较: 比较两种模型中混合比例的系数,看是否存在显著差异。这有助于理解不同模型对热解产物和热解气体产量的影响是否相似。

    c. 模型解释: 解释模型中各项参数的物理或化学意义,帮助理解混合比例对热解产物和热解气体的具体影响机制。

    d. 总结结论: 对CE和LG的热解产物和热解气体建立的模型进行综合比较,总结各自特点,并得出对于相同硫脱灰灰作用下的热解过程的结论。

import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
import seaborn as sns# 读取数据
data = pd.read_excel('附件III.xlsx')# 遍历每个模型类型
for model_type in data['模型类型'].unique():subset = data[data['模型类型'] == model_type]# 数据预处理X = subset[['混合比例']]Y = subset[['tar', 'water', 'char', 'H2', 'CO', 'CO2', 'CH4']]# 添加截距项X = sm.add_constant(X)# 拟合回归模型model = sm.OLS(Y, X).fit()# 打印回归结果摘要print(f"\n模型类型: {model_type}")print(model.summary())# 绘制残差图plt.figure(figsize=(12, 8))for i, component in enumerate(Y.columns):plt.subplot(2, 4, i + 1)sns.residplot(x=model.predict(), y=model.resid, lowess=True, color='blue')plt.title(f'Residuals vs Fitted for {component}')plt.xlabel('Fitted values')plt.ylabel('Residuals')plt.tight_layout()plt.show()# 参数显著性检验p_values = model.pvaluesprint("\n参数显著性检验:")for i in range(len(p_values)):print(f"参数 {model.params.index[i]} 的 p 值为 {p_values[i]}")# 模型评估print("\n模型评估:")print("平均残差:", model.resid.mean())print("残差标准差:", model.resid.std())# 绘制预测值与实际值的散点图plt.figure(figsize=(12, 8))for i, component in enumerate(Y.columns):plt.subplot(2, 4, i + 1)plt.scatter(X['混合比例'], Y[component], label=f"{component} 实际值")plt.plot(X['混合比例'], model.predict(X), label=f"{component} 预测值")plt.xlabel('混合比例')plt.ylabel(f'{component} 产量')

问题四

  1. 选择一级反应动力学模型:

    • 假设反应遵循一级反应动力学,即 A → B A \rightarrow B AB的简化反应。该模型的速率方程可表示为:

    − d [ A ] d t = k [ A ] -\frac{d[A]}{dt} = k[A] dtd[A]=k[A]

    这里,[A] 是反应物 A 的浓度,k 是速率常数。

  2. 数据预处理:

    • 提取实验数据,包括反应时间 (t) 和产物的浓度。确保数据质量,进行异常值处理和缺失值填充。
  3. 模型参数估计:

    • 使用最小二乘法拟合一级反应动力学模型,估计速率常数 (k)。

ln ⁡ ( [ A ] 0 / [ A ] ) = k t \ln([A]_0/[A]) = kt ln([A]0/[A])=kt

其中 [ A ] 0 [A]_0 [A]0是初始反应物 A 的浓度。

  1. 模型评估与 t 检验:

    • 检查模型的拟合效果,分析残差是否满足模型假设。
    • 进行 t 检验,检验速率常数k是否显著不等于零。如果 k 的 p 值小于显著性水平(通常设定为 0.05),则可以拒绝k=0的假设。
  2. 模型选择与比较:

    • 如果有其他可能的反应动力学模型,使用信息准则(如AIC、BIC)进行模型选择和比较。
  3. 预测与解释:

    • 利用建立的一级反应动力学模型进行预测,分析反应时间对产物浓度的影响。
    • 解释模型中的速率常数 k,了解反应动力学的化学或物理含义。
  4. 灵敏度分析:

    • 进行灵敏度分析,了解模型参数对预测结果的影响程度。
  5. 结果可视化:

    • 制作图表,展示建立的一级反应动力学模型在CE和LG反应过程中的拟合情况,以及反应时间与产物浓度之间的关系。
  6. 结论与讨论:

    • 总结对CE和LG的一级反应动力学建模结果,讨论模型的适用性、局限性和未来可能的改进方向。
import pandas as pd
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt# 读取数据
data = pd.read_excel('反应动力学数据.xlsx')# 数据预处理
t = data['反应时间'].values
A_concentration = data['反应物浓度'].values# 添加截距项
t = sm.add_constant(t)# 拟合一级反应动力学模型
model = sm.OLS(np.log(A_concentration), t).fit()# 打印回归结果摘要
print(model.summary())

问题五

  1. 数据准备与理解:

    • 理解实验数据的特征和分布,确保数据集包括输入特征(如温度、时间、催化剂浓度)和目标变量(产物产量)。
    • 将数据分割为训练集和测试集。
  2. 特征选择与工程:

    • 选择合适的输入特征,可考虑使用领域知识和特征重要性分析。
    • 对特征进行必要的预处理,如归一化或标准化。
  3. 建立随机森林模型:

    • 使用训练集训练随机森林回归模型,可以使用Scikit-Learn中的RandomForestRegressor类。
    • 设置合适的超参数,如树的数量(n_estimators)。
  4. 模型评估:

    • 使用测试集评估模型性能,使用均方误差(MSE)等指标来评估预测效果。
  5. 特征重要性分析:

    • 随机森林提供了特征重要性的信息,可通过feature_importances_属性获取。
    • 分析特征重要性,了解哪些特征对于预测产物产量影响最大。
  6. 调参优化:

    • 调整随机森林的超参数,如树的深度、最小分割样本数等,以优化模型性能。
    • 可以使用交叉验证等技术进行调参。
  7. 结果可视化:

    • 将实际产物产量与模型预测进行可视化,通过散点图或其他图表比较两者。
  8. 模型解释与应用:

    • 解释模型的预测结果,了解各特征对产物产量的相对重要性。
    • 将模型应用于新数据集进行预测,如果性能满足要求,可以考虑部署模型到实际应用中。
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt# 读取数据
data = pd.read_excel('热解产物数据.xlsx')# 数据预处理
X = data[['温度', '时间', '催化剂浓度']]  # 输入特征
y = data['产物产量']  # 目标变量# 分割数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建随机森林模型
model = RandomForestRegressor(n_estimators=100, random_state=42)# 训练模型
model.fit(X_train, y_train)# 预测测试集
predictions = model.predict(X_test)# 评估模型性能
mse = mean_squared_error(y_test, predictions)
print(f'Mean Squared Error: {mse}')# 可视化预测结果
plt.scatter(y_test, predictions)

更多完整思路+代码看这里:
2023 年 数维杯(B题)国际大学生数学建模挑战赛

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

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

相关文章

LeetCode617. Merge Two Binary Trees

文章目录 一、题目二、题解 一、题目 You are given two binary trees root1 and root2. Imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not. You need to merge the two trees into a new b…

一文看懂Spark中Cache和CheckPoint的区别

目录 循循渐进理解使用Cache或者PersistCheckPoint缓存和CheckPoint的区别 循循渐进理解 wc.txt数据 hello java spark hadoop flume kafka hbase kafka flume hadoop看下面代码会打印多少条-------------------------(RDD2) import org.apache.spark.rdd.RDD import org.ap…

PHP调用调用API接口的方法及实现

随着互联网、云计算和大数据时代的到来,越来越多的应用程序需要调用第三方的API接口来获取数据,实现数据互通和协同工作。PHP作为一种常用的服务器端语言,也可以通过调用API接口来实现不同系统的数据交互和整合。本文将介绍PHP调用电商API接口…

Jmeter- Beanshell语法和常用内置对象(网络整理)

在利用jmeter进行接口测试或者性能测试的时候,我们需要处理一些复杂的请求,此时就需要利用beanshell脚本了,BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法,所以它和java是可以无缝衔接的。beans…

RK3588平台开发系列讲解(摄像头篇)USB摄像头驱动分析

🚀返回专栏总目录 文章目录 一. USB摄像头基本知识1.1 内部逻辑结构1.2 描述符实例解析二. UVC驱动框架2.1、设备枚举过程2.2、数据传输过程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 USB摄像头驱动位于 drivers\media\usb\uvc\uvc_driver.c ,我们本篇重点看下…

MacOS设置JAVA_HOME环境变量

首先先查看一下,系统当前使用的java是谁,可以使用/usr/libexec/java_home命令 % /usr/libexec/java_home /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home检查一下这个路径下的文件,发现这是一个jre的目录。加上-V参数看…

Redis篇---第二篇

系列文章目录 文章目录 系列文章目录一、为什么 使用 Redis 而不是用 Memcache 呢?二、为什么 Redis 单线程模型效率也能那么高?三、说说 Redis 的线程模型一、为什么 使用 Redis 而不是用 Memcache 呢? 这时候肯定想到的就是做一个 Memcache 与 Redis 区别。 Redis 和 Mem…

移动机器人路径规划(二)--- 图搜索基础,Dijkstra,A*,JPS

目录 1 图搜索基础 1.1 机器人规划的配置空间 Configuration Space 1.2 图搜索算法的基本概念 1.3 启发式的搜索算法 Heuristic search 2 A* Dijkstra算法 2.1 Dijkstra算法 2.2 A*&&Weighted A*算法 2.3 A* 算法的工程实践中的应用 3 JPS 1 图搜索基础 1.1…

AD教程 (十六)常用PCB封装的直接调用

AD教程 (十六)常用PCB封装的直接调用 打开已经做好的PCB文件 点击设计,生成PCB库,会自动把PCB里所用到的所有封装,全部自动生成 CtrlA 将所有元器件的封装全部选中(或者只选中所需要的)&#x…

TikTok与心灵成长:娱乐与启发并重

社交媒体已成为我们生活的一部分,其中TikTok以其短视频内容和创新性而闻名。然而,TikTok不仅仅是一个娱乐平台,它还具有潜力成为心灵成长的有力工具。本文将探讨TikTok如何在娱乐与启发之间取得平衡,以促进心灵成长和积极影响。 娱…

利用curl测试WSS连接的建立

记录下: curl -vvv --include --no-buffer \ --header "Connection: Upgrade" \ --header "Upgrade: websocket" \ --header "Host: transcribestreaming.us-east-1.amazonaws.com:8443" \ --header "Origin: http://localhost…

IntelliJ IDEA启动一个普通的java web项目的配置

原创/朱季谦 这是我很久以前刚开始用IntelliJ IDEA时记录的笔记,应该是五年前的一篇笔记了。正好赶上最近离职了,可以有比较多的时间把以前的记录整理一下,可以让刚接触到IntelliJ IDEA的童鞋学习如何在IntelliJ IDEA引入一个单机版的jar形式…

蓝桥杯 冒泡排序

冒泡排序的思想 冒泡排序的思想是每次将最大的一下一下移动到最右边,然后将最右边这个确定下来。 再来确定第二大的,再确定第三大的… 对于数组a[n],具体来说,每次确定操作就是从左往右扫描,如果a[i]>a[i1],我们将…

Android问题笔记四十五:解决SeekBar操作thumb周围产生的圆形阴影/灰色阴影/白色圆圈的解决办法

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列点击跳转>ChatGPT和AIGC 👉关于作者 专…

如何在Ubuntu 23.10部署KVM并创建虚拟机?

正文共:1114 字 21 图,预估阅读时间:2 分钟 我们之前对OpenStack醉过一次简单介绍(什么是OpenStack?),OpenStack本身是一个云管理平台,它本身并不提供虚拟化功能,而是依赖…

Mac环境配置的相关知识

Mac中配置环境的三个途径: 1.open/vim /etc/profile (建议不修改这个文件)全局(公有)配置,不管是哪个用户,登录时都会读取该文件(一般在这个文件中添加系统级环境变量) 2./etc/bashrc全局(公有)配置,bash shell执行时&#xff0…

第二证券:今日投资前瞻:小米汽车引关注 全球风光有望持续高速发展

昨日,两市股指盘中轰动上扬,深成指、创业板指一度涨超1%。到收盘,沪指涨0.55%报3072.83点,深成指涨0.72%报10077.96点,创业板指涨0.53%报2015.36点,北证50指数涨2.64%;两市算计成交9900亿元&…

JVM——类加载器(JDK8及之前,双亲委派机制)

目录 1.类加载器的分类1.实现方式分类1.虚拟机底层实现2.JDK中默认提供或者自定义 2.类加载器的分类-启动类加载器3.类加载器的分类-Java中的默认类加载器4.类加载器的分类-扩展类加载器5.类加载器的分类-类加载器的继承 2.类加载器的双亲委派机制 类加载器(ClassLo…

MySQL库操作

创建一个数据库,本质就是在Linux下创建一个目录。 当要使用一个库时,先 use 数据库名字。 使用数据库,相当于Linux下的cd命令 附:systen clear mysql内无法直接使用clear,但可以使用systen clear(系统调用…

Ansys Electronics Desktop仿真——HFSS线圈寄生电阻,电感

利用ANSYS Electronics Desktop,可在综合全面、易于使用的设计平台中集成严格的电磁场分析和系统电路仿真。按需求解器技术让您能集成电磁场仿真器和电路及系统级仿真,以探索完整的系统性能。 HFSS(High Frequency Structure Simulator&#…