@@ -10,16 +10,21 @@ mkdir -p $RPC_PATH
rm -f $RPC_PATH/*.pb.go
protoc -I$RPC_PATH --go_out=plugins=grpc:$RPC_PATH $RPC_PATH/remotecontrol.proto
-export SNAKE_RPC_PATH=$PWD/neuralnetwork/snakesimulator
-mkdir -p $SNAKE_RPC_PATH
-rm -f $SNAKE_RPC_PATH/*.pb.go
-protoc -I$SNAKE_RPC_PATH --go_out=plugins=grpc:$SNAKE_RPC_PATH $SNAKE_RPC_PATH/snakesimulator.proto
-cd neuralnetwork
+pushd neuralnetwork
go get -v
go build -o $GOBIN/neuralnetwork
pushd $GOPATH/neuralnetwork/neuralnetwork/
go test -v -cover
popd
+popd
# go test -cover
+
+export SNAKE_RPC_PATH=$PWD/snakesimulator/snakesimulator
+mkdir -p $SNAKE_RPC_PATH
+rm -f $SNAKE_RPC_PATH/*.pb.go
+protoc -I$SNAKE_RPC_PATH --go_out=plugins=grpc:$SNAKE_RPC_PATH $SNAKE_RPC_PATH/snakesimulator.proto
+pushd snakesimulator
+go build -o $GOBIN/snakesimulator
@@ -60,14 +60,14 @@ ApplicationWindow {
Column {
id: activationsColumn
width: 50
- spacing: 20
+ spacing: 10
Repeater {
id: neuronRepeater
model: layerSize
delegate:Rectangle {
- width: 30
- height: 30
- radius: 15
+ width: 20
+ height: 20
+ radius: 10
color: "#00ffffff"
Rectangle {
id: neuron
@@ -81,7 +81,7 @@ ApplicationWindow {
target: neuron
property: "color"
to: "#000000"
- duration: 150
+ duration: 100
}
function updateColor() {
@@ -1,28 +1,22 @@
package main
import (
- genetic "./genetic"
- mutagen "./genetic/mutagen"
- snakesimulator "./snakesimulator"
+ "./neuralnetwork"
+ "./remotecontrol"
)
func main() {
- s := snakesimulator.NewSnakeSimulator(400)
- s.StartServer()
- p := genetic.NewPopulation(s, mutagen.NewDummyMutagen(1.0, 1), genetic.PopulationConfig{PopulationSize: 2000, SelectionSize: 0.01, CrossbreedPart: 0.5}, []int{24, 18, 18, 4})
- p.NaturalSelection(5000)
- // s.Run()
-
- // sizes := []int{13, 8, 12, 3}
- // nn, _ := neuralnetwork.NewNeuralNetwork(sizes, neuralnetwork.NewRPropInitializer(neuralnetwork.RPropConfig{
- // NuPlus: 1.2,
- // NuMinus: 0.5,
- // DeltaMax: 50.0,
- // DeltaMin: 0.000001,
- // }))
- // nn.SetStateWatcher(rc)
- // rc.Run()
+ rc := remotecontrol.NewRemoteControl()
+ sizes := []int{13, 8, 12, 3}
+ nn, _ := neuralnetwork.NewNeuralNetwork(sizes, neuralnetwork.NewRPropInitializer(neuralnetwork.RPropConfig{
+ NuPlus: 1.2,
+ NuMinus: 0.5,
+ DeltaMax: 50.0,
+ DeltaMin: 0.000001,
+ }))
+ nn.SetStateWatcher(rc)
+ rc.Run()
// inFile, err := os.Open("./networkstate")
// if err != nil {
@@ -1 +0,0 @@
-../../../gui/qtprotobuf
@@ -0,0 +1,67 @@
+package main
+import (
+ genetic "../neuralnetwork/genetic"
+ mutagen "../neuralnetwork/genetic/mutagen"
+ snakesimulator "./snakesimulator"
+)
+func main() {
+ s := snakesimulator.NewSnakeSimulator(400)
+ s.StartServer()
+ p := genetic.NewPopulation(s, mutagen.NewDummyMutagen(1.0, 1), genetic.PopulationConfig{PopulationSize: 2000, SelectionSize: 0.01, CrossbreedPart: 0.5}, []int{24, 18, 18, 4})
+ p.NaturalSelection(5000)
+ // s.Run()
+ // sizes := []int{13, 8, 12, 3}
+ // nn, _ := neuralnetwork.NewNeuralNetwork(sizes, neuralnetwork.NewRPropInitializer(neuralnetwork.RPropConfig{
+ // NuPlus: 1.2,
+ // NuMinus: 0.5,
+ // DeltaMax: 50.0,
+ // DeltaMin: 0.000001,
+ // }))
+ // nn.SetStateWatcher(rc)
+ // rc.Run()
+ // inFile, err := os.Open("./networkstate")
+ // if err != nil {
+ // log.Fatal(err)
+ // }
+ // defer inFile.Close()
+ // nn.LoadState(inFile)
+ // nn, _ := neuralnetwork.NewNeuralNetwork(sizes, neuralnetwork.NewBackPropInitializer(0.1))
+ // for i := 0; i < nn.Count; i++ {
+ // if i > 0 {
+ // fmt.Printf("Weights before:\n%v\n\n", mat.Formatted(nn.Weights[i], mat.Prefix(""), mat.Excerpt(0)))
+ // fmt.Printf("Biases before:\n%v\n\n", mat.Formatted(nn.Biases[i], mat.Prefix(""), mat.Excerpt(0)))
+ // fmt.Printf("Z before:\n%v\n\n", mat.Formatted(nn.Z[i], mat.Prefix(""), mat.Excerpt(0)))
+ // fmt.Printf("A before:\n%v\n\n", mat.Formatted(nn.A[i], mat.Prefix(""), mat.Excerpt(0)))
+ // nn = &neuralnetwork.NeuralNetwork{}
+ // inFile, err := os.Open("./data")
+ // inFile.Close()
+ // failCount = 0
+ // training.Reset()
+ // for training.NextValidator() {
+ // dataSet, expect := training.GetValidator()
+ // index, _ := nn.Predict(dataSet)
+ // if expect.At(index, 0) != 1.0 {
+ // failCount++
+ // // fmt.Printf("Fail: %v, %v\n\n", training.ValidationIndex(), expect.At(index, 0))
+ // fmt.Printf("Fail count: %v\n\n", failCount)
+}
@@ -12,9 +12,9 @@ import (
"gonum.org/v1/gonum/mat"
- genetic "../genetic"
- neuralnetwork "../neuralnetwork"
- remotecontrol "../remotecontrol"
+ genetic "../../neuralnetwork/genetic"
+ neuralnetwork "../../neuralnetwork/neuralnetwork"
+ remotecontrol "../../neuralnetwork/remotecontrol"
grpc "google.golang.org/grpc"
@@ -12,7 +12,7 @@ if(Qt5_POSITION_INDEPENDENT_CODE)
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
endif()
-file(GLOB PROTO_FILES ABSOLUTE "${CMAKE_CURRENT_SOURCE_DIR}/../snakesimulator.proto")
+file(GLOB PROTO_FILES ABSOLUTE "${CMAKE_CURRENT_SOURCE_DIR}/../snakesimulator/snakesimulator.proto")
generate_qtprotobuf(TARGET SnakeSimulatorkUi PROTO_FILES ${PROTO_FILES})
@@ -0,0 +1 @@
+../../gui/qtprotobuf