public override Solution executeStrategy(Solution toStartFrom) { var dayArray = Enum.GetValues(typeof(Days)); Days day = (Days)dayArray.GetValue(random.Next(1, dayArray.Length)); if (day.Equals(Days.None)) Console.WriteLine("Day is Days.None at RouteAddStrategy! FIX ME!"); routeCreated = new Route(day); var allClusters = toStartFrom.GetAllClusters(); int clusterIndex = random.Next(allClusters.Count); for (int i = 0; i < 16; i++) //64 -> 16 { clusterIndex = random.Next(allClusters.Count); if (allClusters[clusterIndex].AvailableOrdersInCluster.Count == 0) continue; int randomIndex = random.Next(allClusters[clusterIndex].AvailableOrdersInCluster.Count); Order order = allClusters[clusterIndex].AvailableOrdersInCluster[randomIndex]; if (!routeCreated.CanAddOrder(order)) continue; routeCreated.AddOrder(order); order.RemoveAvailableOrderFromCluster(); } if (routeCreated.Orders.Count > 1) // Does the route have orders added to it { toStartFrom.AddRoute(routeCreated); strategyHasExecuted = true; } return toStartFrom; }