From e89f7ca164c239b83c0dd78fcf13f531285d550c Mon Sep 17 00:00:00 2001 From: Newnius Date: Mon, 15 Jun 2020 15:04:08 +0800 Subject: [PATCH] update --- src/ga.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/ga.go b/src/ga.go index 41bfbf5..2112821 100644 --- a/src/ga.go +++ b/src/ga.go @@ -136,6 +136,15 @@ func (X Allocation) Mutate(rng *rand.Rand) { // Crossover a Vector with another Vector by applying uniform crossover. func (X Allocation) Crossover(Y eaopt.Genome, rng *rand.Rand) { // make sure n > 0 && round > 0 + cnt := 0 + for _, tasks := range X.TasksOnNode { + for _ := range tasks { + cnt++ + } + } + if cnt != len(X.Tasks) && X.Flags["valid"] { + log.Warn("1:", cnt, len(X.Tasks)) + } round := rng.Intn(1+len(X.Nodes)/100)%10 + 1 for i := 0; i < round; i++ { if !Y.(Allocation).Flags["valid"] || !X.Flags["valid"] { @@ -245,6 +254,15 @@ func (X Allocation) Crossover(Y eaopt.Genome, rng *rand.Rand) { } } } + cnt = 0 + for _, tasks := range X.TasksOnNode { + for _ := range tasks { + cnt++ + } + } + if cnt != len(X.Tasks) && X.Flags["valid"] { + log.Warn("1:", cnt, len(X.Tasks)) + } //fmt.Println() //fmt.Println("crossover", X.TasksOnNode) }