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

news2024/11/26 22:36:55

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为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.pvalues
    print("\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.coloradmin.cn/o/1219170.html

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

相关文章

【softmax和sidmod 快速学习和 用法对比】

Softmax函数和Sigmoid函数(也称为Logistic函数)在某些方面有相似之处,但它们在使用和适用场景上有一些不同。 首先,Sigmoid函数适用于二分类问题,将模型输出映射到0和1之间的概率值,表示样本属于正类的概率…

Git面经

Git八股文 第一章 git基础 1.1 什么是git git是一款免费的开源的分布式版本控制系统 1.2 为什么要使用git 为了保留之前的所有版本,方便回滚或修改 1.3 集中化版本控制系统和分布式版本控制系统的区别 集中化版本控制系统如svn,客户端连接到中央服…

RedHat公司及红帽认证介绍丨红帽认证等级介绍

RedHat公司及红帽认证介绍 红帽公司成立工1993年,是全球首家收入超10亿美元的开源公司,总部位于美国,分支机构遍布全球。红帽公司作头全球领先的开源和Linux系统提供商,其产品已被业界广泛认可并使用,尤其是RHEL系统在…

AD教程 (十七)3D模型的创建和导入

AD教程 (十七)3D模型的创建和导入 对于设计者来讲,现在3DPCB比较流行,3DPCB,除了美观之外,做3D的最终的一个目的,是为了去核对结构,就是我们去做了这么一个PCB之后,如果说…

033、微调

之——高级炼丹术 目录 之——高级炼丹术 杂谈 正文 1.标注数据集是很贵的 2.微调的思想 3.尝试 小结 杂谈 微调(Fine-tuning)是深度学习中的一种常见策略,它通常用于预训练模型在特定任务上的性能提升。微调的过程涉及在一个已经在大…

构建自定义ChatGPT,微软推出Copilot Studio

11月16日,微软在美国西雅图举办“Microsoft Ignite 2023”全球开发者大会。本次人工智能成为重要主题,微软几乎把所有产品都集成了生成式AI功能并发布了一系列全新产品。 其中,微软重磅推出了Copilot Studio(预览版)&…

001.前置知识

1、硬件 我们知道,组成计算机的硬件主要有“主机”和“输入/输出设备”。 主机包括机箱、电源、主板、CPU(Central Processing Unit,中央处理器)、内存、显卡、声卡、网卡、 硬盘、光驱等。输入/输出设备包括显示器、键盘、鼠标…

五分钟,Docker安装kafka 3.5,kafka-map图形化管理工具

首先确保已经安装docker,如果是windows安装docker,可参考 wsl2安装docker 1、安装zk docker run -d --restartalways -e ALLOW_ANONYMOUS_LOGINyes --log-driver json-file --log-opt max-size100m --log-opt max-file2 --name zookeeper -p 2181:218…

ssm+vue的OA办公系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的OA办公系统(有报告)。Javaee项目,ssm vue前后端分离项目。 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 项目介绍&a…

中心极限定理

中心极限定理是统计学中的一个基本定理,它描述了在满足一定条件的情况下,独立随机变量的均值的分布会在样本容量足够大时趋近于正态分布。中心极限定理为许多统计推断方法的合理性提供了理论基础。 中心极限定理有两种常见的表述:独立同分布…

数据库逗号分割数据查询

遇到一个A表某个字段是B表某个字段拼接而成的。 A一对多B表 即表A某个字段存了B表多个单号或者多个ID,一开始想的是要处理数据想办法分割字符串出来然后关联,百度了下没找到,但是看到PostgreSql数据库可以实现 然后尝试了下 发现可以 第一…

学习指南:如何快速上手媒体生态一致体验开发

过去开发者们在使用多媒体能力时,往往会遇到这样的问题,比如:为什么我开发的相机不如系统相机的效果好?为什么我的应用和其他的音乐一起发声了,我要怎么处理?以及我应该怎么做才能在系统的播控中心里可以看…

中文撰稿好用软件推荐TexPage(似于Overleaf)

由于本人用惯了overleaf所以找到了一个与他功相似的也同样是利用tex写文章。唯一的区别可能也就是overleaf只支持英文,而TexPage中英文都支持。关键是不花钱,好用好用好用,用起来! 平台网址:https://www.texpage.com/…

C/C++算法-----------------------双指针详解技巧及例题

双指针 基本介绍降低时间复杂度降低时间复杂度例题 验证回文串判断是否为环反转链表总结 基本介绍 双指针(two poinnters)实际上是一种算法编程里的一种思想,它更像是一种编程思想,提供看非常高的算法效率,一般来说双…

Android——gradle插件配置方式——dependencies和plugins

引言 我们知道Android studio 需要gradle插件进行构建和编译,随着AGP的升级,引入gradle插件也发生了变化。旧版本通过build.gradle文件中dependencies代码块引入,新版本通过plugins代码块引入 一、旧版本引入方式dependencies 二、新版本引入…

解决java在idea运行正常,但是打成jar包后中文乱码问题

目录 比如: 打包命令使用utf-8编码: 1.当在idea中编写的程序,运行一切正常.但是当被打成jar包时,执行的程序会中文乱码.产生问题的原因和解决方案是什么呢? 一.问题分析 分别使用idea和jar包形式打印出System中所有的jvm参数---代码如下: public static…

一文揭秘共享wifi二维码项目推广技巧!

随着无线网络的普及和移动互联网的快速发展,共享WiFi已成为人们生活中不可或缺的一部分。共享WiFi二维码项目作为一个独具创意的共享项目,将二维码推广与共享WiFi相结合,不仅可以提升品牌曝光度,还能为用户提供便捷的上网体验。那…

windows10通过L2TP VPN隧道连接到企业内网

L2TP协议通过为数据包创建一个虚拟通道,将数据从一个网络传输到另一个网络,而不用担心数据在途中被窃取或篡改。它创建一个点对点的隧道,通过封装PPP(Point-to-Point Protocol)数据包在其内部进行传输,极大…

JSON 格式的接口测试流程【Eolink Apikit】

在进行JSON格式的接口测试时,需要使用工具发送HTTP请求并获取响应。测试工具可以是单独的测试框架,如 Eolink Apikit。测试人员需要根据接口文档和测试用例编写测试脚本,然后运行测试并分析结果,以确保接口的质量和稳定性。 当我…