private void InitializeCleanConfiguredMachinesList(List <Machine> rawMachines) { ConfiguredMachines.Clear(); foreach (var machine in rawMachines) { ConfiguredMachines.Add(new Machine((Machine)machine.Clone())); } foreach (var machine in ConfiguredMachines) { machine.Tasks.Clear(); } }
private void GetBestConfigurationForCurrentIteration() { SimulateConfiguration(); cMax = ConfiguredMachines.Last().Tasks.Last().TaskStop; bestMachineConfiguration.Clear(); ConfiguredMachines.ForEach((item) => { bestMachineConfiguration.Add(new Machine((Machine)item.Clone())); }); for (int i = 0; i < ConfiguredMachines[0].Tasks.Count - 1; i++) { foreach (var machine in ConfiguredMachines) { CustomSwaps.Swap(machine.Tasks, i, machine.Tasks.Count - 1); } SimulateConfiguration(); if (cMax > ConfiguredMachines.Last().Tasks.Last().TaskStop) { cMax = ConfiguredMachines.Last().Tasks.Last().TaskStop; bestMachineConfiguration.Clear(); ConfiguredMachines.ForEach((item) => { bestMachineConfiguration.Add(new Machine((Machine)item.Clone())); }); } foreach (var machine in ConfiguredMachines) { CustomSwaps.Swap(machine.Tasks, i, machine.Tasks.Count - 1); } } ConfiguredMachines.Clear(); bestMachineConfiguration.ForEach((item) => { ConfiguredMachines.Add(new Machine((Machine)item.Clone())); }); }