Пример #1
0
        private static void Main(string[] args)
        {
            var generations = 500000;

            OrganismFactory <Organism> .GeneCount = 1000;
            var a = OrganismFactory <Organism> .CreateByDivineIntervention();

            a.Name = "Frank";
            var b = OrganismFactory <Organism> .CreateByDivineIntervention();

            b.Name = "Mary";
            var c = a.Mate(b);

            Console.WriteLine("First Child");
            c.Dump();
            for (var i = 0; i < generations; i++)
            {
                c = a.Mate(b);
            }

            Console.WriteLine("Original Parents");

            a.Dump();
            b.Dump();
            Console.WriteLine("Why cousins don't marry");
            c.Dump();
            Console.ReadKey();
        }
Пример #2
0
            public void Initialize()
            {
                _fakeUser = new User();
                Guid trainingRoomId = Guid.NewGuid();

                _roomName        = "CoolRoom";
                _organismFactory = new OrganismFactory();
                _trainingRoom    = new TrainingRoom(trainingRoomId, _fakeUser, _roomName, new TrainingRoomSettings(trainingRoomId, 0, 2, 1, 1, 1, 0.4, 3, 0.05, 0.03, 0.75, 0.001, 1, 0.8, 0.1, 0.5, 0.25, 0, 15, 5), _organismFactory);
            }
Пример #3
0
 public Population(PopulationController populationController,
                   OrganismFactory organismFactory,
                   int initCount)
 {
     this.populationController = populationController;
     this.organismFactory = organismFactory;
     AddOrganisms(initCount);
     InitParams();
     // subscribe self to organism death messages
     SubscribeDeath(HandleDeath);
 }
Пример #4
0
            public void Initialize()
            {
                _user = new User()
                {
                    Id       = Guid.NewGuid(),
                    Username = "******"
                };
                Guid trainingRoomId = Guid.NewGuid();

                _organismFactory      = new OrganismFactory();
                _trainingRoomSettings = new TrainingRoomSettings(trainingRoomId, 0, 2, 1, 1, 1, 0.4, 3, 0.05, 0.03, 0.75, 0.001, 1, 0.8, 0.1, 0.5, 0.25, 0, 15, 5);
                _trainingRoom         = new TrainingRoom(trainingRoomId, _user, "CoolRoom", _trainingRoomSettings, _organismFactory);
            }
Пример #5
0
            public void Initialize()
            {
                _fakeUser = new User();
                Guid trainingRoomId = Guid.NewGuid();

                _organismFactory = new OrganismFactory();
                _trainingRoom    = new TrainingRoom(trainingRoomId, _fakeUser, "FakeRoom", new TrainingRoomSettings(trainingRoomId, 0, 2, 3, 1, 1, 0.4, 3, 0.05, 0.03, 0.75, 0.001, 1, 0.8, 0.1, 0.5, 0.25, 0, 15, 5), _organismFactory);
                Guid id = Guid.NewGuid();

                _original = new Organism(id, _trainingRoom.TrainingRoomSettings, 0, new List <ConnectionGene>()
                {
                    new ConnectionGene(id, 1, 0, 3, 1),
                    new ConnectionGene(id, 2, 1, 3, 1, false),
                    new ConnectionGene(id, 3, 2, 3, 1),
                    new ConnectionGene(id, 4, 1, 4, 1),
                    new ConnectionGene(id, 5, 4, 3, 1),
                    new ConnectionGene(id, 6, 0, 4, 1)
                });
            }
Пример #6
0
            public void Initialize()
            {
                _fakeUser = new User();
                Guid trainingRoomId = Guid.NewGuid();

                _roomName        = "CoolRoom";
                _organismFactory = new OrganismFactory();
                //Create a training room with really high mutation settings
                TrainingRoomSettings trainingRoomSettings = new TrainingRoomSettings(trainingRoomId: trainingRoomId,
                                                                                     organismCount: 100,
                                                                                     inputCount: 2,
                                                                                     outputCount: 1,
                                                                                     c1: 1,
                                                                                     c2: 1,
                                                                                     c3: 0.4,
                                                                                     threshold: 3,
                                                                                     addConnectionChance: 1,
                                                                                     addNodeChance: 1,
                                                                                     crossOverChance: 0.75,
                                                                                     interSpeciesChance: 0.001,
                                                                                     mutationChance: 1,
                                                                                     mutateWeightChance: 0.8,
                                                                                     weightReassignChance: 0.1,
                                                                                     topAmountToSurvive: 0.5,
                                                                                     enableConnectionChance: 0.25,
                                                                                     seed: 0,
                                                                                     maxStagnantTime: 15,
                                                                                     championCloneMinSpeciesSize: 5);

                _trainingRoom = new TrainingRoom(trainingRoomId, _fakeUser, _roomName, trainingRoomSettings, _organismFactory);

                for (int i = 0; i < trainingRoomSettings.OrganismCount; i++)
                {
                    Organism organism = new Organism(trainingRoomSettings, _trainingRoom.GetInnovationNumber)
                    {
                        IsLeased = true
                    };
                    _trainingRoom.AddOrganism(organism);
                }
                _trainingRoom.IncreaseNodeIdTo(trainingRoomSettings.InputCount + trainingRoomSettings.OutputCount);
            }