public void TestSerialization() { var mutators = new List <AbstractMutator> { new ConnectionWeightMutator() { ProbabiltiyOfMutation = 1f, ProbPerturbWeight = 1.0f, NewWeightStd = 0.4f, ProbResetWeight = 1.0f, NewWeightPower = 1.0f, ProbEnableConn = 0.5f, ProbDisableConn = 0.8f, WeightPerturbScale = 0.2f }, new SplitConnectionMutator() { ProbabiltiyOfMutation = 0.02f, } }; NeatMutationConfig config = new NeatMutationConfig(); JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All }; var json = JsonConvert.SerializeObject(config, settings); NeatMutationConfig deserializedConfig = JsonConvert.DeserializeObject <NeatMutationConfig>(json, settings); Assert.IsTrue(deserializedConfig.ConnectionWeightMutator is ConnectionWeightMutator); Assert.IsTrue(deserializedConfig.SplitConnectionMutator is SplitConnectionMutator); }
public ReproductionSystem(EntityManager pool, NeatMutationConfig config, InnovationIdManager innovationIdManager, EnergyManager energyManager, int currentMaxSpeciesId, float similarityThreshold, Simulation simulation) : base(pool, (e) => e.HasComponents(typeof(ReproductionComponent), typeof(EnergyComponent))) { _muationManager = new MutationManager(config); _innovationIdManager = innovationIdManager; _energyManager = energyManager; _nextSpeciesIdCounter = currentMaxSpeciesId + 1; _similarityThreshold = similarityThreshold; _simulation = simulation; }
public MutationManager(NeatMutationConfig config) { Mutators.Add(config.AddConnectionMutator); Mutators.Add(config.SplitConnectionMutator); Mutators.Add(config.ConnectionWeightMutator); }