ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

AI智能体辅助数学建模竞赛:从赛题拆解到论文生成的工作流实战

2026/9/8 12:24:19 拓冰建站 浏览量
AI智能体辅助数学建模竞赛:从赛题拆解到论文生成的工作流实战 参加数学建模类竞赛的同学应该都有过这样的体验赛程只有几天但真正让人发愁的不是“不会建模”而是要在极短时间内完成选题分析、数据清洗、模型推导、代码实现、结果分析和论文排版这一整套流程时间永远不够用。过去这些环节只能靠人工一点点磨而最近两年随着 AI 大模型和“智能体”工具链逐渐成熟这套流程已经有了比较明确的自动化空间。本文围绕“华数杯”数学建模竞赛场景分享一套用 AI 智能体辅助完成赛题拆解、数据预处理、模型求解、论文初稿生成的工作流并提供可复制的代码与提示词模板。无论是已经报名参赛的学生还是想把大模型应用落地到具体场景的开发者都可以直接复用这套思路。1. 背景与核心概念1.1 华数杯数学建模竞赛是什么华数杯数学建模竞赛是国内面向大学生和研究生的数学建模竞赛题目风格与国赛、美赛接近通常会给出一个实际问题背景要求参赛队伍在有限时间内完成“建模、求解、验证、写作”的完整闭环。题目类型主要集中在优化问题、预测问题、评价类问题和数据处理问题上。数学建模竞赛最大的特点不是模型有多高级而是“时间紧、链条长、容错低”。一个队伍通常由三人组成分别负责建模、编程、写作但仍然经常出现题目信息量大刚开始不知道从哪里下手数据文件格式混乱清洗耗时模型代码反复报错调试占据大量时间论文写作时间不足最后只能压缩排版和结论部分。这些痛点正好是 AI 智能体擅长解决的场景。1.2 什么是 AI 智能体AI 智能体英文通常写作 Agent是指以大语言模型为“大脑”将模型能力封装成可以自动完成某个任务的程序。它不只是简单问答而是可以理解任务、拆解步骤、调用工具、处理结果。在数学建模场景下智能体可以扮演多个角色分析员阅读题目提取已知条件、目标函数、约束条件代码助手生成 Python 数据分析、回归、线性规划、绘图代码论文助手将算法步骤改写为论文描述润色摘要和结论。换句话说你不需要把大模型当成一个聊天窗口而是可以把它编排成一个“虚拟队友”。这也是最近互联网上“智能体开发”“Agent 智能体开发教程”“AI 应用开发”等热词快速发酵的原因。1.3 为什么数学建模适合智能体辅助数学建模的题目天然适合拆分。以一道典型的优化类题目为例第一步是读懂题目列出决策变量、目标函数、约束条件第二步是把数学模型转化为 Python 代码第三步是运行结果并分析灵敏度第四步是写成论文。这四步中除了第三步需要人工判断结果合理性其他步骤大语言模型都能提供高质量初稿。与传统“从零写代码”相比智能体辅助的核心价值是快速产出初稿让模型先生成一个可运行版本人工再修改比从零写代码快很多减少重复劳动数据清洗、变量重命名、字段转换等琐碎工作可由脚本自动处理语言组织能力论文摘要、问题分析等文字类内容模型直接生成初稿再人工调整表达与逻辑。但这里必须强调AI 智能体是辅助工具而不是代写工具。最终提交的论文应当由参赛者本人负责所有模型结果都要经过人工验证并且要仔细阅读竞赛官方对 AI 工具使用的说明合理合规地使用 AI。2. 环境准备与工具选型2.1 基础环境在动手搭建智能体工作流之前先确认本地环境是否齐全。本文的示例代码以 Python 为主建议准备以下环境操作系统Windows 10/11 或 macOS 均可Python 版本3.9 或更高版本包管理工具pip 或 conda开发工具VS Code、PyCharm 或 Jupyter Notebook浏览器Chrome 或 Edge用于访问智能体管理后台。如果你还没有安装 Python可以到 Python 官网下载安装包安装时务必勾选“Add Python to PATH”。2.2 智能体平台选型目前搭建智能体有两条路线一是使用可视化平台二是自建开发框架。路线一可视化平台比较常见的平台包括Dify开源 LLM 应用开发平台支持工作流编排、知识库、插件工具适合快速搭建数学建模辅助智能体扣子Coze字节跳动推出的智能体开发平台操作门槛低支持发布为 API 或 Bot字节扣子与 Dify 的差异扣子更偏向端到端 Bot 搭建Dify 更偏向工作流和知识库管理。这些平台都提供 Web 界面你不需要写太多前端代码只需要设计“节点”比如大模型节点、代码执行节点、知识库查询节点。对于数学建模场景推荐使用 Dify因为它支持 Python 代码执行节点可以很方便地把数据处理和模型求解嵌入到智能体中。路线二自建开发框架如果你希望完全掌控流程可以使用 Python 直接调用大模型 API再结合 scipy、pandas 等库完成建模任务。这种方式灵活度高适合在 Jupyter Notebook 中边跑边调。这两条路线不冲突。实际项目中很多人先用可视化平台把流程跑通再把核心逻辑抽出来写成 Python 脚本。2.3 大模型 API 与版本兼容性建模过程中会频繁调用大模型因此需要准备一个可用的 API Key。不同平台、不同模型的接口差异较大本文以“兼容 OpenAI Chat Completions 风格接口”的通用方式演示你需要根据自己使用的平台调整base_url、model和请求参数。以下是通用的调用函数示例建议保存为一个公共工具文件# -*- coding: utf-8 -*- # 文件路径utils.py import requests def call_llm(prompt: str, api_key: str, base_url: str https://api.example.com/v1) - str: 调用大模型接口兼容 OpenAI Chat Completions 风格的通用封装。 注意不同平台接口和参数会有差异请以对应平台的 API 文档为准。 headers { Authorization: fBearer {api_key}, Content-Type: application/json } payload { model: your-model-name, # 替换为实际模型名称 messages: [{role: user, content: prompt}], temperature: 0.7 } response requests.post(f{base_url}/chat/completions, headersheaders, jsonpayload, timeout60) response.raise_for_status() data response.json() return data[choices][0][message][content]使用这段代码时有三个需要留意的点不要把 API Key 硬编码到代码中建议用环境变量管理不同模型的上下文长度不同如果题目数据量很大需要把数据做截断或摘要再传入请求超时时间要留足数学建模场景经常需要模型生成长文本不要设置太短的 timeout。3. 数学建模智能体的工作流设计3.1 从赛题到结果的四个阶段无论使用哪个平台数学建模智能体的核心流程都可以归纳为四个阶段阶段一题目理解与问题拆解。智能体阅读赛题提取背景信息、已知条件、要求和目标输出一份结构化的题目分析帮助队伍确定“这是一个优化问题、预测问题还是评价问题”。阶段二数据预处理。如果赛题提供 Excel 或 CSV 数据文件智能体可以生成数据读取、缺失值处理、字段说明、描述性统计等代码把原始数据变成可供建模使用的整洁数据表。阶段三模型构建与求解。智能体根据问题类型推荐数学模型并生成相应的 Python 代码。常见模型包括线性规划、非线性规划、回归分析、时间序列预测、聚类分析、层次分析法等。阶段四论文初稿生成。智能体将建模过程、求解结果、图表分析组织成论文初稿包括摘要、问题重述、模型假设、模型建立与求解、模型检验、结论等部分。3.2 多智能体协作模式在“智能体开发”中一个常见的设计模式是“多智能体”协作。简单来说就是让多个不同职责的智能体分别负责不同环节而不是让一个大模型从头做到尾。以数学建模为例我们可以设计三个子智能体智能体名称职责输入输出题目分析师解析题目提取建模要素赛题原文问题拆解报告代码生成师根据报告生成 Python 代码拆解报告可运行代码论文写作师把结果整理成论文段落求解结果论文初稿这种分工的好处是每个智能体的提示词更聚焦生成结果更稳定某个环节出错时能单独调试不影响整体流程。3.3 在 Dify 中编排工作流如果你使用 Dify 搭建智能体建议按以下节点设计一个“数学建模辅助工作流”开始节点接收用户输入即赛题文本LLM 节点 1题目分析把赛题文本交给大模型生成结构化的问题拆解报告代码执行节点允许用户上传数据文件平台执行 Python 代码完成数据预处理LLM 节点 2代码生成根据拆解报告和数据概况生成对应模型的 Python 求解代码代码执行节点 2运行求解代码输出数值结果LLM 节点 3论文生成根据模型结果生成论文初稿结束节点汇总输出。关于 Dify 的具体版本和界面各版本差异较大但节点设计思路是通用的。第一次搭建时建议从“只包含一个 LLM 节点”的简单应用开始确认能跑通后再逐步增加代码执行节点和多 Agent 编排。4. 完整实战用智能体辅助一道优化建模题下面我们用一个非常典型的“工厂生产计划优化”问题来演示完整过程。这道题不是华数杯某届真题但结构上与竞赛中常见的线性规划问题一致。问题描述某工厂生产两种产品 A 和 B每件产品 A 的利润为 3 万元每件产品 B 的利润为 5 万元。生产受到资源约束原材料 X 总量不超过 4 单位原材料 Y 总量不超过 12 单位加工工时不超过 18 小时。生产单位产品 A 消耗原材料 X 1 单位、原材料 Y 0 单位、工时 3 小时生产单位产品 B 消耗原材料 X 0 单位、原材料 Y 2 单位、工时 2 小时。问应如何安排生产计划使总利润最大4.1 用智能体拆解题目把题目粘贴到智能体对话框中提示词可以这样写你是一名数学建模竞赛教练。请阅读以下赛题完成三点分析 1. 判断题目的数学建模类型 2. 明确决策变量、目标函数和约束条件 3. 给出一个推荐的解题思路。 赛题如下 在这里粘贴题目文本智能体通常会输出类似下面的分析问题类型线性规划LP问题决策变量设产品 A 产量为 x1产品 B 产量为 x2目标函数max z 3 * x1 5 * x2约束条件x1 42 * x2 123 * x1 2 * x2 18x1 0x2 0。这一步的价值在于模型把“一堆文字”转成了“可以用数学表达的符号体系”为后续写代码奠定了基础。4.2 用智能体生成数据预处理代码实际竞赛中还会有数据文件。为了让示例完整我们假设工厂提供了历史生产记录data.xlsx包含不同原材料组合下的产量和利润信息。智能体可以生成以下数据预处理脚本# -*- coding: utf-8 -*- # 文件路径data_preprocess.py import pandas as pd # 读取数据Excel 文件需要安装 openpyxl df pd.read_excel(data.xlsx, engineopenpyxl) # 查看前几行确认字段是否正常 print(前5行数据) print(df.head()) # 检查缺失值 print(\n缺失值统计) print(df.isnull().sum()) # 简单清洗删除全为空的行和列 df df.dropna(howall).dropna(axis1, howall) # 生成描述性统计 print(\n描述性统计) print(df.describe()) # 保存清洗后的数据 df.to_csv(data_clean.csv, indexFalse, encodingutf-8-sig)这段代码主要做三件事读取数据、检查数据质量、输出清洗后的文件。在智能体辅助场景中数据清洗代码往往不需要完美只需要做到“能跑、能看出数据长什么样”。如果数据量很大建议先用.head()查看再决定下一步清洗策略。4.3 用智能体生成模型求解代码根据题目拆解结果智能体可以生成线性规划求解代码。Python 中常用的求解库是scipy.optimize.linprog它默认求最小值所以目标函数要求最大值时需要加负号。# -*- coding: utf-8 -*- # 文件路径solve_optimization.py import numpy as np from scipy.optimize import linprog # 目标函数max z 3*x1 5*x2 # linprog 默认做最小化所以把系数取负 c [-3, -5] # 不等式约束矩阵 A_ub * x b_ub # x1 4 # 2*x2 12 # 3*x1 2*x2 18 A_ub [[1, 0], [0, 2], [3, 2]] b_ub [4, 12, 18] # 决策变量取值范围非负 bounds [(0, None), (0, None)] # 求解 result linprog(c, A_ubA_ub, b_ubb_ub, boundsbounds, methodhighs) # 输出结果 print(是否成功:, result.success) print(最优解 x , result.x) print(最大利润 z , -result.fun) # 输出约束松弛量 print(约束松弛量Slack:, result.slack)运行这段代码预期得到是否成功: True 最优解 x [2. 6.] 最大利润 z 36.0也就是说最佳生产计划是产品 A 生产 2 件产品 B 生产 6 件最大利润为 36 万元。这里要特别提醒linprog的求解结果只是一个数值答案论文中还必须补充模型假设、灵敏度分析、结果检验等内容这些部分同样可以让智能体辅助生成初稿。4.4 用智能体生成论文初稿拿到求解结果后下一步是写论文。很多队伍在这一步时间最紧张智能体可以充当“论文草稿生成器”。提示词模板如下请根据以下求解结果为数学建模论文组织一段“模型求解与结果分析”内容。要求 1. 使用规范的科技论文语言 2. 包括求解方法的简要说明 3. 包括数值结果的解读 4. 包括约束条件满足情况的描述。 求解结果 最优解 x [2, 6] 最大利润 z 36 约束松弛量[2, 0, 0]模型生成的初稿可能不会直接可用但能提供句子结构、逻辑顺序和术语参考。更重要的是用它生成的草稿可以帮助队伍在“不知道如何下笔”时快速建立框架。4.5 把代码组合成一条完整链路在本地开发时我们可以把上面的调用函数和数据预处理、求解代码组合成一个更完整的脚本形成“读取数据 → 调用大模型 → 求解 → 输出报告”的流程# -*- coding: utf-8 -*- # 文件路径main.py import pandas as pd from scipy.optimize import linprog from utils import call_llm import os API_KEY os.getenv(LLM_API_KEY, your-api-key) # 1. 读取并预处理数据 df pd.read_excel(data.xlsx, engineopenpyxl) df df.dropna(howall) print(数据清洗完成共 {} 行{} 列.format(df.shape[0], df.shape[1])) # 2. 用智能体生成求解代码建议 prompt 这是一个生产计划优化问题请告诉我如何用 scipy.optimize.linprog 求解给出关键代码片段和约束矩阵写法。 suggestion call_llm(prompt, api_keyAPI_KEY) print(智能体建议\n, suggestion) # 3. 求解线性规划 c [-3, -5] A_ub [[1, 0], [0, 2], [3, 2]] b_ub [4, 12, 18] result linprog(c, A_ubA_ub, b_ubb_ub, bounds[(0, None), (0, None)], methodhighs) print(最优解 x , result.x) print(最大利润 z , -result.fun)这段代码展示了一个真实的辅助链路人工看数据大模型提供思路scipy 完成数值计算人工再判断结果。5. 常见问题与排查方法在实际使用 AI 智能体辅助写题的过程中会遇到不少问题这里整理一份高频问题清单。问题现象常见原因解决思路智能体输出的数学公式是乱码模型返回的是 LaTeX 格式没有渲染环境在 Jupyter Notebook 中使用 Markdown 公式渲染或者让模型输出纯文本公式说明生成代码运行时提示缺少库当前环境未安装依赖执行pip install pandas scipy openpyxl requests等安装命令调用大模型接口报 401API Key 错误或未设置环境变量确认 Key 是否正确使用os.getenv()读取不要硬编码模型回答的内容不准确提示词没有给出足够的上下文约束在提示词中指定角色、输入格式、输出格式并强调不确定的内容要标注数据文件读取失败Excel 文件路径错误或文件本身有问题检查路径使用os.path.exists先判断文件是否存在模型生成了大量文本但结论没有数据支撑大模型幻觉编造了不存在的数值要求模型只基于给定的数据作答不能编造数值必要时人工复核智能体工作流节点运行超时单次提示词过复杂或调用的代码执行时间过长拆分任务减少单次输入 token 数量缩小数据范围5.1 排查方法遇到问题不要立刻放弃按下面的顺序排查定位到最小环节看是整个流程挂了还是单独的数据处理、求解、写作环节出错查看控制台输出Python 报错日志通常能直接指出问题行单独测试代码把智能体生成的代码复制到 Jupyter Notebook 单独运行确认是否可以复现简化提示词把一段很长的提示词拆成多个小提示词分步执行保存中间结果将数据清洗结果、模型输出结果分别保存成 CSV 或 JSON方便检查。6. 最佳实践与合规建议6.1 学术诚信与竞赛规则这是最重要的一点。虽然本文在讲如何用 AI 智能体辅助数学建模但你必须在竞赛规则允许的范围内使用 AI 工具并且最终作品必须由参赛队伍自己完成。具体建议先阅读当年的竞赛说明中关于 AI 工具使用的内容如果允许使用就把使用了哪些 AI 工具、在哪些环节使用、如何验证结果做如实声明如果规则不允许则只把模型当作普通搜索引擎使用不要直接把生成内容放进论文。6.2 智能体提示词沉淀在实战中优秀的提示词是团队的核心资产。建议在项目目录下新建一个prompts/文件夹把不同角色的提示词保存为独立的文本或 Markdown 文件prompts/ ├── analyzer.md # 题目分析提示词 ├── code_generator.md # 代码生成提示词 ├── paper_writer.md # 论文写作提示词 └── data_checker.md # 数据检查提示词这样即使竞赛结束下次遇到类似建模题也能直接复用。6.3 人工核对与版本管理AI 生成的代码和文本只是草稿最终必须经过人工核对。建议按以下清单检查模型选择是否合理代码运行结果是否与赛题数据匹配关键数值是否经过手算或敏感性分析验证论文中是否保留了推导过程而不是只贴结论图表是否清晰并标注坐标轴。如果队伍有 Git 使用基础建议把全部文件和代码放在仓库中每天提交一次方便回溯当天改了什么。6.4 关注工程细节数学建模的最终交付物是论文但支撑论文的是整套工程。建议至少在比赛第一天就建立起一套“数据→代码→结果→论文”的目录结构competition/ ├── data/ # 原始数据与清洗后数据 ├── codes/ # Python 脚本和 Notebook ├── figures/ # 生成的图表 ├── paper/ # 论文 LaTeX 或 Word └── prompts/ # 智能体提示词整洁的目录结构能明显减少后期“找不到文件”的问题。随着 AI 智能体开发工具越来越成熟这种“数据 智能体提示词 代码 文档”的工作流会成为参赛队伍的重要竞争力。7. 总结元宇宙可以晚点聊但数学建模竞赛的时间不会等人。面对华数杯这类时间紧凑的赛事把 AI 智能体当作一个“超级队友”来使用是提升团队效率的可行思路。本文从概念入手介绍了智能体与数学建模的结合方式给出了题目分析、数据预处理、模型求解、论文生成四个阶段的完整示例也提醒了数据验证与学术诚信的重要性。更进一步你可以在 Dify、扣子等平台上设计多智能体工作流让“题目分析师”“代码生成师”“论文写作师”各司其职。对于想要深入研究的读者建议从以下几个方向继续扩展学习更多 Python 建模库如pulp、ortools、sklearn、statsmodels覆盖整数规划、预测和分类场景研究智能体平台的工作流 API尝试把本地脚本发布成可以被其他队友调用的接口尝试在提示词中加入少样本示例让智能体生成结果更稳定。比赛终究是人的比赛智能体只是把“从零到 30 分”的效率提高了但“从 30 分到 90 分”仍然需要你们自己的模型思考、逻辑推导和论文打磨。希望这套辅助工作流能帮你在下一场比赛中多留出一些睡眠时间也祝你拿到理想的成绩。如果本文的提示词模板或代码清单对你有帮助可以收藏备用后续也会继续更新关于智能体开发与数学建模实战的内容。