cuGenOpt/benchmark/experiments/e13_multiobjective/DESIGN.md
2026-03-20 00:33:45 +08:00

6.6 KiB
Raw Blame History

E13: 多目标优化验证实验

实验目标

验证 cuGenOpt 的两种多目标比较模式:

  1. Weighted加权求和 - 目标可权衡
  2. Lexicographic字典法 - 目标有严格优先级

实验设计

测试问题

问题 1: 双目标 VRP距离 vs 车辆数)

目标

  • 目标1: 最小化总距离
  • 目标2: 最小化使用的车辆数

配置

  • 基准实例: A-n32-k5, A-n48-k7Augerat
  • 车辆容量: 标准配置
  • 车辆上限: 充足(允许优化车辆数)

测试模式

  1. Weighted 模式:

    • 配置 A: weights = [0.9, 0.1] - 主要关注距离
    • 配置 B: weights = [0.7, 0.3] - 平衡距离和车辆数
    • 配置 C: weights = [0.5, 0.5] - 同等重要
  2. Lexicographic 模式:

    • 配置 D: 优先级 [距离, 车辆数], tolerance=[100.0, 0.0]
    • 配置 E: 优先级 [车辆数, 距离], tolerance=[0.0, 100.0]

问题 2: 三目标 VRP距离 vs 车辆数 vs 最大路径长度)

目标

  • 目标1: 最小化总距离
  • 目标2: 最小化使用的车辆数
  • 目标3: 最小化最大路径长度(负载均衡)

配置

  • 基准实例: A-n48-k7
  • 测试 Weighted 和 Lexicographic 两种模式

问题 3: 双目标 Knapsack价值 vs 重量)

目标

  • 目标1: 最大化总价值
  • 目标2: 最小化总重量(在满足容量约束下,尽量少用重量)

配置

  • 实例: knapPI_1_100
  • 容量: 标准配置

测试模式

  • Weighted: weights = [0.8, 0.2] (80% 关注价值)
  • Lexicographic: 优先级 [价值, 重量]

实验配置

硬件环境

  • 主实验: Tesla T4单GPU
  • 附加验证: 2×T4验证多 GPU 协同在多目标模式下是否正常工作)
  • 时间限制: 60 秒
  • 随机种子: 5 个种子42, 123, 456, 789, 2024

对比基线

  • NSGA-II (DEAP): Python 实现的标准多目标算法
  • 单目标版本: 只优化第一个目标(作为参考)

评价指标

1. 解质量指标

  • 主目标 gap%: 第一个目标相对最优值的差距
  • 次目标值: 其他目标的绝对值
  • Pareto 支配关系: 解之间的支配情况

2. 权重/容差敏感性

  • 不同权重配置下的解质量变化
  • 不同容差配置下的解质量变化

3. 模式对比

  • Weighted vs Lexicographic 在相同问题上的表现
  • 收敛速度、解多样性

实验步骤

阶段 1: 实现测试问题1-2 小时)

  1. 创建 Problem 定义:

    • bi_objective_vrp.cuh - 双目标 VRP
    • tri_objective_vrp.cuh - 三目标 VRP
    • bi_objective_knapsack.cuh - 双目标 Knapsack
  2. 实现两种模式的配置:

    • 每个问题提供 Weighted 和 Lexicographic 两个版本

阶段 2: 运行实验2-3 小时)

主实验(单 GPU

  1. Weighted 模式实验:

    • 不同权重配置3-5 组)
    • 记录每个目标的值
  2. Lexicographic 模式实验:

    • 不同容差配置2-3 组)
    • 不同优先级顺序2 组)
  3. 对比基线:

    • NSGA-II (DEAP) 运行相同问题
    • 单目标版本作为参考

附加验证(多 GPU

目的: 验证多 GPU 协同在多目标模式下是否正常工作(非性能对比)

配置:

  • 双目标 VRP (A-n48-k7)
  • Weighted 模式: weights = [0.7, 0.3]
  • Lexicographic 模式: 优先级 [距离, 车辆数]
  • 2×T4, 60 秒, 单次运行

验证点:

  • 多 GPU 协调器能否正确比较不同 GPU 的解
  • 最终结果是否合理(不劣于单 GPU
  • 无崩溃、无死锁

阶段 3: 数据分析1 小时)

  1. 生成对比表:

    • Weighted 不同权重下的解质量
    • Lexicographic 不同容差下的解质量
    • cuGenOpt vs NSGA-II 对比
    • 多 GPU 验证结果(简单表格,确认功能正常)
  2. 可视化:

    • Pareto front 散点图(双目标问题)
    • 权重敏感性曲线
  3. 生成报告: E13_REPORT.md


预期结果

假设 1: Weighted 模式有效性

  • 不同权重配置应产生不同的 Pareto 解
  • 权重越大的目标,优化效果越好

假设 2: Lexicographic 模式有效性

  • 第一优先级目标应得到最优或接近最优
  • 容差内才考虑次要目标

假设 3: 与 NSGA-II 的对比

  • cuGenOptWeighted可能在单个 Pareto 点上表现好
  • NSGA-II 可能在 Pareto front 覆盖上更好(维护整个前沿)

假设 4: 多 GPU 兼容性

  • 多 GPU 协调器能正确使用 Weighted/Lexicographic 模式比较解
  • 多 GPU 结果不劣于单 GPU功能正常性验证

实验价值

学术价值

  1. 验证多目标能力: 证明框架不仅支持单目标
  2. 模式对比: 展示两种模式的适用场景
  3. GPU 加速多目标: 展示 GPU 在多目标优化上的潜力

工程价值

  1. 实际应用场景: VRP 中距离 vs 车辆数是常见需求
  2. 用户指导: 提供选择模式的实践建议
  3. 功能完整性: 补全框架验证的最后一块拼图

论文价值

  1. 增强完整性: 补充多目标实验
  2. 差异化优势: 大多数 GPU 优化框架只支持单目标
  3. 实用性: 展示框架在实际多目标场景的应用

时间估算

  • 实现: 1-2 小时3 个 Problem 定义)
  • 主实验: 2-3 小时(多组配置,对比基线)
  • 多 GPU 验证: 0.5 小时2 个快速测试)
  • 分析: 1 小时(表格、图表、报告)
  • 总计: 4.5-6.5 小时

是否纳入当前论文?

选项 A: 纳入 paper_v3推荐

优点

  • 功能完整性
  • 差异化优势
  • 实验工作量可控4-6 小时)

缺点

  • ⚠️ 论文已经 27 页,再加可能超 30 页
  • ⚠️ 需要新增 1-2 张图Pareto front

建议

  • 新增 §6.6 "Multi-Objective Optimization Modes"
  • 1 个表格Weighted 不同权重配置)
  • 1 个表格Lexicographic 不同优先级配置)
  • 1 张图Pareto front 散点图)
  • 1 个小表格(多 GPU 验证,放在脚注或附录)
  • 约 1.5-2 页内容

选项 B: 作为独立补充实验

优点

  • 不影响当前论文进度
  • 可以更深入探索

缺点

  • ⚠️ 论文缺少多目标验证

建议

我的建议: 执行 E13 实验并纳入 paper_v3

理由

  1. 功能已实现只差实验验证4-6 小时可完成)
  2. 多目标是框架的重要特性,值得展示
  3. 实验设计清晰,工作量可控
  4. 可以作为论文的亮点之一

下一步

  1. 创建 E13 实验目录和 Problem 定义
  2. 运行实验收集数据
  3. 生成 E13_REPORT.md
  4. 更新 paper_v3 添加 §6.6 节

要开始实现 E13 吗?