コード例 #1
0
    private float GetEyeValue(RaycastHit2D[] hits)
    {
        float distance = 0;

        foreach (RaycastHit2D hit in hits)
        {
            if (hit.collider != null)
            {
                if (hit.collider.gameObject.tag == "OffTrackCollider")
                {
                    distance = StaticMath.GetDistBetweenPoints(hit.point.x, hit.point.y, transform.position.x, transform.position.y);
                    return(distance);
                }
            }
        }
        return(distance);
    }
コード例 #2
0
    public static Matrix Crossover(Matrix m1, Matrix m2)
    {
        Matrix result = new Matrix(m1.rows, m1.columns);

        for (int i = 0; i < m1.rows; i++)
        {
            for (int j = 0; j < m1.columns; j++)
            {
                if (StaticMath.GetRandomInteger(0, 2) == 1)
                {
                    result.data[i, j] = m1.data[i, j];
                }
                else
                {
                    result.data[i, j] = m2.data[i, j];
                }
            }
        }
        return(result);
    }
コード例 #3
0
    public static Matrix Mutate(Matrix m, float percent)
    {
        Matrix result = new Matrix(m.rows, m.columns);

        for (int i = 0; i < m.rows; i++)
        {
            for (int j = 0; j < m.columns; j++)
            {
                if (StaticMath.GetRandomFloat(0, 100) < percent)
                {
                    result.data[i, j] = StaticMath.GetRandomFloat(-1.0f, 1.0f);
                }
                else
                {
                    result.data[i, j] = m.data[i, j];
                }
            }
        }
        return(result);
    }
コード例 #4
0
    public NeuralNetwork(int inputs, int hiddenLayers, int hiddenNodesPerLayer, int outputs)
    {
        if (inputs == 0 || hiddenLayers == 0 || hiddenNodesPerLayer == 0 || outputs == 0)
        {
            throw new System.ArgumentException("Arguments can't be 0!");
        }

        this.numberOfInputs             = inputs;
        this.numberOfHiddenLayers       = hiddenLayers;
        this.numberOfHiddenNodesInLayer = hiddenNodesPerLayer;
        this.numberOfOutputs            = outputs;

        layers = new Matrix[hiddenLayers + 1];
        biases = new Matrix[hiddenLayers + 1];

        Matrix layer;
        Matrix bias;

        for (int i = 0; i < this.numberOfHiddenLayers + 1; i++)
        {
            if (i == 0)
            {
                layer = new Matrix(hiddenNodesPerLayer, inputs);
                bias  = new Matrix(hiddenNodesPerLayer, 1);
            }
            else if (i == this.numberOfHiddenLayers)
            {
                layer = new Matrix(outputs, hiddenNodesPerLayer);
                bias  = new Matrix(outputs, 1);
            }
            else
            {
                layer = new Matrix(hiddenNodesPerLayer, hiddenNodesPerLayer);
                bias  = new Matrix(hiddenNodesPerLayer, 1);
            }
            StaticMath.Randomize(layer);
            StaticMath.Randomize(bias);
            layers[i] = layer;
            biases[i] = bias;
        }
    }