| 5 | #include "TrainingGround.h" |
| 6 | |
| 7 | TrainingGround::TrainingGround(uint16_t populationSize, uint16_t nGenerations, uint32_t nTicks, |
| 8 | shared_ptr<ONFSTrack> &training_track, shared_ptr<Car> &training_car, |
| 9 | std::shared_ptr<Logger> &logger, GLFWwindow *gl_window) : window(gl_window), |
| 10 | raceNetRenderer(gl_window, |
| 11 | logger) { |
| 12 | LOG(INFO) << "Beginning GA evolution session. Population Size: " << populationSize << " nGenerations: " |
| 13 | << nGenerations << " nTicks: " << nTicks << " Track: " << training_track->name << " (" |
| 14 | << ToString(training_track->tag) << ")"; |
| 15 | |
| 16 | this->training_track = training_track; |
| 17 | this->training_car = training_car; |
| 18 | physicsEngine.registerTrack(this->training_track); |
| 19 | |
| 20 | InitialiseAgents(populationSize); |
| 21 | std::vector<std::vector<int>> trainedAgentFitness = TrainAgents(nGenerations, nTicks); |
| 22 | |
| 23 | LOG(INFO) << "Saving best agent network to " << BEST_NETWORK_PATH; |
| 24 | car_agents[trainedAgentFitness[0][0]]->carNet.net.saveNetworkParams(BEST_NETWORK_PATH.c_str()); |
| 25 | |
| 26 | LOG(INFO) << "Done"; |
| 27 | } |
| 28 | |
| 29 | void TrainingGround::Mutate(RaceNet &toMutate) { |
| 30 | for (uint8_t mut_Idx = 0; mut_Idx < 5; ++mut_Idx) { |
nothing calls this directly
no test coverage detected