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

244 lines
No EOL
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 吗?