add last_step to config file

This commit is contained in:
Nikolai Rodionov 2022-11-26 16:01:37 +01:00
parent 685bdef816
commit 3db36407ea
2 changed files with 48 additions and 42 deletions

View File

@ -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

37
main.go
View File

@ -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, "-")
}
}