Each generation consists of none cars out of which the top 3 cars are selected to breed for the next generation.
Each car has three LiDAR sensors separated at 45o angles and two possible speeds. The thresholds for each sensor and the values of the speeds are learned through Genetic Algorithm.
The score for each car is the distance it travelled minus the number of turns it took. This maximises the lifetime of the car while minimising the number of turns which results in a smoother motion.
Initially, the cars learn the thresholds for the sensors while in the later stages when almost every car is able to complete the loop, maximum possible speeds are achieved.