(state Annealable, iterations int)
| 34 | } |
| 35 | |
| 36 | func PreAnneal(state Annealable, iterations int) float64 { |
| 37 | state = state.Copy() |
| 38 | previous := state.Energy() |
| 39 | var total float64 |
| 40 | for i := 0; i < iterations; i++ { |
| 41 | state.DoMove() |
| 42 | energy := state.Energy() |
| 43 | total += math.Abs(energy - previous) |
| 44 | previous = energy |
| 45 | } |
| 46 | return total / float64(iterations) |
| 47 | } |
| 48 | |
| 49 | func Anneal(state Annealable, maxTemp, minTemp float64, steps int) Annealable { |
| 50 | factor := -math.Log(maxTemp / minTemp) |