三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

多目标优化实战:无人机配送如何同时打赢“快“与“省“两场仗

多目标优化实战:无人机配送如何同时打赢“快“与“省“两场仗

多目标优化实战:无人机配送如何同时打赢"快"与"省"两场仗

8 月 3 日,DoorDash 正式推出无人机配送业务 DoorDash Air,把披萨和外卖送上天空;此前一周,广东中山发布低空经济高质量发展行动方案,提出无人机配送"60 分钟通达广深珠";8 月 2 日,四川绵阳的无人配送试点线路已经常态化运行。短短几天,无人机配送从一个概念变成多座城市同步推进的真实业务。但很少有人追问:一架无人机送哪几单、先送谁、走哪条航线,背后其实是一场典型的多目标优化问题——既要送得快,又要花得少,还要飞得稳。

一、什么是多目标优化:先看懂"两个目标打架"

多目标优化(Multi-Objective Optimization)指优化问题里同时存在两个及以上互相冲突的目标。无人机配送里,"送达时间最短"和"运营成本最低"天然冲突:想快,就要多派无人机、走直线、卡着时间窗飞,能耗和调度成本立刻上升;想省,就要少派机、多拼单、绕远路,可客户的耐心是有限的。

国赛题目里类似的冲突随处可见:医院排班要"医生满意度"与"患者等待时间"兼得;水库调度要"发电量"与"防洪安全"兼顾;工厂排产要"交期"与"能耗"平衡;银行网点选址要"覆盖人群"与"建设成本"双赢。只要题目里出现"在……的同时兼顾……""权衡""折中""协调"这类字眼,多半就是多目标优化。

对比维度单目标优化多目标优化
目标数量只有一个目标函数两个及以上互相冲突的目标
解的形式一个唯一最优解一组互不占优的折中解(帕累托前沿)
典型方法梯度法、爬山法、经典算法加权法、约束法、进化多目标算法
决策方式直接给出答案先扫出解集,再交给决策者挑选
论文呈现一张收敛曲线权衡曲线 + 帕累托前沿图

二、为什么"把两个目标加权成一个数"不够用

最常见的直觉是把两个目标各乘一个权重再加起来,转成单目标问题求解。看起来省事,但有两个硬伤。

第一,权重谁定?"送得快重要还是省钱重要",客户、平台、监管部门三方答案完全不同。权重一改,最优方案就变,评委第一个追问就是"你的权重凭什么这么设"。第二,加权后的最优解只是帕累托前沿上的一个点,你丢掉了其他同样合理的选择。比如能耗只比最优多 3%,时间却能省 15%——这种方案在加权法下很可能直接被丢掉,但对决策者恰恰很香。

所以更专业的做法是:先把"所有不被任何方案全面压制的解"全部找出来(这就是帕累托前沿),再在论文讨论部分给出挑选建议。评审看重的不是"你算出了一个数",而是"你理解了问题的结构"。

三、三套主流解法:用中文讲清楚原理

3.1 线性加权法(最简单)

把每个目标乘以权重后相加,转成单目标问题。适用条件:目标量纲相近、决策者能给出明确权重、问题基本是凸的。优点是好实现、好解释;缺点是权重主观,且对非凸问题可能漏掉前沿中间段的解。使用时要交代权重的确定过程(专家打分、层次分析法都行),并做权重敏感性分析。

3.2 约束法(入门首选,国赛最讨巧)

每次只优化一个主目标,把其他目标转成约束。比如:给定"总成本不超过 X 元",求"最短总送达时间"。把 X 从紧到松逐档变化,反复求解,就能扫出一整组折中解。

这个方法在国赛里几乎是为论文量身定做的:每一个 X 对应一次普通单目标求解,用最基础的算法就能跑;扫完后自然画出"成本—时间权衡曲线",图一出来,多目标的味道就出来了。

3.3 进化多目标算法(进阶)

遗传算法家族中专门处理多目标的版本:非支配排序把解按"被谁压制"分层,拥挤度距离保证解集在前沿上均匀铺开,精英保留策略防止好解丢失。一次运行就能同时逼近整条帕累托前沿。适合变量多、约束复杂的调度问题。缺点是收敛慢、参数多,论文里必须交代种群规模、迭代次数、交叉变异概率,并给出收敛性验证。

方法原理一句话优点缺点适合场景
线性加权加权求和转单目标简单直观权重主观、可能漏解目标少、量纲一致
约束法只留一个主目标,其余转约束每步都是单目标,图好画需要反复求解多次两个目标、追求清晰呈现
进化多目标用进化机制逼近整个前沿一次得到整条前沿参数多、收敛慢大规模调度、排班问题

四、完整算例:5 个订单、2 架无人机

场景:一个社区同时来了 5 个外卖订单,配送站有 2 架无人机。已知每架无人机送不同订单组合所需的飞行时间与能耗。目标一:最后一个订单的送达时间最短(时效目标);目标二:总能耗最低(成本目标)。约束:每架无人机一次最多携带 2 单;每个订单只能由一架无人机配送;所有订单必须全部送达。

先列出所有可行的"分工方案",再逐一计算两个目标值:

方案A机配送B机配送总耗时总能耗是否可行
订单1、2订单3、4、5不可行(B超载)
订单1、2订单3、4不可行(5无人送)
订单1、2订单3、44026可行
订单1、3订单2、43630可行
订单1、4订单2、53335可行

(注:表中耗时、能耗为示意数据,重点看求解流程。)

用约束法求解:第一步,设"总能耗不超过 26",求最短耗时,得方案丙(40 分钟);第二步,把能耗上限放松到 30,得方案丁(36 分钟);第三步,再放松到 35,得方案戊(33 分钟)。

把三个点连起来就是权衡曲线:时间从 40 分钟降到 33 分钟,能耗从 26 涨到 35——没有任何一个方案在两个目标上同时优于另一个,这三个点共同构成帕累托前沿。最后给决策建议:如果平台规定"平均送达不超过 35 分钟",选方案戊;如果"能耗预算只有 28",只能选方案丙。

五、从小算例到国赛大题:规模化怎么做

上面的 5 单 2 机靠枚举就能算完,国赛题目往往有几十上百个订单,枚举不可能。规模化路径分三步。

第一步,把问题形式化:确定决策变量(哪个订单分配给哪架无人机、出发顺序)、目标函数(总时间、总能耗或总成本)、约束条件(载重、续航、时间窗、充电位)。第二步,选求解框架:中小规模用约束法加贪心构造初始解;大规模用进化多目标算法,把"非支配排序"作为适应度。第三步,验证与呈现:跑 10 次以上取统计结果,画权衡曲线与前沿分布图,说明参数对结果的影响。

六、国赛使用要点:四个加分与三个坑

加分点:第一,画出权衡曲线并标注可行域与帕累托前沿;第二,做权重或阈值敏感性分析,证明结论稳健;第三,给出业务建议("客户可接受 5 分钟延迟时,能耗降 20%");第四,与单目标基线对比,证明多目标框架确实带来了更优的折中。

三个坑:一是把多目标硬写成单目标却不说明理由;二是只给一个解,不给折中讨论;三是表格数据与曲线对不上,被评委当场抓包。

七、写在最后

DoorDash Air 上天的背后,是物流行业对"快和省"永无止境的追求。多目标优化正是回答这类问题的标准框架:识别冲突目标、定义约束、扫出折中解、交给决策者。这套思路不仅是比赛技巧,更是以后做方案、做产品、做运营的底层能力。下次遇到"既要又要"的题目,别慌——把两个目标摆到台面上,用约束法扫一条权衡曲线出来,评委自然眼前一亮。

← 返回列表