-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy paththesis_experiment_design.py
More file actions
208 lines (158 loc) · 10.1 KB
/
thesis_experiment_design.py
File metadata and controls
208 lines (158 loc) · 10.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
#!/usr/bin/env python3
"""
FE-IDDQN vs HEFT 对比实验设计
用于毕业论文中展示 FE-IDDQN 的优势
"""
print("""
═══════════════════════════════════════════════════════════════════════════════
FE-IDDQN 优势场景 - 毕业论文实验设计
═══════════════════════════════════════════════════════════════════════════════
【核心洞察】
HEFT 是一个非常强的基线算法,在静态场景下接近最优。
要体现 FE-IDDQN 的优势,需要设计能发挥 DRL 特点的实验场景。
═══════════════════════════════════════════════════════════════════════════════
实验1:任务执行时间不确定性 (Task Duration Uncertainty)
═══════════════════════════════════════════════════════════════════════════════
【设计思路】
真实环境中,任务执行时间有波动(网络延迟、IO等待、资源竞争)
HEFT 基于期望执行时间做一次性决策,无法适应实际波动
FE-IDDQN 可以学习到考虑不确定性的鲁棒策略
【实验方法】
1. 给任务执行时间加入噪声: T_actual = T_expected × (1 + ε), ε ~ N(0, σ²)
2. 设置不同的噪声水平: σ = 0%, 10%, 20%, 30%, 50%
3. 每个噪声水平运行 100 次,统计平均 makespan 和标准差
【预期结果】
σ = 0%: HEFT ≈ FE-IDDQN (静态场景无差异)
σ = 10%: FE-IDDQN 略优
σ = 30%: FE-IDDQN 明显优于 HEFT
σ = 50%: FE-IDDQN 显著优于 HEFT
【论文亮点】
"在任务执行时间存在 30% 波动的真实场景下,
FE-IDDQN 的平均 makespan 比 HEFT 降低 X%"
═══════════════════════════════════════════════════════════════════════════════
实验2:在线调度 vs 离线调度 (Online vs Offline Scheduling)
═══════════════════════════════════════════════════════════════════════════════
【设计思路】
HEFT 是离线算法:需要预知所有任务信息才能开始调度
FE-IDDQN 可以在线决策:任务到达时立即做决策
【实验方法】
1. 模拟任务动态到达场景
2. HEFT 需要等待所有任务信息(或使用局部信息)
3. FE-IDDQN 实时决策
4. 比较响应时间和整体 makespan
【预期结果】
- FE-IDDQN 响应更快(毫秒级 vs HEFT 的 O(n²) 计算)
- 动态场景下 FE-IDDQN 整体 makespan 更优
【论文亮点】
"在动态工作流场景下,FE-IDDQN 的决策延迟仅为 X ms,
而 HEFT 需要 Y ms 重新计算,响应速度提升 Z 倍"
═══════════════════════════════════════════════════════════════════════════════
实验3:资源状态感知 (Resource State Awareness)
═══════════════════════════════════════════════════════════════════════════════
【设计思路】
HEFT 假设资源状态已知且固定
真实环境中,资源可能:
- 被其他工作流占用
- 性能波动(CPU 节流、内存压力)
- 临时不可用
【实验方法】
1. 模拟资源负载变化(突发其他任务占用 CPU)
2. 模拟资源性能波动(执行速度变化)
3. 模拟资源故障恢复场景
4. 比较两种算法的适应能力
【预期结果】
FE-IDDQN 通过状态编码感知资源状态,可以避开高负载资源
HEFT 继续使用预设调度,导致任务排队等待
【论文亮点】
"当资源负载波动时,FE-IDDQN 能够动态调整调度策略,
相比 HEFT 减少了 X% 的任务等待时间"
═══════════════════════════════════════════════════════════════════════════════
实验4:历史执行数据利用 (Historical Data Utilization)
═══════════════════════════════════════════════════════════════════════════════
【设计思路】⭐ FE-IDDQN 的核心优势
您的系统使用 DolphinScheduler 的历史执行数据进行训练
这意味着 FE-IDDQN 可以学习到:
- 特定任务类型的执行时间分布
- 任务间的隐含关系(如某些任务经常一起变慢)
- 资源使用模式(如某时段资源繁忙)
【实验方法】
1. 使用历史数据训练 FE-IDDQN
2. HEFT 只使用任务的平均执行时间
3. 在相似的新工作流上测试
【预期结果】
FE-IDDQN 利用历史模式,做出更准确的预测
例如:知道某些 SQL 任务在特定时段执行更慢
【论文亮点】
"通过学习 X 个历史工作流的执行数据,
FE-IDDQN 在新工作流上的调度效率提升了 Y%"
═══════════════════════════════════════════════════════════════════════════════
实验5:可扩展性 (Scalability)
═══════════════════════════════════════════════════════════════════════════════
【设计思路】
HEFT 时间复杂度: O(n²p) n=任务数, p=处理器数
FE-IDDQN 推理复杂度: O(n) 神经网络前向传播
【实验方法】
1. 生成不同规模的 DAG: 50, 100, 200, 500, 1000 任务
2. 测量调度决策时间
3. 比较 makespan
【预期结果】
n = 100: HEFT 略快
n = 500: FE-IDDQN 更快
n = 1000: FE-IDDQN 显著更快
【论文亮点】
"在 1000 任务规模的工作流上,FE-IDDQN 的调度决策时间
仅为 HEFT 的 1/X,同时 makespan 相当或更优"
═══════════════════════════════════════════════════════════════════════════════
实验6:特征工程的价值 (Feature Engineering Value)
═══════════════════════════════════════════════════════════════════════════════
【设计思路】⭐ 这是 "FE-IDDQN" 中 "FE" 的核心价值
通过消融实验证明特征工程的重要性
【实验方法】
1. FE-IDDQN (完整特征)
2. IDDQN (无特征工程)
3. DQN (基础版本)
4. HEFT (基线)
【特征设计】
- 任务特征: 类型、历史执行时间、依赖深度
- DAG 特征: 关键路径长度、并行度、宽度
- 资源特征: 当前负载、队列长度
- 时间特征: 一天中的时段、是否工作日
【预期结果】
FE-IDDQN > IDDQN > DQN ≈ HEFT
【论文亮点】
"特征工程使 FE-IDDQN 的性能比基础 DQN 提升了 X%,
证明了领域知识与深度学习结合的有效性"
═══════════════════════════════════════════════════════════════════════════════
推荐的论文实验组合
═══════════════════════════════════════════════════════════════════════════════
【最小实验集(必做)】
✓ 实验1: 任务执行时间不确定性 - 证明鲁棒性
✓ 实验4: 历史数据利用 - 证明学习能力
✓ 实验6: 特征工程消融 - 证明方法有效性
【扩展实验集(推荐)】
○ 实验2: 在线调度 - 证明实用性
○ 实验5: 可扩展性 - 证明效率
【完整实验集(最佳)】
● 所有 6 个实验 + 真实 DolphinScheduler 数据验证
═══════════════════════════════════════════════════════════════════════════════
具体数据来源建议
═══════════════════════════════════════════════════════════════════════════════
使用您的 DolphinScheduler 数据库,可以:
1. 提取工作流 294537 这样的案例
- 有优化空间(调度效率 57.8%)
- 有足够复杂度(24 任务,22 边)
2. 从历史数据中计算任务执行时间的波动
- σ = std(执行时间) / mean(执行时间)
- 这是真实的不确定性水平
3. 统计资源使用模式
- 不同时段的任务执行效率
- 资源竞争情况
4. 训练/测试集划分
- 80% 历史工作流用于训练
- 20% 用于测试
这样您的论文就有了:
✓ 真实数据支撑
✓ 明确的优势场景
✓ 与 HEFT 的公平对比
✓ 消融实验证明方法有效性
""")