2026数学建模国赛备赛全攻略:从数据处理到论文写作

发布时间:2026/9/3 10:47:48
2026数学建模国赛备赛全攻略:从数据处理到论文写作 第一次参加数学建模国赛的同学最常遇到的情况是资料收藏了一堆但真正拿到赛题时依然不知道从哪下手。这篇文章面向零基础小白围绕 2026 年数学建模国赛的备赛全流程梳理必备工具、数据处理方法、三大主流模型、真题拆解思路、AI 辅助竞赛的合规用法以及论文撰写规范。内容较多建议先收藏再按照章节逐步实践。1. 国赛到底在考什么别急着学模型先看清规则1.1 数学建模国赛的基本认知数学建模竞赛以下简称国赛是中国大学生数学建模竞赛CUMCM的简称通常在每年 9 月中旬举行比赛时间一般为 72 小时。参赛队伍由 3 名学生组成需要在规定时间内从 A、B、C、D 等题目中选择一道完成从问题分析、模型建立、求解计算到论文撰写的完整流程。很多新手误以为国赛考的是“数学难题”实际上国赛更看重以下能力面对一个实际问题能否把它抽象成数学问题能否用合适的模型和算法对问题求解能否用编程工具进行数据处理与计算能否用一篇结构完整的论文把思路和结果表达清楚。也就是说数学建模竞赛不是纯数学竞赛而是“数学 编程 写作”的综合能力竞赛。2026 年备赛时这三个方向要同步推进不能只刷模型不写论文也不能只写论文不写代码。1.2 赛题类型与评分倾向国赛的题目大致分为几类A 题通常偏向物理、工程类问题涉及微分方程、机理建模、数值计算B 题多偏向运筹优化、决策类问题涉及规划模型、启发式算法C 题偏向大数据分析、统计建模涉及数据处理、预测、评价D 题部分年份偏向数据挖掘或社会科学类的综合问题。从近几年的评分结果看评委越来越看重模型的说理与验证过程而不是结果的绝对精确。一篇论文如果能做到“问题分析清晰、模型选择合理、求解过程可复现、结果分析充分”即使没有使用非常复杂的算法也能拿到不错的奖项。1.3 零基础应该如何规划备赛节奏零基础同学不建议一上来就啃《数学建模算法与应用》这种大部头建议按照以下节奏第一阶段熟悉国赛规则掌握 Python 或 MATLAB 的基本操作第二阶段系统学习数据处理方法能对赛题中的表格数据完成清洗、统计、可视化和特征构造第三阶段掌握三大模型体系也就是预测模型、评价模型、优化模型第四阶段精读 2 到 3 篇优秀论文完整做 1 道真题第五阶段结合 AI 工具提高效率完善论文写作并反复模拟。这篇文章会覆盖上述内容你可以直接按章节顺序学习。2. 环境准备与必备工具箱国赛比拼的不仅是建模思路还比拼工程效率。下面列出一套零基础也能快速上手的工具箱。2.1 Python 环境与编辑器推荐推荐使用 Anaconda 管理 Python 环境它自带 conda 包管理器可以避免很多依赖冲突问题。Python 版本建议使用 3.9 或 3.10这两个版本对主流科学计算库兼容性较好。编辑器方面推荐 PyCharm社区版即可或 VS Code。PyCharm 对科学计算项目的结构管理更清晰VS Code 则更轻量。无论选择哪一个关键是建立“项目文件夹 虚拟环境”的习惯不要直接在全局环境里安装大量包。# 创建并激活虚拟环境Anaconda 示例 conda create -n modeling python3.10 conda activate modeling # 安装常用科学计算库 pip install numpy pandas matplotlib seaborn scikit-learn pip install statsmodels scipy openpyxlnumpy 负责数组运算pandas 负责表格数据处理matplotlib 和 seaborn 负责可视化scikit-learn 提供常用机器学习模型statsmodels 适用于统计建模openpyxl 用于读写 Excel 文件。这些库覆盖了 C 题常见的 90% 以上的数据处理任务。2.2 MATLAB 是否需要学如果你的队伍中有同学熟悉 MATLAB可以在数值计算和微分方程求解时使用它。但零基础同学不建议在备赛期间从头学习 MATLAB从效率角度看Python 生态在数据处理和机器学习方面更合适同时 Python 的论文图表绘制也更灵活。如果学校要求使用 MATLAB建议只掌握以下内容矩阵操作、plot 绘图、ode45 解微分方程、fmincon 做优化。其余内容可以临时查阅官方文档。2.3 论文排版工具论文排版是国赛的重要得分项之一。国赛论文通常要求提交 PDF 版页数一般控制在 20 页左右含附录。排版工具有两种选择Word上手快配合 MathType 输入公式也能完成排版但多人协作时容易出现格式混乱LaTeX排版效果专业公式美观推荐在 2026 年备赛时使用 Overleaf 在线平台省去本地配置环境的时间。下面是一份简单的 LaTeX 文档模板适合国赛论文的基础框架\documentclass[11pt]{article} \usepackage{ctex} \usepackage{amsmath} \usepackage{graphicx} \usepackage{booktabs} \usepackage{caption} \usepackage{geometry} \geometry{a4paper, margin2.5cm} \title{基于XX模型的XXXX问题研究} \author{队伍编号XXXXXX} \date{} \begin{document} \maketitle \begin{abstract} 本文针对XXXX问题首先对数据进行预处理然后建立XXXX模型最后给出结论与建议。 \end{abstract} \section{问题重述} \section{问题分析} \section{模型假设} \section{符号说明} \section{模型建立与求解} \section{模型检验} \section{模型评价与推广} \end{document}对于零基础同学推荐组合方案“Python 做分析Word/Overleaf 写论文Excel 做数据初查”。三种工具各司其职不要试图用一个工具完成所有工作。3. 数据处理决定奖项上限的关键环节3.1 为什么说数据处理非常重要在国赛 C 题和 D 题中数据处理往往是第一步也是决定模型上限的关键环节。很多新手把精力全放在模型参数调优上结果数据本身有大量缺失值、异常值和重复记录任何模型都无法得出可靠结论。数据处理通常包括以下步骤数据读取与概览数据清洗缺失值、异常值、重复值数据变换归一化、标准化、离散化特征构造从原始字段中提取新特征数据可视化与探索性分析。3.2 数据清洗的 Python 实战下面以一份销售数据集为例演示完整的清洗流程。这是国赛数据类题目的常见基础操作代码可以直接复制运行。import pandas as pd import numpy as np # 文件路径data/raw_data.xlsx df pd.read_excel(data/raw_data.xlsx) # 1. 查看数据概览 print(数据形状:, df.shape) print(列名:, df.columns.tolist()) print(缺失值统计:\n, df.isnull().sum()) # 2. 删除全为空的列 df df.dropna(axis1, howall) # 3. 填充数值型缺失值这里用中位数填充 numeric_cols df.select_dtypes(include[np.number]).columns df[numeric_cols] df[numeric_cols].fillna(df[numeric_cols].median()) # 4. 处理异常值以 3 倍标准差为界 for col in numeric_cols: mean df[col].mean() std df[col].std() lower mean - 3 * std upper mean 3 * std df[col] df[col].clip(lower, upper) # 5. 删除重复行 df df.drop_duplicates() # 6. 保存清洗后数据 df.to_csv(data/cleaned_data.csv, indexFalse, encodingutf-8-sig)这段代码中有几个关键点使用dropna(axis1, howall)删除全部为空的列避免无效列干扰数值型缺失值使用中位数填充比均值更稳健不容易受异常值影响异常值处理采用“3 倍标准差截断法”它不会删除数据而是把极端值压到边界值适合后续建模输出时使用encodingutf-8-sig防止 Excel 打开 CSV 文件出现乱码。3.3 数据标准化与归一化在建模前不同特征的量纲差异会直接影响模型效果。比如“销售额”可能是万元级别而“折扣率”是 0 到 1 的小数。如果不做无量纲化距离类模型如 KNN、KMeans会偏向数值大的特征。常见的处理方法有两种from sklearn.preprocessing import StandardScaler, MinMaxScaler # 标准化均值为 0标准差为 1适合线性回归、SVM 等 scaler_std StandardScaler() df_std scaler_std.fit_transform(df[numeric_cols]) # 归一化映射到 [0, 1] 区间适合神经网络、距离模型 scaler_minmax MinMaxScaler() df_minmax scaler_minmax.fit_transform(df[numeric_cols])标准化适合数据近似正态分布的场景归一化适合数据分布未知或存在边界的场景。国赛论文中建议在模型假设或数据预处理部分明确说明你使用了哪种方法以及为什么选择它。3.4 特征构造提升模型上限的关键特征构造是很多获奖论文的亮点。它不是简单地选择已有列而是从业务逻辑出发组合新特征。以电商销量预测为例将“下单时间”拆分为“小时”“星期几”“是否节假日”构造“累计销量”“近 7 天平均销量”“价格变化率”对类别特征做数值编码或独热编码。# 假设原始数据有 date 列和 price 列 df[date] pd.to_datetime(df[date]) df[hour] df[date].dt.hour df[weekday] df[date].dt.dayofweek df[is_weekend] df[weekday].apply(lambda x: 1 if x 5 else 0) df[price_change] df[price].pct_change().fillna(0)特征构造没有固定公式核心思路是结合题目背景挖掘时间、空间、类别、统计量等维度的信息。这部分能力需要通过真题练习来积累。3.5 数据可视化的常用代码国赛论文中图表是向评委传递信息的主要渠道。下面给出一个常用的画图模板import matplotlib.pyplot as plt import seaborn as sns plt.rcParams[font.sans-serif] [SimHei] # 解决中文乱码 plt.rcParams[axes.unicode_minus] False fig, axes plt.subplots(1, 2, figsize(12, 4)) # 箱线图观察异常值与分布 sns.boxplot(datadf[numeric_cols[:4]], axaxes[0]) axes[0].set_title(数值特征箱线图) # 相关性热力图 sns.heatmap(df[numeric_cols].corr(), annotTrue, cmapcoolwarm, axaxes[1]) axes[1].set_title(特征相关性热力图) plt.tight_layout() plt.savefig(figures/eda.png, dpi300) plt.show()这里需要注意matplotlib 默认字体不含中文必须设置font.sans-serif为 SimHei 或使用其他中文字体否则图中会出现方块乱码。4. 三大模型体系预测、评价、优化很多教程会把模型按“十大算法”之类的框架罗列但国赛真正高频使用的是三大类预测模型、评价模型、优化模型。掌握每一类中的 2 到 3 种典型模型并理解其适用条件足以应对大多数题目。4.1 预测模型预测模型的目标是根据历史数据推断未来值。国赛中常见的预测模型有时间序列模型ARIMA、SARIMA、指数平滑回归模型多元线性回归、岭回归、Lasso机器学习模型随机森林、XGBoost、LightGBM神经网络LSTM适合长序列数据。选择哪种模型取决于数据量和数据形态。如果数据量小几百条、趋势明显ARIMA 和线性回归足够如果数据量大、特征复杂优先考虑 XGBoost 或 LightGBM。下面是一个使用statsmodels做 ARIMA 预测的简单示例import pandas as pd import matplotlib.pyplot as plt from statsmodels.tsa.arima.model import ARIMA # 读取按月销量数据 sales pd.read_csv(data/monthly_sales.csv, parse_dates[month]) sales sales.set_index(month) # 拟合 ARIMA(2,1,2) 模型 model ARIMA(sales[sales], order(2, 1, 2)) result model.fit() print(result.summary()) # 未来 6 个月预测 forecast result.forecast(steps6) print(forecast)ARIMA 的三个参数(p, d, q)分别表示自回归阶数、差分阶数、移动平均阶数。新手可以直接使用auto_arima自动搜索最优参数也可以根据 ACF 和 PACF 图人工判断。# 可选使用 pmdarima 自动定阶 # pip install pmdarima from pmdarima import auto_arima auto_model auto_arima(sales[sales], seasonalTrue, m12, traceTrue, error_actionignore) print(auto_model.order)4.2 评价模型评价模型用于对多个方案、多个对象进行综合排序或评分。典型的应用场景包括水质评价、城市宜居性评价、供应商选择等。常用方法包括层次分析法AHP适用于定性定量结合指标较少熵权法根据数据离散程度确定权重客观性强TOPSIS 法通过计算与理想解的接近程度进行排序灰色关联度分析适用于小样本、信息不完全的系统。下面给出熵权法 TOPSIS 的核心代码这类组合在国赛中比较常见import numpy as np import pandas as pd def entropy_weight(data): # 数据标准化假设所有指标均为正向指标 data data / data.sum(axis0) k 1 / np.log(data.shape[0]) e -k * (data * np.log(data 1e-10)).sum(axis0) w (1 - e) / (1 - e).sum() return w def topsis(data, weights): # 归一化 norm_data data / np.sqrt((data ** 2).sum(axis0)) # 加权 weighted norm_data * weights # 正负理想解 ideal_best weighted.max(axis0) ideal_worst weighted.min(axis0) # 距离 d_best np.sqrt(((weighted - ideal_best) ** 2).sum(axis1)) d_worst np.sqrt(((weighted - ideal_worst) ** 2).sum(axis1)) # 得分 score d_worst / (d_best d_worst) return score # 示例数据4 个评价对象4 个指标 data np.array([ [85, 90, 75, 60], [80, 85, 80, 70], [95, 70, 85, 65], [70, 95, 70, 80] ]) df pd.DataFrame(data, columns[指标1, 指标2, 指标3, 指标4]) weights entropy_weight(df.values) scores topsis(df.values, weights) print(权重:, weights) print(综合得分:, scores)这段代码中entropy_weight函数根据数据变异程度计算权重topsis函数根据加权距离计算排序得分。实际赛题中要注意指标的方向性成本型指标需要先取倒数或做正向化处理。4.3 优化模型优化模型的目标是在约束条件下寻找最优决策。国赛中的典型场景包括生产调度、路径规划、资源分配、物流选址等。常用方法包括线性规划LP和整数规划IP使用scipy.optimize.linprog或pulp非线性规划使用scipy.optimize.minimize启发式算法遗传算法、模拟退火、粒子群算法。下面以pulp求解一个简单的生产计划问题为例import pulp # 创建问题实例最大化利润 prob pulp.LpProblem(Production_Plan, pulp.LpMaximize) # 定义决策变量 x1 pulp.LpVariable(x1, lowBound0, catContinuous) x2 pulp.LpVariable(x2, lowBound0, catContinuous) # 目标函数max 3*x1 5*x2 prob 3 * x1 5 * x2 # 约束条件 prob 2 * x1 x2 100 # 工时约束 prob x1 2 * x2 80 # 原料约束 # 求解 prob.solve() print(状态:, pulp.LpStatus[prob.status]) print(x1 , pulp.value(x1)) print(x2 , pulp.value(x2)) print(最大利润 , pulp.value(prob.objective))pulp的优势在于语法直观线性规划建模速度快。对于路径规划这类组合优化问题可以先尝试贪心算法得到可行解再用遗传算法或模拟退火进行改进。国赛论文中优化模型必须写清楚决策变量、目标函数和约束条件这是评分的重要依据。5. 真题解析用一道经典题目拆解完整流程5.1 题目背景以 2024 年国赛 C 题为例具体题目内容以当年官方发布为准这类题目通常会提供多个 Excel 数据表要求分析农作物种植策略或生产决策问题。我们不对具体题目做细节复述而是给出通用的拆解思路你可以在备赛时将 2025 和 2026 年的题目套入这个框架。拿到题目后先用 1 小时完成以下动作通读题目用笔圈出关键词目标、约束、数据范围、输出要求打开所有附件确认数据表的字段和行数画一张“问题-数据-模型”对应表初步确定模型的输入输出。5.2 从问题到模型的转化过程假设题目要求“制定某种作物的最优种植方案”转化过程如下问题目标利润最大化或成本最小化决策变量每种作物的种植面积或种植数量约束条件可用土地面积、水资源、劳动力、市场需求等模型类型整数规划或线性规划。如果题目进一步要求“分析方案在不同气候条件下的鲁棒性”则需要引入情景分析把参数扩展为多组情景比较不同情景下的最优解差异。5.3 完整分析流程示例下面是这一类题目在 72 小时内的推荐时间分配时间任务第 1 天上午选题、读题、数据概览、问题重述第 1 天下午数据清洗、可视化、初步统计第 2 天上午建立模型、编写求解代码第 2 天下午模型求解、灵敏度分析、结果整理第 3 天上午论文撰写、图表绘制第 3 天下午摘要打磨、全文检查、提交对于 C 题而言第 1 天傍晚应当完成数据清洗第 2 天晚上应当跑出第一版结果最后一天只做论文优化和格式调整不建议在最后一天改模型。6. AI 工具在国赛中的合规应用6.1 AI 能帮我们做什么2026 年备赛时完全不用 AI 工具反而不现实。关键在于明确边界AI 是辅助工具不是代写工具。以下场景是合理且高效的用法代码调试把报错信息贴给 AI快速定位语法错误和逻辑错误数据处理思路用自然语言描述数据关系让 AI 生成 pandas 操作参考代码模型选择建议输入问题描述让 AI 推荐候选模型论文润色调整语句表达优化段落逻辑文献速读让 AI 帮忙总结一篇论文的核心方法。6.2 不建议让 AI 完成的工作评委和组委会对论文原创性有明确要求以下行为存在较大风险直接让 AI 生成整篇论文正文直接复制 AI 生成的“问题分析”和“摘要”使用 AI 编造数据或实验结论完全依赖 AI 输出而没有理解模型原理。更合理的使用方法是让 AI 生成初稿然后逐句修改加入自己对数据的分析和结论。最终提交的论文必须能经得起答辩或复核。6.3 一个 AI 辅助的代码调试示例假设运行代码时出现以下报错KeyError: date这是 pandas 中常见的列名错误。错误原因是 DataFrame 中不存在名为date的列。排查思路如下先用print(df.columns.tolist())查看实际列名检查数据文件路径是否正确检查是否在读取时使用了header参数导致列名错位检查 Excel 文件中是否存在合并单元格。你可以把报错信息和相关代码片段发给 AI得到的回答往往比搜索引擎更快但最终判断仍需结合自己的数据结构。7. 常见问题与备赛避坑清单7.1 常见错误与解决方案问题现象常见原因解决思路读取 Excel 报错缺少 openpyxl 或文件路径错误安装 openpyxl检查路径是否包含中文图表中文乱码matplotlib 默认字体不含中文设置 font.sans-serif 为 SimHei模型结果全为 NaN数据中存在大量缺失值或 0 值检查数据清洗步骤确认填充策略论文页数严重超标图表过多、附录过冗长限制图表数量附录只保留核心代码队伍分工混乱没有提前明确各自职责按“写作 编程 建模”分工但全员参与讨论7.2 备赛阶段的高频心理与效率问题很多同学在比赛第二天晚上会出现“模型推翻重做”的情况。这个问题通常源于第一天对题目理解不够深入或数据探索不充分。建议用以下方式规避“先跑通一个简单模型再逐步优化”。即使是一个简单的线性回归也能帮助你理解数据的内在规律后续再升级到机器学习模型时代码只需改动很小部分。另外队伍内部要建立共享文档机制使用腾讯文档或飞书记录模型选择、代码版本和论文修改意见避免三个人各自保留一份不同的文件。8. 论文写作的核心细节8.1 摘要的重要性评委在评审时摘要往往是第一眼看到的内容也是决定论文档次的直接因素。一份好的摘要应包含以下要素用了什么模型数据如何处理求解结果是什么结果如何验证。建议摘要控制在 1 页以内不使用公式编号语言要精炼。8.2 论文结构与图表规范国赛论文的常规结构如下问题重述问题分析模型假设符号说明模型的建立与求解模型的检验模型的评价与推广参考文献附录。图表要做到“有标题、有编号、有结论说明”。每张图都要在正文中引用并结合图表内容做分析不能只贴图不解释。表格推荐使用三线表坐标轴必须有物理量和单位。8.3 代码附件的整理提交论文时通常需要附带代码文件。建议按以下结构整理code/ data_clean.py model_train.py model_predict.py visualization.py requirements.txt data/ cleaned_data.csv raw_data.xlsx figures/ eda.png model_result.pngrequirements.txt可以帮助评委或其他同学快速复现环境。numpy1.26.4 pandas2.2.1 scikit-learn1.4.2 matplotlib3.8.4这里的版本号是示例实际版本要以你本地环境为准。9. 备赛时间规划与训练建议9.1 3 个月备赛时间表假设距离 2026 年 9 月国赛还有 3 个月可以按“基础期 - 强化期 - 冲刺期”三阶段规划第 1 个月基础期掌握 Python 数据处理、可视化、三大模型的基础代码完成 1 个入门练习第 2 个月强化期完整做 2 道真题精读对应优秀论文总结不同题型的分析框架第 3 个月冲刺期每周一次完整模拟检验 72 小时内的完成度重点优化论文写作速度。9.2 模拟训练的正确姿势模拟训练不是简单“做一遍题”要尽量还原真实比赛环境三人坐在同一间教室使用同一局域网规定时间内不允许做与题目无关的事情模拟赛结束后用一整天时间复盘模型选择是否合理、时间分配是否恰当、论文图表是否清晰对每个环节记录耗时形成队伍自己的时间基准。9.3 从优秀论文中能学到什么不建议只看优秀论文的模型部分更应该关注问题分析如何把抽象问题拆解为子问题数据预处理如何与问题背景结合模型结果如何做敏感性分析和误差分析论文写作如何用图表和表格传递信息。你可以从中国大学生在线官网或学校图书馆数据库获取历年优秀论文选择 3 篇精读并做“逐段拆解笔记”比盲目做 10 道题更有效。10. 最后的几点提醒数学建模国赛的获奖难度并不在于算法有多深而在于团队能否在有限时间内完成“读懂问题、分析数据、建立模型、写出论文”的完整闭环。零基础并不可怕关键是尽早按照正确路径练习。对于 2026 年的备赛最后给出几点具体的建议优先选择 C 题作为入门题型因为数据处理类题目对数学模型深度的要求相对适中队伍中至少要有一名同学熟悉 Python 的数据处理与可视化至少有一名同学擅长论文写作比赛期间保持固定的沟通节奏每天早中晚各开一次短会同步进度论文摘要务必在比赛最后一天上午定稿下午只做格式校对提交前检查代码能否运行、数据文件是否打包、PDF 是否完整、附录是否乱码。备赛过程中遇到卡点是正常的坚持按“数据 → 模型 → 代码 → 论文”的流程推进完成度一定会比只啃理论高很多。2026 国赛加油。

相关新闻