MCPcopy Create free account
hub / github.com/OpenNFS/OpenNFS / EvaluateFitness

Method EvaluateFitness

src/RaceNet/TrainingGround.cpp:46–66  ·  view source on GitHub ↗

Move this to agent class?

Source from the content-addressed store, hash-verified

44
45// Move this to agent class?
46float TrainingGround::EvaluateFitness(shared_ptr<Car> &car_agent) {
47 uint32_t nVroad = boost::get<shared_ptr<NFS3_4_DATA::TRACK>>(training_track->trackData)->col.vroadHead.nrec;
48
49 int closestVroadID = 0;
50 float lowestDistanceSqr = FLT_MAX;
51 for (uint32_t vroad_Idx = 0; vroad_Idx < nVroad; ++vroad_Idx) {
52 INTPT refPt = boost::get<shared_ptr<NFS3_4_DATA::TRACK>>(training_track->trackData)->col.vroad[vroad_Idx].refPt;
53 glm::vec3 vroadPoint = glm::normalize(glm::quat(glm::vec3(-SIMD_PI / 2, 0, 0))) *
54 glm::vec3((refPt.x / 65536.0f) / 10.f, ((refPt.y / 65536.0f) / 10.f),
55 (refPt.z / 65536.0f) / 10.f);
56
57 float distanceSqr = glm::length2(glm::distance(car_agent->car_body_model.position, vroadPoint));
58 if (distanceSqr < lowestDistanceSqr) {
59 closestVroadID = vroad_Idx;
60 lowestDistanceSqr = distanceSqr;
61 }
62 }
63
64 // Return a number corresponding to the distance driven
65 return (float) closestVroadID;
66}
67
68void TrainingGround::InitialiseAgents(uint16_t populationSize) {
69 // Create new cars from models loaded in training_car to avoid VIV extract again, each with new RaceNetworks

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected