Exemple #1
0
    public void radarGegevens()
    {
        AfstandRadar Radar = GetComponentInChildren <AfstandRadar>();

        inputValues[0] = Radar.TargetDistanceLeft;
        inputValues[1] = Radar.TargetDistanceLeft45;
        inputValues[2] = Radar.TargetDistanceFWD;
        inputValues[3] = Radar.TargetDistanceRight45;
        inputValues[4] = Radar.TargetDistanceRight;
    }
Exemple #2
0
    // Start is called before the first frame update
    private void Start()
    {
        moveSpeed = 0;
        AfstandRadar Radar = GetComponentInChildren <AfstandRadar>();

        // De beginwaardes worden opgeslagen.
        (defRot, defPos, defScale) = (transform.rotation, transform.position, transform.localScale);

        lastPosition = transform.position;

        if (NeuralNetwork.multiHidden == false)
        {
            (biasInput, biasHidden, weightsInput, weightsHidden) = NeuralNetwork.NieuwNetwerk(inputCount, hiddenCount, outputCount);
        }
        else
        {
            (biasInput, biasHidden, biasSecondHidden, weightsInput, weightsHidden, weightsSecondHidden) = NeuralNetwork.NieuwDiepNetwerk(inputCount, hiddenCount, secondHiddenCount, outputCount);
        }
    }
Exemple #3
0
    // Update is called once per frame
    private void FixedUpdate()
    {
        // Afstand
        distanceTraveled += Vector3.Distance(transform.position, lastPosition);
        lastPosition      = transform.position;

        // Versnelling van de auto
        if (moveSpeed < NeuralNetwork.moveSpeed && gebotst == false)
        {
            moveSpeed += NeuralNetwork.accelerationSpeed;
        }
        // Sturen van de auto
        rotateSpeed = 15f * moveSpeed;

        // Vraagt de gegevens op bij de radar.
        AfstandRadar Radar = GetComponentInChildren <AfstandRadar>();

        // Input
        inputValues[0] = Radar.TargetDistanceLeft;
        inputValues[1] = Radar.TargetDistanceLeft45;
        inputValues[2] = Radar.TargetDistanceFWD;
        inputValues[3] = Radar.TargetDistanceRight45;
        inputValues[4] = Radar.TargetDistanceRight;
        // moveSpeed wordt meegegeven als parameter. Wordt gedeeld door maximale moveSpeed om te normaliseren.
        //inputValues[5] = moveSpeed;


        // Er wordt een nieuwe array aangemaakt waar de output in komt te staan.
        float[] outputValues = new float[NeuralNetwork.outputCount];

        if (NeuralNetwork.multiHidden == false)
        {
            float[] hiddenValues = NeuralNetwork.calculateOutcome(weightsInput, biasInput, inputValues);
            outputValues = NeuralNetwork.calculateOutcome(weightsHidden, biasHidden, hiddenValues);
        }
        else
        {
            float[] hiddenValues       = NeuralNetwork.calculateOutcome(weightsInput, biasInput, inputValues);
            float[] secondHiddenValues = NeuralNetwork.calculateOutcome(weightsHidden, biasHidden, hiddenValues);
            outputValues = NeuralNetwork.calculateOutcome(weightsSecondHidden, biasSecondHidden, secondHiddenValues);
        }


        // Verwerking van de output.
        if (NeuralNetwork.enkeleOutput == true)
        {
            //if (moveSpeed < maxsnelheid && moveSpeed > 1.0 && gebotst == false)
            //{
            //    moveSpeed += (float)outputValues[1];
            //}

            // Snelheid
            transform.Translate(moveSpeed * Time.deltaTime, 0f, 0f);

            // Draaisnelheid
            rotateSpeed = moveSpeed * 15f;

            // Draaien
            transform.Rotate(Vector3.up * rotateSpeed * (float)outputValues[0] * Time.deltaTime);
        }
        else
        {
            if (outputValues[0] == outputValues.Max())
            {
                transform.Rotate(Vector3.up * rotateSpeed * 0 * Time.deltaTime);
            }
            else if (outputValues[1] == outputValues.Max())
            {
                transform.Rotate(Vector3.up * rotateSpeed * 1 * Time.deltaTime);
            }
            else
            {
                transform.Rotate(Vector3.up * rotateSpeed * -1 * Time.deltaTime);
            }

            transform.Translate(moveSpeed * 1f * Time.deltaTime, 0f, 0f);
        }
    }