public void CheckPointReached(Checkpoint checkpoint)
    {
        if (nextCheckPointToReach != checkpoint)
        {
            return;
        }


        lastCheckpoint = Checkpoints[CurrentCheckpointIndex];
        reachedCheckpoint?.Invoke(checkpoint);
        CurrentCheckpointIndex++;


        if (CurrentCheckpointIndex >= Checkpoints.Count)
        {
            rewardFromFinaCheckpoint = 50f;
            carAgent.AddReward(50f);
            Debug.Log("<color=green>Final checkpoint Reached</color>" + carAgent.GetCumulativeReward(), this);
            carAgent.EndEpisode();
        }
        else
        {
            rewardFromCheckpoints += (100f / Checkpoints.Count);
            carAgent.AddReward((100f / Checkpoints.Count));
            checkpoint.gameObject.SetActive(false);
            SetNextCheckpoint();
        }
    }
Beispiel #2
0
    private void Update()
    {
        if (frames >= 500)
        {
            //Select target
            CarAgent highestVal = targets[0];

            foreach (CarAgent agent in targets)
            {
                if (highestVal.GetCumulativeReward() < agent.GetCumulativeReward())
                {
                    highestVal = agent;
                }
            }

            target = highestVal.transform.GetChild(3).transform;
        }
        else
        {
            frames++;
        }
    }
Beispiel #3
0
 void Update()
 {
     cumulativeReward.text  = "Cumulative Reward: " + agent.GetCumulativeReward().ToString();
     episodesCompleted.text = "Episodes Completed: " + agent.CompletedEpisodes.ToString();
 }
Beispiel #4
0
    // Update is called once per frame
    void FixedUpdate()
    {
        rpm.text      = string.Format("Speed: {0:0.00} kph", CarController.carSpeed * 3.6);
        distance.text = string.Format("Progress: {0:0.00} m\nReword: {1}", car.carPorgress, car.GetCumulativeReward());
        CheckInput();
        try{
            CheckWheel();
        }catch {
            GetWC();
        }

        StartCoroutine(CheckRangeFinders());
        StartCoroutine(RemoveLayout());
    }