# E13: 多目标优化验证实验 ## 实验目标 验证 cuGenOpt 的两种多目标比较模式: 1. **Weighted(加权求和)** - 目标可权衡 2. **Lexicographic(字典法)** - 目标有严格优先级 ## 实验设计 ### 测试问题 #### 问题 1: 双目标 VRP(距离 vs 车辆数) **目标**: - 目标1: 最小化总距离 - 目标2: 最小化使用的车辆数 **配置**: - 基准实例: A-n32-k5, A-n48-k7(Augerat) - 车辆容量: 标准配置 - 车辆上限: 充足(允许优化车辆数) **测试模式**: 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 的对比 - cuGenOpt(Weighted)可能在单个 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 吗?