2023年数维杯国际赛B题赛题解题思路+部分代码

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

B题催化剂为背景的题目,该赛题与2021年国赛B题高度相仿。同时,本人21年带了一队国一、一队国二。出于对这个赛题的特殊感情,本次竞赛的所有助攻将围绕这个问题展开(论文、代码、数据结果等),下面对B题进行简要的思路介绍。

2023年数维杯国际赛B题赛题解题思路+部分代码_第1张图片

数据类题目,第一步都是数据预处理。无论到底有没有异常值、缺失值都要进行处理。及时没有异常值、缺失值也要说,进行了相应的处理,未发现异常值。(可以参考2017年国赛C题的数据预处理,数据没问题,组委会仍然设置了10分的数据预处理分值)。然后对于给出的数据简单的绘制散点图,进行描述即可完成数据预处理的工作。

(1)对于附件一中的每个热解组合,分析热解产物(焦油、水、焦炭渣、合成气)的收率与相应热解组合的混合比的关系,并说明脱硫灰作为催化剂是否对促进棉秸秆、纤维素和木质素的热解有重要作用?

问题一,对附件一进行分析分析热解产物(焦油、水 、焦炭渣、合成气)的收率与相应热解组合的混合比的关系。简单的做法利用数据处理绘制的散点图直接描述正负相关即可,这样这一问可以直接拿到60%的分数。如果不满足可以直接分析折线图判断反应机理,拟合出确切的函数关系。后者大概可以拿到70-80%的分数。

创新点,可以使用相关性分析得出指标值之间的关系,利用矩阵热力图等,增加可视化效果。这样就可以多拿分。

下面是python绘图代码,也可以使用matlab或者excel都是可以的

MixtureRatio:混合比(例如 10/100, 20/100, ...)
TarYield:焦油产率
WaterYield:水产率
CharYield:焦炭渣产率
GasYield:合成气产率
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 替换以下路径为你的实际文件路径
file_path = 'path_to_your_data.xlsx'
data = pd.read_excel(file_path)
# 基本统计描述
description = data.describe()
print(description)
# 假设混合比是以 '10/100' 这种格式存储的,我们需要转换它为数值型
data['MixtureRatio'] = data['MixtureRatio'].apply(lambda x: int(x.split('/')[0]))
 
# 制作散点图
plt.figure(figsize=(12, 8))
sns.scatterplot(x='MixtureRatio', y='TarYield', data=data, label='焦油产率')
sns.scatterplot(x='MixtureRatio', y='WaterYield', data=data, label='水产率')
sns.scatterplot(x='MixtureRatio', y='CharYield', data=data, label='焦炭渣产率')
sns.scatterplot(x='MixtureRatio', y='GasYield', data=data, label='合成气产率')
plt.xlabel('混合比')
plt.ylabel('产率')
plt.title('热解产物收率与混合比的关系')
plt.legend()
plt.show()

2023年数维杯国际赛B题赛题解题思路+部分代码_第2张图片

2023年数维杯国际赛B题赛题解题思路+部分代码_第3张图片

(2) 根据附件二,对于三种热解组合中的每一种,通过制作相应的图像,讨论了热解组合的混合比对产率的影响,并解释了每组热解气体的影响。

问题二,对附件二进行分析处理。首先制作相应的图像,这里绘制散点图就可以或者折线图。讨论了热解组合的混合比对产率的影响,可以类似与问题一的简单做法,直接讨论正负相关。也可以尝试得到确切的函数关系。

基本步骤与问题一相同。无非就是对数据绘制折线图,进行文字描述分析,最后可以加入一个相关性分析增加亮点。

(3) 在相同比例的脱硫灰的催化作用下,CE和LG热解产物的产率以及热解气组分的产率是否存在显著差异?请提供理由。

问题三,对同种比例下的结果进行显著性分析即可。什么是显著性分析,大家去上网一查就能学会。下面给出部分实现代码。

 2023年数维杯国际赛B题赛题解题思路+部分代码_第4张图片

import pandas as pd
from scipy import stats
# 替换以下路径为你的实际文件路径
file_path = 'path_to_your_data.xlsx'
data = pd.read_excel(file_path)
 
# 假设混合比是以 '10/100' 这种格式存储的,我们需要转换它为数值型
data['MixtureRatio'] = data['MixtureRatio'].apply(lambda x: int(x.split('/')[0]))
group1 = data[data['MixtureRatio'] == 10]['TarYield']
group2 = data[data['MixtureRatio'] == 20]['TarYield']
# 使用 ttest_ind 函数进行两独立样本的t检验
t_statistic, p_value = stats.ttest_ind(group1, group2)
 
# 输出结果
if p_value < 0.05:  # 假设显著性水平为 0.05
    print(f'两组数据在显著性水平下存在显著差异,t统计量为 {t_statistic:.3f}, p值为 {p_value:.3f}')
else:
    print(f'两组数据在显著性水平下没有显著差异,t统计量为 {t_statistic:.3f}, p值为 {p_value:.3f}')
 
或者是matlab代码
% 假设数据已经导入到 MATLAB,存在于表格 'data' 中
% data 包含列 'MixtureRatio' 和 'TarYield'
% 假设我们比较的是混合比为10和20的两组数据
group1 = data.TarYield(data.MixtureRatio == 10);
group2 = data.TarYield(data.MixtureRatio == 20);
% 使用 ttest2 函数进行两独立样本的t检验
% 返回值 h 是检验的结果(0 表示接受零假设,即认为没有显著差异;1 表示拒绝零假设,即存在显著差异)
% p 是检验的 p 值
[h, p] = ttest2(group1, group2);
 
% 输出结果
if h == 1
    fprintf('两组数据在显著性水平下存在显著差异,p 值为 %.3f\n', p);
else
    fprintf('两组数据在显著性水平下没有显著差异,p 值为 %.3f\n', p);
End

 

注意事项:

数据正态性:t检验通常假设数据是正态分布的。如果数据不符合这一假设,可能需要使用其他类型的检验,如非参数检验(例如Wilcoxon rank-sum test)。

数据方差齐性:t检验还假设两组数据具有相同的方差。如果不确定是否满足这一假设,可以使用Levene's test来检验方差齐性。

(4) 如何建立CE、LG等模型化合物的脱硫灰的催化反应机理模型,并建立反应动力学模型进行分析?

问题四,可以理解为想要我们得到确切的函数表达式,即随着比例的变化,生成的产物的变化等等。这里就可以直接使用回归分析得到一元线性或者非线性表达式即可。

(5) 请使用数学模型或人工智能学习方法来制作在有限的数据条件下,对热解产物的产量或数量的预测。

问题五,预测模型。简单的可以直接使用问题四的函数表达式进行回归预测。复杂的可以根据题目说的使用机器学习进行月都是可以的。前者更加注重问题模型的整体新,后者模型更加高级。想要融合两者,可以使用加权平均预测。

下面是论文中,加权预测的部分,大家可以赏析一下。

 2023年数维杯国际赛B题赛题解题思路+部分代码_第5张图片2023年数维杯国际赛B题赛题解题思路+部分代码_第6张图片

你可能感兴趣的:(算法)