private void MakeNextStep(Truck truck, GraphEnvironment graphEnvironment) { var graph = graphEnvironment.Graph; var nextArcs = GetNextArcs(truck.ActualNode, graph.Arcs); var availableArcs = nextArcs.Where(x => this.CanVisit(truck, graph, x.first.Id == truck.ActualNode ? x.second : x.first)).ToList(); if (availableArcs.Count > 0 && !(truck.Capacity < graphEnvironment.MinimumDemand && truck.ActualNode == 1)) { var bestArc = this.GetBestsArcsWithRandomPercentage(availableArcs, truck.Travel, truck, graphEnvironment.MinimumDemand); //Console.WriteLine("\n"); //Console.WriteLine("Arco seleccionado:"); //bestArc.Print(); graphEnvironment.AccumulatedProfit += truck.AddToTravel(bestArc); } else { truck.IsFinished = true; } }