ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MathorCup数学建模竞赛B题解析:机器人竞技策略的分层优化与MCTS应用

MathorCup数学建模竞赛B题解析:机器人竞技策略的分层优化与MCTS应用 1. 项目概述与核心价值最近在整理过往的参赛资料翻到了2026年MathorCup妈妈杯数学建模竞赛B题《机器人竞技策略的优化问题》的论文。当时和队友熬了几个通宵最终拿了个不错的奖项。这个题目非常有意思它不像传统的纯理论优化问题而是将机器人竞技这个充满动态和不确定性的场景抽象成了一个可量化、可求解的数学模型。今天我就把我们对这道题的完整解题思路、模型构建过程、算法实现细节以及一些关键的“避坑”心得系统地分享出来。无论你是正在备战数学建模竞赛的学生还是对机器人策略优化、博弈论、智能决策算法感兴趣的研究者或工程师相信这篇深度解析都能给你带来实实在在的启发和可以直接复现的“工具箱”。这道题的核心是让参赛者设计一个在特定规则下的机器人竞技策略优化模型。机器人需要在有限资源如能量、时间和复杂环境对手行为不确定、场地状态变化的约束下通过一系列动作移动、攻击、防御、采集等来最大化自己的“竞技得分”。这本质上是一个动态环境下的多目标序贯决策问题融合了运筹学、博弈论、强化学习等多个领域的知识。我们的工作就是将这些复杂的现实问题用数学的语言清晰定义并找到高效、鲁棒的求解方案。2. 问题深度解析与建模框架设计拿到题目后第一步不是急着写代码而是要把问题“吃透”。我们花了大量时间反复阅读赛题描述提炼出了几个最核心的挑战这也是我们建模的出发点。2.1 核心挑战识别信息不完全与对手不确定性机器人无法完全预知对手的实时状态和下一步行动。这要求策略必须具备抗干扰和适应性。我们不能假设对手是“傻子”必须考虑其可能采取的最优或次优反制策略。动态环境与状态空间爆炸竞技场状态如资源点分布、障碍物、机器人自身状态位置、血量、能量、对手状态都在随时间变化。直接枚举所有可能的状态-动作组合其计算量是指数级增长的即所谓的“维度灾难”。多目标与资源权衡得分可能来源于击败对手、占领据点、收集资源等多个途径。如何在不同目标间分配有限的行动力和资源例如是优先进攻削弱对手还是优先发育积累优势是一个经典的多目标优化问题。实时决策与计算效率的平衡竞赛通常要求在规定时间内提交策略这意味着我们的模型和算法必须在有限的计算时间内给出“足够好”的决策而不是追求理论上完美但耗时过长的解。2.2 整体建模思路分层决策框架为了应对上述挑战我们没有采用单一的“大而全”模型而是设计了一个分层决策框架。这个框架将复杂的决策过程分解为多个层次每一层处理不同粒度的问题大大降低了问题的复杂度。战略层宏观规划以整个比赛周期或一个较长时间段为视角。主要回答“我们本局比赛的总体方针是什么”例如是采取“激进进攻”策略还是“稳健发育”策略或是“前期防守反击后期一波决胜”的策略。这一层通常基于对双方初始实力、地图特性的分析使用博弈论如矩阵博弈或高级启发式规则来确定。战术层中观调度时间尺度缩短到几分钟或几十个决策步。主要回答“在当前阶段我们应该优先完成哪些子目标资源如何分配”例如判断当前是应该集体去争夺地图中央的关键资源点还是分兵防守己方据点。这一层可以运用动态规划或整数规划来优化资源调度和任务分配。执行层微观控制这是最细的粒度对应机器人的每一个即时动作。主要回答“现在我该向哪个方向移动多少距离使用哪个技能”这一层直接面对巨大的状态空间我们采用了蒙特卡洛树搜索MCTS结合启发式评估函数的方法在实时性要求下进行滚动优化。这个分层结构的好处是显而易见的战略层为战术层提供了方向战术层为执行层划定了搜索空间而执行层的反馈如战斗损耗又可以反过来修正战术和战略。它使得模型既具备了宏观视野又能进行精细操作。3. 核心模型构建与数学表述在确定了分层框架后我们需要用严格的数学语言定义每一层。这里分享我们构建的几个核心模型。3.1 执行层核心基于改进MCTS的实时动作决策执行层是策略的“手脚”其优劣直接决定瞬时对抗的成败。我们选择了蒙特卡洛树搜索MCTS作为基础因为它特别适合这种信息不完全、动作空间离散且需要前瞻性的博弈场景。1. 状态表示 (State S):我们将竞技场离散化为一个网格地图。一个状态S_t在时刻t可以表示为S_t {Map_Grid, P_self, P_opponent, Resources, Global_Time}其中Map_Grid: 二维数组表示每个格子的类型空地、障碍、资源点、据点等。P_self / P_opponent: 字典包含己方/敌方每个机器人的属性如位置(x,y)、生命值HP、能量值Energy、攻击力ATK等。Resources: 地图上各资源点的剩余资源量。Global_Time: 比赛剩余时间。2. 动作空间 (Action A):每个机器人在一个决策步可执行的动作是有限的例如{上移 下移 左移 右移 停留 攻击方向 使用技能X 采集目标资源点}。将多个机器人的动作组合起来就构成了该决策步的联合动作空间。为了减少分支因子我们引入了动作剪枝例如远离对手的“攻击”动作会被赋予极低的优先级。3. 改进的MCTS流程标准的MCTS包含选择、扩展、模拟、回溯四步。我们针对机器人竞技问题做了关键改进选择 (Selection)从根节点当前状态开始使用UCT上限置信区间算法的变体选择子节点。我们修改了探索项不仅考虑访问次数还加入了基于启发式规则的动作先验概率让搜索更快地聚焦到有希望的分支。# 伪代码改进的节点选择分数计算 def calculate_uct_score(node, parent_visit_count, c_puct): # node: 当前子节点 # Q: 该节点的平均模拟收益 # N: 该节点的访问次数 # P: 由神经网络或启发式规则给出的动作先验概率 exploitation node.Q exploration c_puct * node.P * sqrt(parent_visit_count) / (1 node.N) return exploitation exploration扩展 (Expansion)当遇到未完全展开的节点时不是随机选择一个动作而是使用一个轻量级评估函数对所有可能动作进行快速评分优先扩展评分最高的前K个动作。这个评估函数基于简单的规则如“距离对手的远近”、“能否攻击到对手”、“是否靠近资源点”等。模拟 (Simulation/Rollout)这是最耗时的部分。我们不再进行完全随机的模拟直到终局而是采用截断式模拟。即只向前推演有限的几步如5-10步然后使用一个价值网络或精心设计的局面评估函数来预测这个“中间状态”的最终胜率期望。这个评估函数是我们模型的核心竞争力之一后文会详述。回溯 (Backpropagation)将模拟得到的收益或评估函数输出的胜率沿着搜索路径反向传播更新路径上所有节点的访问次数和累计收益。通过限定每次决策的搜索时间如50msMCTS会在时间截止时选择根节点下访问次数最多的子节点对应的动作作为当前最优决策。这种方法能在有限时间内给出经过一定程度“深思熟虑”的决策。注意MCTS的搜索深度和广度是一对矛盾。在资源有限的情况下我们倾向于“广度优先”而非“深度优先”。因为竞技场变化快过于深远的推演可能因对手一个意外动作而变得毫无价值。我们的经验是将推演深度控制在能覆盖一次关键技能冷却周期或一次资源刷新周期的步数内。3.2 战术层核心基于多目标优化的资源调度模型执行层解决了“怎么打”的问题战术层则要解决“打哪里”和“派谁去”的问题。我们将其建模为一个带约束的多目标优化问题。假设在时间窗口[t, tT]内地图上出现了M个需要争夺的目标点如资源点、据点我们有N个机器人。定义决策变量x_{ij} ∈ {0, 1} 表示是否派遣机器人i前往目标点j。y_j ∈ {0, 1} 表示目标点j是否被成功占领/采集。我们需要最大化多个收益例如资源获取总量Maximize f1 Σ_j (value_j * y_j)战略位置控制得分Maximize f2 Σ_j (strategic_weight_j * y_j)对敌方造成的潜在干扰Maximize f3 Σ_j (disruption_j * y_j)其中disruption_j与派往该点的机器人战斗力以及该点对敌方的重要性正相关。同时面临多种约束机器人能力约束每个机器人同一时间只能执行一个任务。Σ_j x_{ij} ≤ 1, ∀i任务需求约束占领某个目标点可能需要至少k_j个机器人同时到达。Σ_i x_{ij} ≥ k_j * y_j, ∀j路径可行性约束机器人i到达目标点j所需时间t_{ij}必须小于时间窗口T且路径上无不可逾越障碍可通过预先计算的路径距离矩阵判断。能量/血量约束执行任务预计消耗的能量不能超过机器人当前存量。这是一个典型的多目标整数规划问题。我们采用加权和法将其转化为单目标问题即设定权重w1, w2, w3最大化U w1*f1 w2*f2 w3*f3。权重并非固定而是由战略层动态调整。例如当己方处于劣势时w1资源获取的权重可能调高以寻求发育当处于优势时w2战略控制的权重可能调高以巩固胜势。对于这个转化后的单目标整数规划由于问题规模在竞赛场景下通常适中N, M在10左右我们使用了Gurobi或OR-Tools这样的优化求解器来快速得到最优或近似最优解。如果问题规模突然变大则会退化为基于贪心或拍卖算法的启发式解法。3.3 评估函数与收益量化模型的“价值导向”无论是MCTS中的局面评估还是战术优化中的目标价值value_j都需要一个统一的“价值导向”来量化。我们设计了一个综合评估函数V(S)用于评估任意状态S下己方的优势程度。V(S) α * Economic_Advantage(S) β * Military_Advantage(S) γ * Positional_Advantage(S) δ * Time_Factor(S)经济优势 (Economic_Advantage)己方累计资源与敌方累计资源的差值经过归一化处理。资源包括金币、特殊道具等。军事优势 (Military_Advantage)这是一个关键且复杂的部分。它不仅比较双方总生命值和总攻击力还考虑阵容克制关系如某些机器人类型对另一些有伤害加成、关键技能冷却状态、以及集火潜力我方多个机器人能否快速瞄准同一敌方目标。我们用一个小型神经网络来学习这个子函数输入是双方状态向量输出是一个标量优势值。训练数据来自于对历史对局或自我对弈的模拟。位置优势 (Positional_Advantage)衡量对关键地图区域如视野高地、狭窄路口、资源刷新点的控制力。通过计算己方单位到这些关键区域的加权平均距离与敌方相比来量化。时间因子 (Time_Factor)考虑到比赛有时限当剩余时间很少时微小的经济或军事优势可能被放大为胜势。我们引入一个随时间变化的系数例如Time_Factor (remaining_time / total_time)^λ其中λ是一个参数用于控制时间压力的敏感度。权重α, β, γ, δ需要通过大量模拟对局进行调优也可以让模型在训练中自动学习。一个好的评估函数应该能准确反映“当前局面下最终获胜的概率”。4. 算法实现、集成与仿真测试模型建立后我们需要将其转化为可运行的代码并搭建一个仿真环境进行测试和迭代。4.1 仿真环境搭建我们没有使用复杂的物理引擎而是基于赛题描述用Python自行开发了一个离散事件仿真器。核心组件包括地图管理器维护网格地图状态处理单位移动、碰撞检测。单位管理器维护所有机器人的属性状态执行动作计算战斗伤害基于简单的攻击力-防御力公式可能加入随机暴击。事件调度器以固定时间步长如0.1秒推进仿真触发资源刷新、技能冷却更新、胜负判定等事件。交互接口为我们的策略AI提供一个标准接口。AI在每个决策步接收当前状态S_t返回动作集合A_t。这个自制仿真器的好处是高度可控、运行高效、易于调试。我们可以方便地记录每一步的状态、动作和收益用于后续分析和模型训练。4.2 策略AI集成我们将分层模型集成到AI模块中class CompetitionAI: def __init__(self, strategy_params): self.strategy_layer StrategyLayer(paramsstrategry_params) self.tactical_layer TacticalLayer() self.execution_layer MCTS_Planner(evaluation_funcV) def make_decision(self, current_state): # 1. 战略层更新频率较低例如每30秒一次 if self.should_update_strategy(current_state): global_strategy self.strategy_layer.update(current_state) self.tactical_layer.set_weights(global_strategy) # 更新战术层权重 self.execution_layer.set_aggression(global_strategy) # 调整MCTS探索倾向 # 2. 战术层规划频率中等例如每5-10秒一次 if self.should_update_tactics(current_state): objectives self.tactical_layer.solve(current_state) # 求解资源调度问题 self.execution_layer.set_current_objectives(objectives) # 为执行层设定子目标 # 3. 执行层决策每个决策步如0.5秒一次 actions self.execution_layer.search(current_state) return actions三个层级的更新频率不同战略层最慢执行层最快这样既保证了决策的响应速度又赋予了策略宏观的适应性。4.3 训练与调参让模型自我进化我们采用自我对弈Self-play的方式来训练模型特别是优化MCTS中的评估函数V(S)和战术层的权重参数。初始版本使用基于规则的评估函数和人工设定的权重让AI进行自我对弈生成大量对局数据(S_t, A_t, S_{t1}, R_t, Done)。训练评估网络利用生成的数据训练一个神经网络来拟合V(S)。损失函数设计为均方误差目标是让网络预测的V(S_t)尽可能接近从后续对局中回溯计算出的“真实”胜率期望通过蒙特卡洛回报或TD(λ)学习计算。进化策略参数将战术层的权重向量[w1, w2, w3]和战略层的策略参数视为一个“策略基因”。让多个不同基因的AI相互对战采用遗传算法或交叉熵方法淘汰表现差的基因保留并组合表现好的基因产生新一代策略。如此迭代让策略自动适应各种对手风格。对抗性测试除了自我对弈我们还设计了一些“极端”对手策略进行测试例如全图龟缩防守的“乌龟流”、不计代价疯狂进攻的“莽夫流”、专注于偷取资源的“盗贼流”。这有助于提升我们策略的鲁棒性。5. 参赛实操心得与常见问题排查在实际参赛的有限时间内将理论模型转化为高分论文需要很多技巧和取舍。以下是我们总结的关键心得和常见“坑点”。5.1 论文写作与呈现要点数学建模竞赛模型和算法是核心但论文是呈现给评委的唯一窗口。好的呈现能极大提升印象分。摘要就是一切摘要必须清晰、完整、独立地说明“针对什么问题建立了什么模型使用了什么方法得到了什么结果有什么特色和创新”。我们采用“问题概述→模型思路→方法简介→主要结果→结论创新”的五段式结构并在最后一句明确指出模型的优势如“实现了动态环境下的稳健决策”。图文并茂解释模型对于分层框架、MCTS流程、优化模型结构一定要画清晰的流程图或框架图。一图胜千言。图中要标明关键模块和数据流向。伪代码优于纯文字描述MCTS主循环、战术层求解等算法时使用规范的伪代码。伪代码应突出逻辑结构避免编程语言细节。灵敏度分析与模型检验这是体现模型稳健性的关键部分。我们设计了多组测试参数灵敏度改变MCTS的搜索时间、战术层权重等观察胜率变化说明模型在参数合理范围内是稳定的。环境扰动测试在仿真中增加随机噪声如指令执行有概率失败、对手模型加入随机性测试模型的抗干扰能力。对比实验必须设置基线模型进行对比我们设置了几个基线1) 完全随机策略2) 基于固定规则的贪婪策略3) 仅使用MCTS但没有分层框架的策略。用表格清晰展示在不同地图、不同对手强度下我方策略的胜率、平均得分等关键指标均显著优于基线。| 测试场景 | 对手策略 | 我方策略平均胜率 | 基线1随机胜率 | 基线2规则胜率 | 基线3单层MCTS胜率 | | :--- | :--- | :--- | :--- | :--- | :--- | | 地图A均衡开局 | 标准AI | 78% | 12% | 45% | 65% | | 地图B我方劣势开局 | 进攻型AI | 62% | 8% | 32% | 51% | | 地图C资源丰富 | 发育型AI | 85% | 15% | 60% | 70% |模型优缺点与推广客观地分析模型的不足例如对超快节奏变化的反应可能滞后评估函数对未见过的极端阵容可能失效并提出可能的改进方向如引入在线学习机制。同时说明该模型框架可推广到其他实时策略游戏、无人机集群任务分配、物流调度等场景。5.2 实战编码与调试陷阱性能瓶颈定位仿真初期可能非常慢。使用Profiler工具如Python的cProfile找出耗时最长的函数。通常MCTS的模拟Rollout步骤和战术层的整数规划求解是两大热点。对于Rollout我们通过简化评估函数、截断深度来优化对于规划求解我们为小规模问题保留精确求解器为大规模问题准备了快速的启发式备用方案。随机种子管理仿真中涉及随机数暴击、初始位置等。务必固定随机种子如random.seed(42)确保实验的可复现性。这是进行科学对比的基础。状态同步问题在分层模型中如果战术层规划的执行周期内执行层已经因为突发战斗改变了状态可能导致决策不一致。我们引入了“决策锁”机制当执行层检测到突发激烈战斗如血量骤降时会立即中断当前的战术规划并通知战术层基于最新状态重新规划。评估函数的“盲点”训练出的评估网络可能在训练数据分布之外的状态下做出荒谬判断。我们定期进行“对抗样本生成”即故意构造一些奇怪但合法的局面看评估函数的输出是否合理并将这些样本加入训练集进行强化学习。5.3 时间管理与团队协作72小时的比赛时间分配至关重要。第一天0-18小时全力读题、讨论、确定建模方向。不要急于敲代码。必须全员对问题理解达成一致并画出初步的模型框架图。这个阶段可以同时收集和准备可能需要的基础代码如网格地图类、单位类。第二天18-48小时核心建模与实现。一人主攻仿真环境搭建一人主攻核心算法MCTS、优化模型一人开始撰写论文的“问题重述”、“模型假设”、“符号说明”部分。晚上必须完成第一个可运行的初级版本并进行简单测试。第三天48-72小时迭代优化与论文冲刺。上午根据初级版本的运行结果调整模型参数修复重大bug。下午开始集中进行对比实验、灵敏度分析并生成结果图表。晚上至截止前全力撰写和润色论文特别是摘要、模型建立、结果分析部分。最后留出2小时检查格式、错别字并打包提交。机器人竞技策略优化是一个充满魅力的交叉领域它迫使你将抽象的数学理论与动态复杂的现实问题相结合。通过MathorCup这道赛题的锤炼我们不仅收获了一个奖项更掌握了一套解决复杂序贯决策问题的系统方法论——从问题拆解、分层建模、算法选型到实验验证。这套方法论的适用性远不止于一场比赛或游戏它对于任何需要在不确定环境下进行智能规划和决策的系统都有着广泛的参考价值。最关键的是在有限时间和资源下如何做出合理的简化与权衡如何设计有效的评估体系以及如何通过迭代测试让系统不断进化这些思考过程本身就是最大的财富。
返回列表