Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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;
 }
Esempio n. 3
0
 public MutationManager(NeatMutationConfig config)
 {
     Mutators.Add(config.AddConnectionMutator);
     Mutators.Add(config.SplitConnectionMutator);
     Mutators.Add(config.ConnectionWeightMutator);
 }