
2023年国赛赛题公布那天我朋友圈里好几个老队友都在转发同一句话A题是纯物理B题是几何推导C题是生鲜生意三道题横跨光学、海洋测绘和零售供应链几乎把建模人能遇到的题型全包了。带队伍这几年我最深的体会是国赛评奖不看你用的模型多花哨而是看模型是否自洽、结果是否可复现、论文是否讲得通。这篇文章就把2023年本科组三道题A题定日镜场优化设计、B题多波束测线问题、C题蔬菜类商品自动定价与补货决策的核心建模思路拆开讲每道题都给出可落地的Python代码框架和实战避坑清单。无论你是第一次打国赛还是准备2026年比赛和华为杯这套思路都能直接迁移过去用。1. 2023年三题全景三道题到底在考什么1.1 横跨物理、几何与商业的三个命题方向A题“定日镜场的优化设计”是典型的“物理机理优化设计”题。它要求你把太阳光从入射到反射进集热器的全过程用数学语言写清楚然后在一个巨大的参数空间里找到最优镜场布局。这类题最考验队伍对光学几何的理解程度以及数值计算效率的把控能力。B题“多波束测线问题”看起来是几何题实际考的是连续覆盖问题。你要在倾斜海底上用多波束测深仪的覆盖宽度公式计算重叠率再优化一组测线让测线总长度尽量短同时保证不漏测。很多队伍第一问推公式没问题到了第二问和第三问就卡在“如何把覆盖约束写成可计算的形式”。C题“蔬菜类商品的自动定价与补货决策”是典型的商业数据题。题目给了某商超2020年7月到2023年6月六个蔬菜品类的销售流水要求做分布规律分析、需求预测然后给出单品补货量和定价策略。它考的是数据分析基本功、时间序列预测能力以及库存优化模型的实际落地。这三道题放在一起刚好对应了数学建模竞赛最常出现的三大类问题机理驱动型、几何约束型、数据驱动型。准备比赛的时候如果只练过其中一类难免在选题时心虚。我建议所有队伍在赛前都用往年题把这三类各练一遍不需要全部写出完整论文但至少要知道模型框架和代码怎么组织。1.2 选题策略先看队伍短板再谈题目难度2023年很多队伍在选题时最纠结的是A题和C题。A题听起来高端C题听起来接地气但实际难度不完全由题目背景决定。我给参赛队伍的建议可以浓缩成一句话让队伍里最擅长的那个人做他最擅长的环节而不是让整支队伍去啃最陌生的领域。如果队伍里有物理或工程背景强、空间想象力好的同学A题值得选。A题的核心不是编程而是能不能快速把太阳位置、镜面法向量、反射光线之间的关系理顺。理不顺就写代码后面的遮挡效率和截断效率全都会错。如果队伍整体数学基础扎实尤其擅长推导公式和做约束优化B题是很稳的选择。B题第一问的公式推导只要做对后面就有了明确的分母所有优化目标都是围着覆盖宽度转。第三问即便复杂也可以用网格离散加贪心搜索闯过去。如果队伍里有两个以上熟练用Python做数据分析的同学C题最保险。C题的数据量看起来大但结构很规范清洗难度不高需求预测和库存优化都有现成套路可循。唯一的坑是业务约束多比如损耗率、促销折扣、最小陈列量漏掉一个就可能被评委追问。这里再强调一下国赛的获奖比例本来就不高这种情况下选题的容错率很低。不要看到A题觉得“出题人想考物理”就一头扎进去也不要因为C题数据多就觉得简单。三个题拿同样的时间做难度是接近的只不过难在不同的地方。1.3 72小时怎么分配给模型、代码和论文我见过太多队伍在第一天晚上就着急写代码结果发现模型还没想明白代码写了一版又一版。正确的打法应该是前松后紧。时间段任务重点第一天上午读题、查资料、把“已知条件-决策变量-目标函数-约束”写在一张纸上第一天下午到晚上建立主要模型写第一版核心函数做小规模验证第二天全天跑大规模求解、画结果图、做敏感性分析同时开始写论文的数据分析和模型介绍第三天上午补充优化、计算关键指标、统一所有图表格式第三天下午写摘要、检查论文逻辑、排版、导出PDF这个安排的核心是模型和代码必须在前36小时定型。到了第三天如果还在改模型论文基本来不及写。尤其是A题这种涉及启发式搜索的题目算法收敛就需要几个小时第一天不把目标函数写好后面会很被动。2. A题定日镜场从太阳位置到光学效率的建模链路2.1 先读懂物理场景再谈优化A题的背景是塔式太阳能光热电站。场地中央有一座集热塔塔顶安装圆形集热器。场地里布置若干定日镜每面定日镜都是平面镜可以绕水平和垂直轴转动把太阳光反射到集热器上。题目通常会给塔高、集热器直径、圆形场地半径、镜面反射率、定日镜边长范围等信息。建模的第一步不是写目标函数而是定义坐标系。我用的是以塔基为原点、x轴指向正东、y轴指向正北、z轴竖直向上的笛卡尔坐标系。集热器中心坐标是(0, 0, H)H是塔高。第i面定日镜中心的坐标是(x_i, y_i, z_i)其中z_i是镜面中心离地高度。太阳位置用太阳高度角α_s和太阳方位角γ_s描述。太阳方向单位向量s可以写成import numpy as np def sun_vector(alt, azi): # alt: 太阳高度角度 # azi: 太阳方位角度从正北顺时针计算 alt_r np.radians(alt) azi_r np.radians(azi) return np.array([ np.cos(alt_r) * np.sin(azi_r), np.cos(alt_r) * np.cos(azi_r), np.sin(alt_r) ])这里要特别注意不同文献对太阳方位角的定义不一样有的从正南算起有的从正北算起。国赛题一般会在附录里给太阳高度角和方位角的计算公式按照题目给的公式来别自己换基准。2.2 光学效率不是一项是一串连乘定日镜反射后的能量不可能百分之百进到集热器里。A题的核心就是算清楚每条光路损失在哪。光学效率通常拆成五项效率项含义主要影响因素余弦效率太阳光斜射到镜面上有效面积减小太阳入射方向与镜面法向的夹角阴影遮挡效率相邻定日镜挡住入射光或反射光镜面间距、太阳高度角、塔高截断效率反射光斑部分落在集热器开口外镜面光学误差、集热器尺寸、距离大气透射效率反射光线在空气中传播有衰减镜面到塔顶的距离镜面反射率镜面本身反射比例题目给定常数通常0.92总光学效率是这五项连乘。其中反射率是常数大气透射率一般用经验公式比如随距离d线性或二次衰减。真正拉开队伍差距的是前三项。余弦效率的计算最基础镜面法向量n等于入射方向s和反射方向r的单位和向量因为平面镜反射时法向量平分入射和反射方向。而入射方向s是从镜面指向太阳反射方向r是从镜面指向集热器中心。写法如下def cosine_efficiency(sun_dir, reflect_dir): normal sun_dir reflect_dir normal normal / np.linalg.norm(normal) # 余弦效率就是入射方向与法线方向夹角的余弦 return np.dot(normal, sun_dir)如果算出来的余弦效率大于1一定是角度单位错了或者方向向量没归一化。阴影遮挡效率最耗时间。思路是对每一面镜子先判断它是否处于其他镜子的投影范围内。入射光方向是s如果有人站在镜面中心沿着s方向看过去如果前面有别的镜子挡着入射光就被遮了同理反射方向r上也有遮挡问题。工程上常用的做法是把所有镜面投影到一个与光方向垂直的平面上然后在二维平面里做多边形相交判断。比赛时如果觉得时间紧可以先做粗略计算只考虑相邻几圈镜子之间的遮挡远处镜子遮挡概率小用阈值过滤。截断效率可以用蒙特卡洛模拟计算。把反射光斑近似为以理想反射点为圆心的高斯分布光斑光斑半径和镜面大小、光学误差有关。然后在集热器开口的圆形区域上做数值积分统计落在圆内的功率比例。2.3 优化模型怎么写才能拿高分A题的目标函数要看清题目问的是“输出热功率最大”还是“单位镜面面积年平均输出热功率最大”。后者更常见因为它能把镜场规模差异熨平让结果在不同方案之间可比。以“单位镜面面积年平均输出热功率最大”为例目标函数可以写成[ \max f(X) \frac{\sum_{i1}^{N} A_i \cdot DNI \cdot \eta_i(X)}{\sum_{i1}^{N} A_i} ]其中N是定日镜数量A_i是第i面镜子的面积DNI是法向直接辐射强度η_i是第i面镜子在当前布局下的年平均光学效率。约束条件通常包括所有定日镜中心落在给定圆形场地内相邻定日镜边缘之间至少留出一定距离防止机械干涉定日镜边长和安装高度在题目给定范围内。写论文时一定要把“年平均”的处理方式讲清楚。一般做法是从一年中选若干代表时刻比如每月15日从6点到18点逐小时采样对每个时刻计算光学效率再按时间加权平均。不要把所有时刻等权平均因为不同时刻太阳位置分布对能量贡献不是均匀的比如正午时DNI更强。不过2023年国赛A题把DNI设成了常数简化了很多你只需要把太阳位置按小时采样算效率平均即可。2.4 求解框架与代码骨架A题的目标函数是一个黑箱因为遮挡效率无法写成显式表达式求导基本不可能。推荐用启发式算法比如粒子群PSO、遗传算法GA或者差分进化DE。下面给一个PSO求解框架的例子from pyswarm import pso def objective(x): # x 是编码后的布局变量比如每面镜子的极坐标半径、角度、边长、高度 layout decode(x) total_power 0.0 for mirror in layout: eta total_efficiency(mirror) total_power mirror.area * DNI * eta avg_power_per_area -total_power / sum(m.area for m in layout) return avg_power_per_area lb [0] * n_vars ub [1] * n_vars xopt, fopt pso(objective, lb, ub, swarmsize30, maxiter100)这个框架里最需要注意的是变量编码。直接把每一面镜子的x、y坐标、边长、高度全塞进x里维度会很高PSO很难收敛。更好的做法是利用对称性圆形场地绕塔对称可以只优化一个扇区再旋转复制出整个镜场。或者把镜面按同心圆环排列每个环给定半径、镜面数量和镜面尺寸这样变量数大幅减少。我推荐用环形布局作为初始解再在局部用坐标轮换法微调。先整场粗优化再对几个关键环精细调整这样比直接全局搜索稳定得多。2.5 A题实战中的三个坑第一个坑是角度单位。所有三角函数计算必须用弧度但题目给的角度可能是度数。我带的队伍第一版代码里太阳高度角忘转弧度结果效率算出来忽大忽小排查了一晚上。建议写一个全局统一的角度转弧度函数所有入口都过一遍。第二个坑是遮挡计算的效率。如果镜场有几百面镜子三重循环逐对判断遮挡会非常慢。比赛时间有限我的经验是先做“距离截断”只判断距离当前镜子半径5倍以内的镜子是否遮挡远处的影响忽略。这样误差通常可以接受还能把计算时间压到原来的十分之一。第三个坑是结果完全不可解释。有的队伍用优化算法跑到一堆镜面位置最后结果看起来很好但画出来布局杂乱无章评委一眼就觉得不靠谱。实际上真实定日镜场都是有规律排布的环形或栅格布局不仅好解释而且更容易通过约束检验。优化结果一定要画成彩色的镜场布局图标明每面镜子的效率这是论文里的加分项。3. B题多波束测线覆盖宽度公式推导与全覆盖测线设计3.1 多波束测深到底在测什么多波束测深仪安装在测量船底部向海底发射一个扇形波束一次能测出一条垂直于航迹方向的海底剖面。波束在航迹法平面内的开角是θ常见的是120度。如果海底是水平的水深为D那么覆盖宽度就是对称的两侧各覆盖D·tan(θ/2)总宽度为2D·tan(θ/2)。海底不水平时多波束的覆盖宽度就没这么简单了。题目里给了海底坡角α并要求设计测线。注意测线方向一般平行于海底等深线这样垂直测线方向上的海底坡度才是α。如果测线斜着走等效坡角会变小公式会变复杂国赛题通常为了控制难度都会明确测线方向与等深线的关系。3.2 倾斜海底覆盖宽度公式自己推一遍比背十遍强我直接把推导过程写出来你最好在纸上画一遍。用一个垂直于测线方向的剖面图。测量船在水面换能器所在位置水深为D0。海底是斜线坡角为α。波束开角的一半为βθ/2左右两侧各有一条边界声线。先看向坡上的一侧。坡上的海底深度随水平距离x1增大而减小某处水深为D0 - x1·tanα。声线从换能器发出后向下倾斜β在同一水平距离x1处声线所在的深度为x1·tanβ。声线与海底的交点满足[ x_1 \tan\beta D_0 - x_1 \tan\alpha ]所以[ x_1 \frac{D_0}{\tan\beta \tan\alpha} ]再看向坡下的一侧。坡下海底深度为D0 x2·tanα声线深度为x2·tanβ交点满足[ x_2 \tan\beta D_0 x_2 \tan\alpha ]得到[ x_2 \frac{D_0}{\tan\beta - \tan\alpha} ]覆盖宽度就是两段水平距离之和[ W \frac{D_0}{\tan\beta \tan\alpha} \frac{D_0}{\tan\beta - \tan\alpha} ]把分母通分之后还能整理成[ W \frac{2 D_0 \tan\beta}{\tan^2\beta - \tan^2\alpha} ]这个公式很好用但前提是β必须大于α否则x2会变成负数甚至无穷大意味着声线可能无法照射到坡下海底。题目给的α一般不会超过30度开角120度时β60度所以不用太担心。举个数值例子。D050mθ120度α10度。计算得β60度tanβ1.732tanα0.1763。于是[ W 50/(1.7320.1763) 50/(1.732-0.1763) 26.2 32.1 58.3m ]而平坦海底的覆盖宽度是2×50×tan60度173.2m。坡度让覆盖宽度缩水了将近三分之二。这就是为什么测线间隔必须按实际海底坡度计算不能用平坦海底的公式偷懒。3.3 重叠率、漏测和测线间距的量化关系多波束测线要全覆盖海底相邻两条测线的覆盖范围必须有重叠否则中间就会漏测。假设测线间距为d单条测线覆盖宽度为W那么两条测线之间重叠的部分宽度为W-d。重叠率η的定义通常有两种。一种是重叠宽度除以覆盖宽度即η(W-d)/W另一种是重叠宽度除以单侧覆盖宽度。不同题目定义不同拿到题先看题目公式别默认。按第一种定义给定最小重叠率η_min那么测线间距就不能太大[ d \le W(1 - \eta_{\min}) ]这里最容易被忽略的是W会随着水深变化而变化。水深越浅覆盖宽度越小。如果海域从浅到深浅水区的W小深水区的W大。用平均值算间距浅水区大概率漏测。正确的做法是对每条测线位置单独计算水深再算W最后决定相邻测线能放多远。3.4 最短测线总长本质上是最小条数问题如果海域形状是规则的矩形或梯形测线都是平行直线每条测线都要横穿整个海域那么测线总长度等于条数乘以测线方向的海域宽度。这时候“总长最短”等价于“条数最少”。贪心策略是靠谱的从浅水边界开始布第一条测线根据当前测线的W和最小重叠率约束算出这条测线能覆盖到的最远位置作为下一条测线的位置以此类推。每一步都走满最后条数一定是最少的。import numpy as np def coverage_width(D, theta_deg120, alpha_deg10): beta np.radians(theta_deg / 2) alpha np.radians(alpha_deg) if alpha beta: return float(inf) return D / (np.tan(beta) - np.tan(alpha)) D / (np.tan(beta) np.tan(alpha)) def design_greedy(D_start, slope_rad, total_length, theta_deg120, eta_min0.1): positions [0.0] while positions[-1] total_length - 1e-6: depth D_start - positions[-1] * np.tan(slope_rad) W coverage_width(depth, theta_deg, np.degrees(slope_rad)) step W * (1 - eta_min) positions.append(positions[-1] step) return np.array(positions)当海底地形变成二维曲面时问题会更复杂。这时候我建议把海域离散成网格对每个网格点计算水深和坡度然后把测线设计转换成图上的路径覆盖问题。虽然模型大了不少但用动态规划加贪心还是能在一个可接受的时间内得到不错的结果。第三问经常会用数字高程模型给海底地形。这时不能直接套一维坡度公式需要先对网格数据求梯度得到每个点的主坡方向和坡角再沿着垂直主坡的方向设计测线。这一步很考验数据处理能力建议用numpy.gradient算完梯度之后把坡度和坡向画成等值线图先看看地形趋势再动手建模。3.5 B题验证要点第一个验证点是手算第一问。第一问通常会给出几组水深D0和坡角α让你求覆盖宽度。用上面的公式带入如果结果和题目给的参考值一致说明公式方向没搞错。第二个验证点是画出覆盖剖面图。把设计好的测线位置画在海底剖面图上用不同颜色表示相邻测线的覆盖区间检查有没有缺口。这一步能直观地发现漏测问题。第三个验证点非常容易被忽视重叠率是否过多。有的队伍为了保证全覆盖把间隔压得很小实际上重叠率超过50%测线总长会明显增加评阅时容易被打低分。最优解应该是在满足全覆盖和最小重叠率约束下尽量让测线稀疏。4. C题蔬菜定价补货数据规律、需求预测和库存优化三步走4.1 拿到菜场数据先回答四件事C题的数据通常包括六类蔬菜的销售流水字段有销售日期、单品编码、单品名称、销量、批发价、销售单价。拿到数据我建议先做四件事按品类汇总每日销量看整体走势确认有没有明显的周末效应和节假日峰值计算各品类的销量占比搞清主力品类是哪几个计算单品销量与价格的相关系数验证“越贵卖得越少”的需求规律看品类之间的相关性比如辣椒和茄子这类搭配食材是否同涨同跌。这些分析不仅能帮你理解业务还能在论文里撑起大半篇幅。很多队伍一上来就开始预测结果连数据里周末效应都没发现预测模型选了纯趋势模型精度自然很差。分析相关性时别只用皮尔逊系数。销量数据通常右偏且有离群值皮尔逊系数容易被极端值带偏建议同时算斯皮尔曼秩相关系数。如果两种相关系数方向不一致说明数据里可能有非线性关系这时候画散点图比看数字更靠谱。4.2 需求预测为什么我更推荐Prophet而不是LSTMC题里销量预测是补货决策的基础。我看到很多队伍直接上LSTM以为神经网络一定更准但在这个数据规模和信噪比下LSTM的优势根本发挥不出来还容易出现训练不稳定、过拟合的问题解释起来也很困难。我更推荐用Prophet或STL分解加指数平滑的组合。原因是蔬菜销量有明显的周周期周末家庭采购量大、年周期不同季节蔬菜需求不同和节假日效应Prophet把趋势、周期、节假日拆开建模开箱即用而且可解释性强。如果用Prophet核心代码很简单from prophet import Prophet def forecast_week(df, category): hist df[df[category] category][[date, sales]].rename( columns{date: ds, sales: y}) model Prophet(yearly_seasonalityTrue, weekly_seasonalityTrue, daily_seasonalityFalse) model.fit(hist) future model.make_future_dataframe(periods7) forecast model.predict(future) return forecast[[ds, yhat, yhat_lower, yhat_upper]]赛前一定要做“回测验证”把最后一周数据藏起来用之前的数据训练再对比预测值和真实值计算MAPE或RMSE。不做验证直接给预测结果评委基本不会信。有些单品销量非常稀疏某些天销量为零这时候把单品单独预测会特别抖。一个稳妥的做法是先按品类预测总量再按单品历史占比拆分到单品。如果某个单品最近占比明显变化再人为修正一下。这个思路既能稳定预测结果又符合超市补货时“先定品类预算再分配单品”的实际操作。4.3 补货量和定价要联合优化别拆开很多队伍处理C题第三问时先预测销量然后让补货量等于预测销量再把价格设成批发价乘以固定加成系数。这样做不是完全不行但丢掉了“定价会影响需求”这个题眼很难拿高分。正确思路是做一个需求-价格-补货的联动模型。记需求预测为d(p)它随定价p变化。假设需求服从均值为μ(p)、标准差为σ的正态分布成本为c售价为p未售出的蔬菜损耗率为l残值近似为0那么这就是一个标准的报童问题。最优补货量Q*应满足累计分布函数分位数[ P(D \le Q^*) \frac{p - c}{p} ]这个式子的直觉是多进一单位蔬菜如果卖出去利润是p-c如果卖不掉损失是c。当边际利润和边际损失平衡时就是最优。所以售价越高利润空间越大越值得多进货售价越接近成本利润空间越小宁可缺货也不要积压。代码实现from scipy.stats import norm def newsvendor_order(price, cost, mu, sigma): ratio (price - cost) / price ratio max(0.05, min(ratio, 0.95)) z norm.ppf(ratio) return max(0, mu z * sigma)有了这个函数就可以对每个单品枚举一组候选定价比如批发价上浮10%到60%每个价格下估算μ(p)和σ求出Q*再计算期望利润。期望利润等于销售额减去进货成本减去损耗成本。最终选出利润最高的价格和补货量。定价对需求的影响可以用弹性模型描述常见的包括线性模型[ d(p) a - b p ]或者双对数模型[ \ln d(p) \ln a - b \ln p ]系数可以从历史数据里用最小二乘拟合得到。注意必须分单品拟合因为不同单品的价格弹性差别很大便宜菜贵一点可能销量影响不大高价菜调价很敏感。4.4 C题代码落地细节这一题的数据处理比模型本身更能拉开分数。我总结几个常见坑。第一日期列要统一成datetime类型别让Excel自动读成字符串。第二销量和价格如果有缺失直接用当天同类目中位数填充别用全局均值。第三计算日利润时损耗有两种处理方式如果当天没卖完剩余部分按0残值报损如果题目允许打折销售尾货那残值就是折扣价报童模型要改成带残值的形式[ P(D \le Q^*) \frac{p - c}{p - s} ]其中s是残值也就是尾货处理价。加了残值后最优补货量会上升因为卖不掉的部分还能回一点血。输出结果时我建议生成一张表字段包括单品编码、日期、建议零售价、补货量、预测销量、期望利润。评委看的是你要给出“策略”不是一个孤零零的数字。表格能直接放进论文附录很加分。补货决策还要考虑一个实际约束超市货架有限不可能每天无限制进货。一般题目会给定“单品供应量上限”或者“品类日补货总量上限”。看到这类约束就要把报童模型的结果作为初解再用线性规划做调整。线性规划的决策变量是每个单品的补货量目标函数是总期望利润约束条件是总补货量上限和单品上下限。4.5 C题最容易被扣分的三个地方第一个是只预测不验证。哪怕是简单的时间序列模型也要在论文里写一段“我们用了最后14天做回测MAPE是XX%”。这句话能立竿见影地提升论文可信度。第二个是忽略季节性。蔬菜销量受季节和节日影响非常大如果不分品类直接做全局预测结果几乎必然偏差。写论文的时候可以分析“叶菜类夏季销量高、冬季销量低”这类结论用数据支撑你的模型选择。第三个是定价和补货脱节。如果预测需求时用一个价格优化补货时又换了一个价格模型内部逻辑就崩了。必须在模型里明确价格变量如何影响需求均值需求分布如何进入报童模型最后如何计算利润。这条链子只要有一步断了评委一追问就露馅。5. 三题背后的通用方法工具箱5.1 从2023年三道题提炼的建模能力矩阵这三道题做完一遍你会发现它们分别强化了三项核心能力A题是“把物理过程拆成可计算函数”B题是“把几何直觉变成公式和约束”C题是“从业务数据中提取决策规则”。我建议准备比赛时不要按年份刷题而是按题型刷题。A题对应优化设计题练的核心是目标函数和约束的搭建B题对应机理推导题练的是公式到代码的转换C题对应数据决策题练的是预测和优化串联。如果你2026年或者华为杯的目标是国奖那么这三种能力缺一不可。有些队伍只练数据题遇到偏物理的赛题就慌有些队伍只会推公式处理真实数据时抓瞎。把这三类题各练透一道比泛泛看十篇优秀论文管用得多。5.2 三个能救命代码工程习惯第一所有随机过程都要固定随机种子。启发式算法、样本抽样、模型初始化一旦涉及随机就在代码开头写np.random.seed(2023)。不然早上跑出一版结果下午再看完全变样论文里的数字没法写。第二中间结果全部落盘。目标函数值、每轮迭代的布局、预测误差、敏感性分析结果全存成CSV。第三天写论文时你根本来不及重新跑一遍长代码这些中间结果就是你写图表的数据来源。第三核心公式和代码变量名对上。比赛中临时改参数是常态如果论文里的公式和代码里的实现不一致自己都会搞混。我习惯在每个函数注释里写上对应的公式编号比如“% 对应论文式(7)”这样写论文和答辩都能快速找到对应关系。5.3 关于AI辅助竞赛的一句话提醒现在很多同学会用AI辅助生成解法提示和代码比赛组委会也要求提交AI工具使用自查表。我的看法是AI可以帮你快速理解陌生领域的背景、帮你debug、帮你会话式地梳理公式但不要让AI直接生成大段论文内容更不要直接抄生成的模型代码。评阅人一旦追问某个参数为什么这么设AI生成的东西往往是答不上来的。最稳的做法是把AI当队友不当枪手核心思路必须自己能手写推导一遍。我个人的习惯是拿到题后用AI提示词问“这道题可能用到哪些模型每个模型的适用条件是什么”然后自己判断、筛选、改写。这样效率高又不会违背比赛规则。最后再分享一点带队体会带了三届队伍之后我越来越觉得国赛考的不是谁的模型炫而是谁能在72小时内把模型、代码、论文拧成一股绳。2023年三道题A题考光路B题考声线C题考冷链本质上都在讲同一个道理所有优化决策都来自对真实物理和业务约束的尊重。光路走不顺效率就是低声线照不到覆盖就有洞菜卖不出去利润就是负。如果你今年准备冲奖我建议至少把B题的公式自己推一遍把C题的预测和报童代码跑通把A题的镜场布局框架写好。最后再分享一个我从老队员那里学来的笨办法拿到题先别急着定花半天把三道题各做15分钟思路预演把每道题的建模主线写在纸上然后对比哪条主线最清晰再正式开写。这个习惯看起来浪费时间实际上能帮你避开最可怕的“做到一半发现路走死”的窘境。