From ab0c1882cca75f4b8ce21606d68b26649ed0d13b Mon Sep 17 00:00:00 2001 From: Newnius Date: Wed, 27 May 2020 13:43:27 +0800 Subject: [PATCH] update --- src/evaluator.go | 8 ++++---- src/ga.go | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/evaluator.go b/src/evaluator.go index 4996188..1381603 100644 --- a/src/evaluator.go +++ b/src/evaluator.go @@ -14,6 +14,8 @@ type Evaluator struct { factorNode float64 factorRack float64 factorDomain float64 + + factorPack float64 } func (eva *Evaluator) init(nodes []NodeStatus, tasks []Task) { @@ -28,6 +30,7 @@ func (eva *Evaluator) init(nodes []NodeStatus, tasks []Task) { eva.factorDomain = 40.0 eva.costNetwork = 0.0 eva.costLoad = 0.0 + eva.factorPack = -1.0 } func (eva *Evaluator) add(node NodeStatus, task Task) { @@ -116,10 +119,7 @@ func (eva *Evaluator) remove(node NodeStatus, task Task) { } func (eva *Evaluator) calculate() float64 { - /* factor to determine spread or pack */ - /* 1.0 spread, -1.0 pack */ - factor := -1.0 - return eva.costNetwork + factor*eva.costLoad/float64(eva.totalPS+eva.totalWorker) + return eva.costNetwork + eva.factorPack*eva.costLoad/float64(eva.totalPS+eva.totalWorker) } func evaluate(allocation Allocation) float64 { diff --git a/src/ga.go b/src/ga.go index d6e68e4..f1c0e60 100644 --- a/src/ga.go +++ b/src/ga.go @@ -67,6 +67,11 @@ func fastBestFit(nodes []NodeStatus, tasks []Task) Allocation { for _, task := range tasks { minCost := math.MaxFloat64 var best *NodeStatus + if task.IsPS { + eva.factorPack = -1.0 + } else { + eva.factorPack = 1.0 + } for i, node := range nodes { if _, ok := allocation.TasksOnNode[node.ClientID]; !ok { allocation.TasksOnNode[node.ClientID] = []Task{}