3、权重求和法:线性加权、权重敏感性分析、在ADAS路径规划中的应用
好,咱们今天聊聊权重求和法。说实话,这是多目标优化里最直观、最容易上手的方法了。我刚入行那会儿,第一次做路径规划,领导丢给我一堆指标——安全性、舒适性、效率,我当时就懵了。后来师傅跟我说:「你把它们加起来不就行了?」嗯,就是这么简单粗暴。
3.1 线性加权的基本原理
权重求和法的核心思想,说白了就是把多个目标函数乘以各自的权重,然后求和成一个单目标函数。你想想看,我们做ADAS决策时,既要避开障碍物,又要保持车速,还得让乘客不晕车。这几个目标往往是冲突的。
数学上长这样:
J = w₁ * f₁(x) + w₂ * f₂(x) + ... + wₙ * fₙ(x)
其中 fᵢ 是第 i 个目标函数,wᵢ 是对应的权重。权重越大,说明这个目标越重要。
我个人习惯把权重归一化,让所有权重加起来等于1。这样有个好处——你一眼就能看出哪个目标占主导。比如 w₁=0.6,w₂=0.3,w₃=0.1,那很明显,第一个目标最重要。
关键点:权重求和法只能处理凸的帕累托前沿。如果问题是非凸的,你可能会漏掉一些最优解。我在项目中遇到过这种情况,当时调了半天参数,结果发现是问题本身就不适合用线性加权。
3.2 权重敏感性分析
权重怎么定?这是个好问题。说实话,没有标准答案。但我们可以做一件事——敏感性分析。
什么叫敏感性分析?就是看看权重变化一点点,结果会变多少。如果权重从0.5变成0.51,路径就完全不一样了,那说明这个权重很敏感,你得小心。
我曾经在一个项目中,把舒适性的权重从0.3调到0.35,结果路径规划出来的轨迹让乘客感觉像在坐过山车。嗯,这就是权重敏感性的典型表现。
做敏感性分析,我一般分三步:
- 基准测试:先选一组基准权重,跑出基准结果
- 扰动测试:每次只变一个权重,比如±5%、±10%、±20%
- 结果对比:看路径变化、目标函数值变化、约束满足情况
我的小技巧:可以用热力图来展示敏感性。横轴是权重变化,纵轴是性能指标,颜色深浅表示变化幅度。这样一眼就能看出哪些权重是「雷区」。
3.3 在ADAS路径规划中的应用
好了,理论说完了,咱们看看实际怎么用。在ADAS路径规划中,我通常把目标函数分成三类:
| 目标类别 | 具体指标 | 典型权重 |
|---|---|---|
| 安全性 | 与障碍物的最小距离、碰撞风险 | 0.5 - 0.7 |
| 舒适性 | 加速度变化率、横向加速度 | 0.2 - 0.3 |
| 效率 | 路径长度、行驶时间 | 0.1 - 0.2 |
你可能会问:「为什么安全性权重这么高?」这还用说吗?ADAS的第一要务就是安全。舒适性和效率都是锦上添花,安全是底线。
下面是一个简化的代码示例,展示如何在路径规划中用权重求和法:
def weighted_path_cost(path, weights):
# 计算三个目标函数
safety_cost = compute_safety_cost(path) # 安全性代价
comfort_cost = compute_comfort_cost(path) # 舒适性代价
efficiency_cost = compute_efficiency_cost(path) # 效率代价
# 权重求和
total_cost = (weights['safety'] * safety_cost +
weights['comfort'] * comfort_cost +
weights['efficiency'] * efficiency_cost)
return total_cost
# 使用示例
weights = {'safety': 0.6, 'comfort': 0.3, 'efficiency': 0.1}
best_path = min(all_paths, key=lambda p: weighted_path_cost(p, weights))
避坑指南:我曾经犯过一个错误——没有对目标函数做归一化。安全性的数值范围是0-100,舒适性是0-10,效率是0-1000。直接加权求和,效率完全主导了结果。所以记得先归一化,让每个目标都在同一量级上。
实际项目中,我还会做一件事——动态调整权重。比如在高速公路上,效率权重可以高一点;在市区拥堵路段,舒适性权重应该更高。说白了,权重不是一成不变的,要根据场景自适应。
嗯,这里要注意一点:权重求和法虽然简单,但它有个隐含假设——各个目标之间是相互独立的。但现实中,安全性和舒适性往往是相关的。比如你为了安全离障碍物远一点,可能就得急转弯,舒适性就下降了。这种时候,单纯调权重可能不够,得考虑更高级的方法。
最后总结一下我的经验:权重求和法适合快速原型验证,也适合对实时性要求高的场景。但如果你的问题很复杂,或者帕累托前沿是非凸的,那就得考虑其他方法了。咱们后面几章会讲到。