SuperAPI AI 工具集

cuopt-multi-objective-exploration

数据与分析

查看项目

更新于 10-16 02:34

技能介绍

用途:cuOpt 每次求解只优化一个目标,而许多实际问题存在多个相互冲突的目标(如成本与服务、收益与风险、完工时间与加班、距离与车辆数)。本技能把一系列单目标 cuOpt 求解组织成帕累托前沿——即无法在不牺牲一个目标的前提下改进另一个目标的解集,并指导如何解读它。它不新增求解器功能,只编排已有 LP/MILP/QP 求解流程。

适用判断:当问题有两个及以上目标且没有公认权重时适用,例如“平衡 X 与 Y”“权衡”“尽可能便宜又不损害服务”“要选项而非单一答案”。若只有一个明确目标、其余均为硬约束,则不适用,直接建模求解一次即可。

主要能力与步骤:

  1. 定义目标:目标须真正冲突,且形式、方向、量纲正确。
  2. 构建收益表:对 k 个目标各单独求解一次,记录每个最优解下所有目标值,用于确定扫描边界与归一化尺度。
  3. 选择标量化方法:加权和(简单,但只能找到凸包上的点,且需先归一化);ε-约束(保留一个目标,其余转为约束并扫描右端项,可覆盖凹区域,是追求完整前沿时的默认选择)。
  4. 扫描、收集、过滤:对权重或 ε 网格逐个求解,丢弃被支配与重复点,排序形成前沿。LP 扫描可用 PDLP 热启动;MILP 每次求解应设时间上限;按曲线弯曲处细化网格。
  5. 补全前沿:度量并填补扫描遗漏的间隙,优先填补最大间隙,对每个子问题热启动,结果标注 exact 或 approximate。
  6. 解读前沿:报告权衡交换率而非单一数字,标出拐点但不自动替用户选择,说明所用权重或 ε。

限制:加权和无法到达非凸区域;MILP 最优解与含二次约束的问题不返回对偶值;非凸或等式二次约束不受支持,MILP 路径仅支持线性约束;cuOpt 默认不设时间限制且不会警告。接口细节见 cuopt-numerical-optimization-api 与 cuopt-routing-api-python。