private void Awake() { instance = this; thisNet = new NeuralNetwork.NeuralNet(4, 3, 1); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 1.0, 1.0, 1.0, 0.5 }, new double[] { 0.5 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 1.0, 0.0, 1.0, 0.5 }, new double[] { 0.5 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 1.0, 1.0, 0.0, 0.5 }, new double[] { 0.5 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 1.0, 0.0, 0.0, 0.5 }, new double[] { 0.5 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 0.0, 1.0, 1.0, 0.5 }, new double[] { 0.5 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 0.0, 0.0, 1.0, 0.5 }, new double[] { 0.5 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 0.0, 1.0, 0.0, 0.5 }, new double[] { 0.5 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 0.0, 0.0, 0.0, 0.5 }, new double[] { 0.5 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 1.0, 1.0, 1.0, 0.1 }, new double[] { 0.1 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 1.0, 1.0, 0.0, 0.1 }, new double[] { 0.1 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 1.0, 0.5, 0.0, 0.1 }, new double[] { 0.5 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 1.0, 0.5, 1.0, 0.1 }, new double[] { 0.5 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 0.0, 1.0, 1.0, 0.1 }, new double[] { 0.1 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 0.0, 1.0, 0.0, 0.1 }, new double[] { 0.1 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 0.0, 0.5, 0.0, 0.1 }, new double[] { 0.5 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 0.0, 0.5, 1.0, 0.1 }, new double[] { 0.5 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 1.0, 1.0, 1.0, 0.9 }, new double[] { 0.9 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 1.0, 0.0, 1.0, 0.9 }, new double[] { 0.9 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 1.0, 1.0, 0.5, 0.9 }, new double[] { 0.5 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 1.0, 0.0, 0.5, 0.9 }, new double[] { 0.5 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 0.0, 1.0, 1.0, 0.9 }, new double[] { 0.9 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 0.0, 0.0, 1.0, 0.9 }, new double[] { 0.9 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 0.0, 1.0, 0.5, 0.9 }, new double[] { 0.5 })); DataSets.Add(new NeuralNetwork.DataSet(new double[] { 0.0, 0.0, 0.5, 0.9 }, new double[] { 0.5 })); thisNet.Train(DataSets, 10); }
private PlayerInput BotInputWithoutBall() { if (Args.GameMode != GameMode.Play && Args.Immobilize) { return(new PlayerInput()); } float[] neuralNetInput = ExtractorWithoutBall.Extract(this); float[] neuralNetOutput = MovingNeuralNet.Think(neuralNetInput); if (Team == Team.Away) { neuralNetOutput[0] *= -1; neuralNetOutput[1] *= -1; } PlayerInput input = new PlayerInput(); input.Up = neuralNetOutput[0] > 0.1f; input.Down = neuralNetOutput[0] < -0.1f; input.Left = neuralNetOutput[1] > 0.1f; input.Right = neuralNetOutput[1] < -0.1f; input.MouseLeftPressed = false; return(input); }
public void LoadFromDisc(string path) { MovingNeuralNet.Load(Path.Combine(path, MOVING_NEURAL_NET)); MovingWithBallNeuralNet.Load(Path.Combine(path, MOVING_WITH_BALL_NEURAL_NET)); KickingBallNeuralNet.Load(Path.Combine(path, KICKING_BALL_NEURAL_NET)); }
public void SaveTodisc(string path) { MovingNeuralNet.Save(Path.Combine(path, MOVING_NEURAL_NET)); MovingWithBallNeuralNet.Save(Path.Combine(path, MOVING_WITH_BALL_NEURAL_NET)); KickingBallNeuralNet.Save(Path.Combine(path, KICKING_BALL_NEURAL_NET)); }