public TConfiguration Apply(TConfiguration configuration) { var newConfigurations = new List <SimulatedAnnealingConfiguration>(); for (int i = 0; i < Chains.Count; i++) { newConfigurations.Add(SimulatedAnnealingConfiguration.GetDefaultConfiguration()); } var copy = configuration.SmartClone(); copy.Chains = Chains; copy.SimulatedAnnealingConfiguration = new SimulatedAnnealingConfigurationProvider(newConfigurations); return(copy); }
// TODO: should configuration be null by default? public SimulatedAnnealingEvolver(IChainBasedLayoutOperations <TLayout, TNode> layoutOperations, SimulatedAnnealingConfiguration configuration = null, bool addNodesGreedilyBeforeEvolve = false) { LayoutOperations = layoutOperations ?? throw new ArgumentNullException(nameof(layoutOperations)); Configuration = configuration ?? SimulatedAnnealingConfiguration.GetDefaultConfiguration(); this.addNodesGreedilyBeforeEvolve = addNodesGreedilyBeforeEvolve; }