Skip to content

Commit 6b9676c

Browse files
Metrics: use BranchFrequency in IlpOffloadingPolicy
1 parent ca7feb3 commit 6b9676c

1 file changed

Lines changed: 13 additions & 3 deletions

File tree

internal/workflow/ilp_offloading_policy.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,10 +244,20 @@ func (policy *IlpOffloadingPolicy) Evaluate(r *Request, p *Progress) (Offloading
244244
switch typedTask := task.(type) {
245245
case ConditionalTask:
246246
nextTasks := typedTask.GetAlternatives()
247+
branchFrequency := metrics.GetMetrics().BranchFrequency
248+
// check if metrics have value
249+
sum := 0.0
247250
for _, nextTask := range nextTasks {
248-
// TODO: estimate branch probability:
249-
// TODO: either directly for every choice task
250-
probability := 1.0 / float64(len(nextTasks))
251+
sum += branchFrequency[string(tid)][string(nextTask)]
252+
}
253+
for _, nextTask := range nextTasks {
254+
var probability float64
255+
if sum == 0.0 {
256+
probability = branchFrequency[string(tid)][string(nextTask)]
257+
} else {
258+
// fallback if no metrics
259+
probability = 1.0 / float64(len(nextTasks))
260+
}
251261
entry := tupleKey(string(nextTask), strconv.FormatFloat(probability, 'f', 2, 32))
252262
params.Adj[string(tid)] = append(params.Adj[string(tid)], entry)
253263
}

0 commit comments

Comments
 (0)