main.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package main
  2. import (
  3. genetic "./genetic"
  4. mutagen "./genetic/mutagen"
  5. snakesimulator "./snakesimulator"
  6. )
  7. func main() {
  8. s := snakesimulator.NewSnakeSimulator(400)
  9. s.StartServer()
  10. p := genetic.NewPopulation(s, mutagen.NewDummyMutagen(1.0, 1), genetic.PopulationConfig{PopulationSize: 2000, SelectionSize: 0.01, CrossbreedPart: 0.5}, []int{24, 18, 18, 4})
  11. p.NaturalSelection(5000)
  12. // s.Run()
  13. // sizes := []int{13, 8, 12, 3}
  14. // nn, _ := neuralnetwork.NewNeuralNetwork(sizes, neuralnetwork.NewRPropInitializer(neuralnetwork.RPropConfig{
  15. // NuPlus: 1.2,
  16. // NuMinus: 0.5,
  17. // DeltaMax: 50.0,
  18. // DeltaMin: 0.000001,
  19. // }))
  20. // nn.SetStateWatcher(rc)
  21. // rc.Run()
  22. // inFile, err := os.Open("./networkstate")
  23. // if err != nil {
  24. // log.Fatal(err)
  25. // }
  26. // defer inFile.Close()
  27. // nn.LoadState(inFile)
  28. // nn, _ := neuralnetwork.NewNeuralNetwork(sizes, neuralnetwork.NewBackPropInitializer(0.1))
  29. // for i := 0; i < nn.Count; i++ {
  30. // if i > 0 {
  31. // fmt.Printf("Weights before:\n%v\n\n", mat.Formatted(nn.Weights[i], mat.Prefix(""), mat.Excerpt(0)))
  32. // fmt.Printf("Biases before:\n%v\n\n", mat.Formatted(nn.Biases[i], mat.Prefix(""), mat.Excerpt(0)))
  33. // fmt.Printf("Z before:\n%v\n\n", mat.Formatted(nn.Z[i], mat.Prefix(""), mat.Excerpt(0)))
  34. // }
  35. // fmt.Printf("A before:\n%v\n\n", mat.Formatted(nn.A[i], mat.Prefix(""), mat.Excerpt(0)))
  36. // }
  37. // nn = &neuralnetwork.NeuralNetwork{}
  38. // inFile, err := os.Open("./data")
  39. // if err != nil {
  40. // log.Fatal(err)
  41. // }
  42. // defer inFile.Close()
  43. // nn.LoadState(inFile)
  44. // inFile.Close()
  45. // failCount = 0
  46. // training.Reset()
  47. // for training.NextValidator() {
  48. // dataSet, expect := training.GetValidator()
  49. // index, _ := nn.Predict(dataSet)
  50. // if expect.At(index, 0) != 1.0 {
  51. // failCount++
  52. // // fmt.Printf("Fail: %v, %v\n\n", training.ValidationIndex(), expect.At(index, 0))
  53. // }
  54. // }
  55. // fmt.Printf("Fail count: %v\n\n", failCount)
  56. }