diff --git a/config.yaml b/config.yaml index fc5f419..58fe996 100644 --- a/config.yaml +++ b/config.yaml @@ -1,24 +1,29 @@ -- step: 10 - amount: 100 - neighbours: 1 -- step: 100 - amount: 100 - neighbours: 50 -- step: 200 - amount: 500 - neighbours: 20 -- step: 400 - amount: 10 - neighbours: 5 -- step: 500 - amount: 1 - neighbours: 1 -- step: 600 - amount: 500 - neighbours: 50 -- step: 1500 - amount: 10 - neighbours: 1 -- step: 2000 - amount: 1 - neighbours: 1 +last_step: 100 +steps: + - step: 10 + amount: 1 + neighbours: 1 + - step: 20 + amount: 100 + neighbours: 1 + - step: 30 + amount: 1 + neighbours: 1 + - step: 40 + amount: 10 + neighbours: 2 + - step: 50 + Amount: 2 + neighbours: 1 + - step: 60 + amount: 2 + neighbours: 1 + - step: 70 + amount: 3 + neighbours: 2 + - step: 80 + amount: 3 + neighbours: 1 + - step: 3000 + amount: 3 + neighbours: 1 diff --git a/main.go b/main.go index 7e481df..fafc40a 100644 --- a/main.go +++ b/main.go @@ -28,6 +28,10 @@ var numNeighbours = 5 var separationFactor = float64(goidSize * 5) var coherenceFactor = 8 +type configuration struct { + Steps []steps `yaml:"steps"` + LastStep int `yaml:"last_step"` +} type steps struct { Step int `yaml:"step"` Amount int `yaml:"amount"` @@ -65,8 +69,10 @@ func main() { if err != nil { panic(err) } - td := []steps{} - err = yaml.Unmarshal(conf, &td) + config := configuration{} + err = yaml.Unmarshal(conf, &config) + steps := config.Steps + loops = config.LastStep defer func() { if err := fo.Close(); err != nil { panic(err) @@ -76,20 +82,15 @@ func main() { hideCursor() var goids []*Goid -// for i := 0; i < populationSize; i++ { -// g := createRandomGoid() -// goids = append(goids, &g) -// } - current_stage := 0 for i := 0; i < loops; i++ { - goids, populationSize = fixGoids(goids, populationSize, td[current_stage].Amount) - if td[current_stage].NumNeighbours >= populationSize { + goids, populationSize = fixGoids(goids, populationSize, steps[current_stage].Amount) + if steps[current_stage].NumNeighbours >= populationSize { numNeighbours = populationSize } else { - numNeighbours = td[current_stage].NumNeighbours + numNeighbours = steps[current_stage].NumNeighbours } - if i == td[current_stage+1].Step { + if i == steps[current_stage+1].Step { current_stage += 1 } move(goids, fo, i) @@ -97,7 +98,7 @@ func main() { printImage(frame.SubImage(frame.Rect)) } showCursor() - + out, err := ioutil.ReadFile("/tmp/goids.yaml") if err != nil { panic(err) @@ -115,23 +116,23 @@ func main() { if err != nil { panic(err) } - for i := 0; i <= total; i++{ + for i := 0; i <= total; i++ { var x []string var y []string outfile.Write([]byte(fmt.Sprintf("GOID: %d\n", i))) for z := 0; z <= loops; z++ { check := false for _, g := range output { - if g.Goid == i && g.Loop == z{ + if g.Goid == i && g.Loop == z { check = true - x = append(x, strconv.Itoa(g.Data.X)) + x = append(x, strconv.Itoa(g.Data.X)) y = append(y, strconv.Itoa(g.Data.Y)) break } } - if !check { - x = append(x, "-") - y = append(y, "-") + if !check { + x = append(x, "-") + y = append(y, "-") } }