Пример #1
0
    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);
    }
Пример #2
0
    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);
    }
Пример #3
0
 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));
 }
Пример #4
0
 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));
 }