public void Execute(Simulation sim) { var startPoint = new Vehicule(); foreach (var simToRemove in sim.Rides.Where(r => startPoint.GetDistanceTo(r.StartPoint) + r.GetDistance() > sim.Steps)) { sim.Rides.Remove(simToRemove); } for (; sim.CurrentStep < sim.Steps; sim.CurrentStep++) { AssignRide(sim); foreach (var vehicule in sim.Vehicules) { vehicule.ComputeNextPosition(); } } }
private Ride ComputeScoreForVhc(Vehicule vhc, int cStep) { long maxScore = 0; Ride ret = null; for (int i = 0; i < _sim.Rides.Count; i++) { if (!_rAssigned[i]) { var ride = _sim.Rides[i]; var score = vhc.GetDistanceTo(ride.StartPoint); if (score > maxScore) { ret = ride; maxScore = score; } } } return(ret); }