mirror of
https://github.com/L-yang-yang/cugenopt.git
synced 2026-04-25 12:16:21 +02:00
6.6 KiB
6.6 KiB
E13: 多目标优化验证实验
实验目标
验证 cuGenOpt 的两种多目标比较模式:
- Weighted(加权求和) - 目标可权衡
- Lexicographic(字典法) - 目标有严格优先级
实验设计
测试问题
问题 1: 双目标 VRP(距离 vs 车辆数)
目标:
- 目标1: 最小化总距离
- 目标2: 最小化使用的车辆数
配置:
- 基准实例: A-n32-k5, A-n48-k7(Augerat)
- 车辆容量: 标准配置
- 车辆上限: 充足(允许优化车辆数)
测试模式:
-
Weighted 模式:
- 配置 A:
weights = [0.9, 0.1]- 主要关注距离 - 配置 B:
weights = [0.7, 0.3]- 平衡距离和车辆数 - 配置 C:
weights = [0.5, 0.5]- 同等重要
- 配置 A:
-
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 小时)
-
创建 Problem 定义:
bi_objective_vrp.cuh- 双目标 VRPtri_objective_vrp.cuh- 三目标 VRPbi_objective_knapsack.cuh- 双目标 Knapsack
-
实现两种模式的配置:
- 每个问题提供 Weighted 和 Lexicographic 两个版本
阶段 2: 运行实验(2-3 小时)
主实验(单 GPU)
-
Weighted 模式实验:
- 不同权重配置(3-5 组)
- 记录每个目标的值
-
Lexicographic 模式实验:
- 不同容差配置(2-3 组)
- 不同优先级顺序(2 组)
-
对比基线:
- NSGA-II (DEAP) 运行相同问题
- 单目标版本作为参考
附加验证(多 GPU)
目的: 验证多 GPU 协同在多目标模式下是否正常工作(非性能对比)
配置:
- 双目标 VRP (A-n48-k7)
- Weighted 模式:
weights = [0.7, 0.3] - Lexicographic 模式: 优先级 [距离, 车辆数]
- 2×T4, 60 秒, 单次运行
验证点:
- ✅ 多 GPU 协调器能否正确比较不同 GPU 的解
- ✅ 最终结果是否合理(不劣于单 GPU)
- ✅ 无崩溃、无死锁
阶段 3: 数据分析(1 小时)
-
生成对比表:
- Weighted 不同权重下的解质量
- Lexicographic 不同容差下的解质量
- cuGenOpt vs NSGA-II 对比
- 多 GPU 验证结果(简单表格,确认功能正常)
-
可视化:
- Pareto front 散点图(双目标问题)
- 权重敏感性曲线
-
生成报告:
E13_REPORT.md
预期结果
假设 1: Weighted 模式有效性
- 不同权重配置应产生不同的 Pareto 解
- 权重越大的目标,优化效果越好
假设 2: Lexicographic 模式有效性
- 第一优先级目标应得到最优或接近最优
- 容差内才考虑次要目标
假设 3: 与 NSGA-II 的对比
- cuGenOpt(Weighted)可能在单个 Pareto 点上表现好
- NSGA-II 可能在 Pareto front 覆盖上更好(维护整个前沿)
假设 4: 多 GPU 兼容性
- 多 GPU 协调器能正确使用 Weighted/Lexicographic 模式比较解
- 多 GPU 结果不劣于单 GPU(功能正常性验证)
实验价值
学术价值
- 验证多目标能力: 证明框架不仅支持单目标
- 模式对比: 展示两种模式的适用场景
- GPU 加速多目标: 展示 GPU 在多目标优化上的潜力
工程价值
- 实际应用场景: VRP 中距离 vs 车辆数是常见需求
- 用户指导: 提供选择模式的实践建议
- 功能完整性: 补全框架验证的最后一块拼图
论文价值
- 增强完整性: 补充多目标实验
- 差异化优势: 大多数 GPU 优化框架只支持单目标
- 实用性: 展示框架在实际多目标场景的应用
时间估算
- 实现: 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
理由:
- 功能已实现,只差实验验证(4-6 小时可完成)
- 多目标是框架的重要特性,值得展示
- 实验设计清晰,工作量可控
- 可以作为论文的亮点之一
下一步:
- 创建 E13 实验目录和 Problem 定义
- 运行实验收集数据
- 生成 E13_REPORT.md
- 更新 paper_v3 添加 §6.6 节
要开始实现 E13 吗?