2024年辽宁省数学建模竞赛C题超详细解题思路+问题一案代码分享
因此,本文将对C题的解题思路以及将要面对的问题,进行详细的说明。增加新的实验应尽量覆盖未探索过的区域,并基于优化结果进行微调,以验证模型的准确性和提高数据的多样性。对于绘制初始数据的可视化结果,可以分开绘制多张折线图、也可以绘制三维图甚至可以绘制多维度的二维图,以下是对于ROX去除率(%)的几种可视化结。在所有温度和吸附剂用量条件下,pH 3、pH 5、pH 6 条件下的 ROX 去除率明显高于
本文将为大家带来2024年C题超详细解题思路,本次竞赛6000人参加,共计2400+队伍。C题作为本次竞赛中最简单的一道题目,意味着选题人数也将是最多的。因此,本文将对C题的解题思路以及将要面对的问题,进行详细的说明。希望我们的思路能够对大家的解题有所帮助。
C题与2021年国赛C4烯烃的制备(研究不同催化剂组合下的最优解)高度相似,我给大家收集了当年的优秀论文,大家可以有选择地进行参考。
C题相关优秀论文+问题一数据预处理代码分享链接:https://pan.baidu.com/s/1wpNZYW5v8jf2iM0uB7pDEA
提取码:sxjm
首先,第一步对于数据类型的题目应该是进行必要的数据处理,不可以直接进行解题。2023年国赛ABC题数据预处理部分都至少设置了10分的分值。因此,大家的论文中一定要有相关的预处理体现。数据预处理即需要进行缺失值、异常值、降维以及必要的数据分析。本文给出的数据,基本不存在异常值、缺失值。但是论文中必须有相关部分的体现,即使是没有处理的结果是没有异常数据也要有相关工作的体现
对于绘制初始数据的可视化结果,可以分开绘制多张折线图、也可以绘制三维图甚至可以绘制多维度的二维图,以下是对于ROX去除率(%)的几种可视化结
问题一、当其他反应条件一定时,分别探讨反应温度,溶液 pH,吸附剂用量对 As(V)和 ROX 去除率的影响。
对于问题一,主要思路是首先一共四种结果,三种情况,需要进行12次单独分析。我们这里仅仅选取一个为例进行说明(其他放于附录或者支撑材料即可),最后还要考虑所有因素对去除率的综合影响(为问题二做铺垫)。
对于分析过程,可以直接选择绘制折线图+文字描述【三等奖】,也可以绘制折线图+回归模型、因子分析模型、响应面方法+文字描述【一等奖】,
我们以ROX去除率(%)为例进行说明。可以绘制下图的折线图,进行部分说明
· 反应温度对 ROX 去除率的影响:
- 在 pH 3 和 pH 5 条件下,随着温度的升高,ROX 去除率略有下降,但整体变化不大。
- 在 pH 7 和 pH 9 条件下,随着温度的升高,ROX 去除率有较明显的下降。
· 溶液 pH 对 ROX 去除率的影响:
- 在所有温度和吸附剂用量条件下,pH 3、pH 5、pH 6 条件下的 ROX 去除率明显高于 pH 7 和 pH 9。
- pH 7 和 pH 9 条件下的 ROX 去除率较低,尤其在较高温度下更为明显。
· 吸附剂用量对 ROX 去除率的影响:
- 随着吸附剂用量的增加,ROX 去除率显著提高,尤其在高温和低 pH 条件下效果更为明显。
- 较高吸附剂用量(0.8 g/L 和 1.0 g/L)时,ROX 去除率接近 100%。
也可以进行回归模型、因子分析模型、响应面方法,下面就是回归i分析以及因子分析的结果图,仅供参考。
问题三、如果允许再增加 5 次实验,应如何设计,并给出详细理由。
为了设计新的实验,我们需要充分利用已经得到的优化结果和模型信息。增加新的实验应尽量覆盖未探索过的区域,并基于优化结果进行微调,以验证模型的准确性和提高数据的多样性。下面是详细步骤和理由。
新实验设计思路
覆盖未探索区域:选择在参数空间中未充分覆盖的区域进行实验,以增加数据的多样性。
验证优化结果:在接近优化结果的参数范围内进行实验,以验证模型预测的准确性。
均匀分布实验点:在整个参数空间内均匀分布新的实验点,确保模型的广泛适用性。
具体实验点选择
根据之前的优化结果(温度为15°C,pH为3,吸附剂用量为0.2 g/L),我们可以在此基础上选择以下五个新的实验点:
温度稍微增加,其他条件不变:T=20 °C,pH=3,A=0.2 g/L
pH 稍微增加,其他条件不变:T=15 ° ,pH=4,A=0.2 g/L
吸附剂用量稍微增加,其他条件不变:T=15 °,pH=3,A=0.3 g/L
在优化结果附近的高温低pH区域:T=25 °C,pH=3,}A=0.2g/L
覆盖未充分探索的区域:T=35 °C,pH=5,A=0.5 g/L ,
新实验设计的理由
第一个实验点:温度稍微增加,验证温度对吸附量的影响。
第二个实验点:pH 稍微增加,验证 pH 对吸附量的影响。
第三个实验点:吸附剂用量稍微增加,验证吸附剂用量对吸附量的影响。
第四个实验点:在优化结果附近的高温低pH区域,验证模型的准确性。
第五个实验点:覆盖未充分探索的区域,增加数据的多样性。
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用SimHei字体
plt.rcParams['axes.unicode_minus'] = False # 正确显示负号
# 数据预处理
data = {
'Temperature (°C)': [15, 25, 30, 35, 45] * 5,
'Adsorbent (g/L)': [0.2]*5 + [0.4]*5 + [0.6]*5 + [0.8]*5 + [1.0]*5,
'pH 3': [77.56, 77.03, 75.65, 75.90, 80.60, 94.50, 93.03, 90.80, 90.97, 95.30, 97.12, 96.10, 93.78, 94.27, 97.89, 99.43, 99.30, 96.89, 97.31, 99.28, 99.46, 99.17, 97.45, 97.46, 99.45],
'pH 5': [77.23, 76.82, 74.89, 75.65, 79.53, 94.63, 92.34, 89.98, 90.89, 94.78, 96.34, 95.45, 93.99, 94.54, 96.67, 99.13, 99.10, 96.70, 97.12, 99.10, 99.40, 99.34, 98.34, 98.88, 99.42],
'pH 6': [77.05, 76.40, 74.38, 74.79, 78.89, 94.02, 92.59, 90.34, 90.26, 94.30, 96.30, 95.30, 93.03, 93.83, 96.94, 99.23, 98.93, 96.95, 97.04, 98.76, 99.27, 98.94, 96.87, 96.97, 99.37],
'pH 7': [34.89, 32.62, 30.23, 30.85, 35.90, 53.37, 53.29, 51.78, 52.43, 56.39, 39.25, 38.75, 37.17, 38.02, 40.38, 45.38, 42.13, 41.89, 42.78, 42.58, 48.78, 48.27, 45.48, 45.90, 47.89],
'pH 9': [26.17, 25.77, 24.89, 25.30, 28.10, 46.89, 46.78, 43.20, 44.10, 47.72, 32.12, 32.10, 30.47, 30.27, 39.31, 32.98, 30.68, 32.46, 34.23, 34.59, 35.23, 35.67, 34.97, 33.76, 34.03]
}
# Convert data into a DataFrame
df = pd.DataFrame(data)
# Plotting
plt.figure(figsize=(14, 10))
sns.lineplot(data=df, x='Temperature (°C)', y='pH 3', hue='Adsorbent (g/L)', marker='o')
sns.lineplot(data=df, x='Temperature (°C)', y='pH 5', hue='Adsorbent (g/L)', marker='o', linestyle='--')
sns.lineplot(data=df, x='Temperature (°C)', y='pH 6', hue='Adsorbent (g/L)', marker='o', linestyle='-.')
sns.lineplot(data=df, x='Temperature (°C)', y='pH 7', hue='Adsorbent (g/L)', marker='o', linestyle=':')
sns.lineplot(data=df, x='Temperature (°C)', y='pH 9', hue='Adsorbent (g/L)', marker='o', linestyle='-')
plt.title('ROX Removal Rate (%) at Different Conditions')
plt.xlabel('Temperature (°C)')
plt.ylabel('ROX Removal Rate (%)')
plt.legend(title='pH and Adsorbent (g/L)', loc='best')
plt.grid(True)
plt.show()
# Plotting different pH conditions separately for better visualization
plt.figure(figsize=(16, 24))
# Different pH conditions
pH_values = ['pH 3', 'pH 5', 'pH 6', 'pH 7', 'pH 9']
# Plot each pH condition
for i, pH in enumerate(pH_values):
plt.subplot(5, 1, i+1)
sns.lineplot(data=df, x='Temperature (°C)', y=pH, hue='Adsorbent (g/L)', marker='o', palette='tab10')
plt.title(f'ROX Removal Rate at {pH}')
plt.xlabel('Temperature (°C)')
plt.ylabel('ROX Removal Rate (%)')
plt.legend(title='Adsorbent (g/L)')
plt.grid(True)
plt.tight_layout()
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
# 数据处理
data_rox_absorption = {
'Temperature (°C)': [15, 25, 30, 35, 45] * 5,
'Adsorbent (g/L)': [0.2]*5 + [0.4]*5 + [0.6]*5 + [0.8]*5 + [1.0]*5,
'pH 3': [40.38, 40.10, 39.86, 39.00, 34.52, 24.54, 25.02, 25.78, 24.19, 22.46, 12.39, 12.35, 12.01, 11.40, 10.41, 9.88, 9.87, 9.87, 9.73, 9.04, 8.42, 8.36, 8.49, 7.45, 7.44],
'pH 5': [40.10, 39.70, 39.89, 38.73, 34.28, 24.37, 24.85, 25.60, 24.02, 22.30, 12.30, 12.69, 11.93, 11.32, 10.34, 9.81, 9.85, 9.81, 9.69, 9.04, 8.36, 8.30, 8.43, 7.51, 7.39],
'pH 6': [39.86, 39.46, 39.65, 38.49, 34.07, 24.22, 24.70, 25.44, 23.87, 22.16, 12.22, 12.19, 11.86, 11.25, 10.28, 9.75, 9.34, 9.75, 9.63, 8.98, 8.58, 8.25, 8.38, 7.35, 7.34],
'pH 7': [16.92, 16.75, 17.56, 16.34, 14.47, 11.56, 10.49, 10.80, 10.14, 9.41, 5.19, 5.17, 5.03, 4.78, 4.36, 4.14, 3.97, 4.07, 4.09, 3.81, 3.53, 3.50, 3.56, 3.33, 3.12],
'pH 9': [14.24, 14.09, 14.62, 13.75, 12.17, 8.65, 8.03, 9.09, 8.53, 7.92, 4.37, 4.40, 4.24, 4.02, 3.67, 3.48, 3.77, 3.48, 3.44, 3.21, 3.12, 2.95, 3.04, 2.63, 2.62]
}
# 转换数据为 DataFrame 格式
df_absorption = pd.DataFrame(data_rox_absorption)
# 将 DataFrame 转换为长格式
df_melted_absorption = df_absorption.melt(id_vars=['Temperature (°C)', 'Adsorbent (g/L)'], var_name='pH', value_name='ROX Absorption (mg/g)')
df_melted_absorption['pH'] = df_melted_absorption['pH'].str.extract('(\d+)').astype(int)
# 绘制箱线图
plt.figure(figsize=(14, 8))
sns.boxplot(x='pH', y='ROX Absorption (mg/g)', data=df_melted_absorption)
plt.title('Box Plot of ROX Absorption by pH')
plt.xlabel('pH')
plt.ylabel('ROX Absorption (mg/g)')
plt.grid(True)
plt.show()
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)