Beispiel #1
0
        private MutationManager InitMutations()
        {
            var result = new MutationManager();

            result.MutationEntries.Add(new MutationEntry(
                                           new SingleSynapseWeightMutation(() => singleSynapseMutValue),
                                           singleSynapseMutChance,
                                           EMutationType.Independent
                                           ));

            result.MutationEntries.Add(new MutationEntry(
                                           new SingleSynapseWeightMutation(() => singleSynapseMutValue * 5),
                                           singleSynapseMutChance / 5,
                                           EMutationType.Independent
                                           ));

            result.MutationEntries.Add(new MutationEntry(
                                           new AllSynapsesWeightMutation(
                                               () => allSynapsesMutValue,
                                               allSynapsesMutChanceEach),
                                           allSynapsesMutChance,
                                           EMutationType.Independent
                                           ));

            return(result);
        }
Beispiel #2
0
    public void SelectMutation()
    {
        MutationManager mutationManager = GameObject.FindGameObjectWithTag("MutationManager").GetComponent <MutationManager>();

        mutationManager.AddMutationID(idMonster, mutation);

        string s = "CAPITAL";

        SceneManager.LoadScene(s);

        // SceneManager.UnloadScene(currentScene);

        /*
         * SceneManager.SetActiveScene(SceneManager.GetSceneByName(s));
         * for (int i = 0; i < SceneManager.GetActiveScene().GetRootGameObjects().Length; i++)
         * {
         *   GameObject go = SceneManager.GetActiveScene().GetRootGameObjects()[i];
         *   if (go.tag != "Spotligth")
         *       SceneManager.GetActiveScene().GetRootGameObjects()[i].SetActive(true);
         * }
         */

        GameObject  g  = GameObject.FindGameObjectWithTag("ProtoManager");
        ProtoScript ps = null;

        if (g != null)
        {
            ps = g.GetComponent <ProtoScript>();
            ps.map.EnterMap();
            ps.currentIndex++;
        }
    }
    private void CreateFirstPopulation()
    {
        population = new Parameters[population_size];
        int loaded = 0;

        if (fitnesses.Any())
        {
            var myList = fitnesses.ToList();

            myList.Sort((pair1, pair2) => - pair1.Value.average.CompareTo(pair2.Value.average));

            while (loaded < population_size && loaded < myList.Count)
            {
                population[loaded] = myList[loaded].Key;
                loaded++;
            }
        }
        for (int i = loaded; i < population_size; i++)
        {
            population[i] = new Parameters();

            //completely randomize some of the values
            for (int j = 0; j < i * 10; j++)
            {
                population[i] = MutationManager.Mutate(population[i]);
            }
        }
    }
Beispiel #4
0
    private void Start()
    {
        MutationManager mutationManager = GameObject.FindGameObjectWithTag("MutationManager").GetComponent <MutationManager>();
        CreaturesData   creatureData    = GameObject.FindGameObjectWithTag("CreaturesData").GetComponent <CreaturesData>();

        if (mutationManager.allMutations.Count > 0)
        {
            MutationManager.MutationData data = mutationManager.GetRandomMutation(1)[0];

            idMonster = data.nIdMonster;
            mutation  = CaractMonster.GetCaractMonsterOfEnum(data.mutation);

            monsterIcon.GetComponent <Image>().sprite  = Resources.Load <Sprite>("Sprites/MonsterIcons/" + creatureData.GetFighterOfID <Monster>(CreatureType.Monster, idMonster).sName);
            mutationIcon.GetComponent <Image>().sprite = Resources.Load <Sprite>("Sprites/HumandexIcons/" + mutation.sName);
            char[] correctCapitalisation = mutation.sName.ToLowerInvariant().ToCharArray();
            correctCapitalisation[0] = correctCapitalisation[0].ToString().ToUpperInvariant()[0];
            mutationName.text        = "";
            for (int i = 0; i < correctCapitalisation.Length; ++i)
            {
                mutationName.text += correctCapitalisation[i];
            }
        }
        else
        {
            Destroy(gameObject);
        }
    }
Beispiel #5
0
    void OnEnable()
    {
        Monster monster = caravane.lFighters[caravaneIndex];

        monsterName.text = monster.sName;

        List <CaractMonster> muts = new List <CaractMonster>();

        if (MutationManager.Instance() != null)
        {
            muts = MutationManager.Instance().GetMutationsWithId(monster.nID);
        }

        for (int i = 0; i < countedMutations.Count; ++i)
        {
            Destroy(countedMutations[i]);
        }
        countedMutations.Clear();

        for (int i = 0; i < muts.Count; i++)
        {
            mutationImage.SetActive(true);
            mutationImage.GetComponent <Image>().sprite = Resources.Load <Sprite>("Sprites/HumandexIcons/" + muts[i].sName);
            countedMutations.Add(Instantiate(mutationImage, transform));
            mutationImage.SetActive(false);
        }
        //xxx mutationImage.GetComponent<Image>().sprite = Resources.Load<Sprite>("Sprites/HumandexIcons/" + MutationManager.Instance().GetMutationWithId(monster.nID).sName);
    }
Beispiel #6
0
 public MutationManager GetMutationManagerForUnit(Unit unit)
 {
     if (!mutationManagers.ContainsKey(unit))
     {
         mutationManagers[unit] = new MutationManager(unit, this);
     }
     return(mutationManagers[unit]);
 }
 static MutationManager singleton()
 {
     if (instance == null)
     {
         instance = new MutationManager();
     }
     return(instance);
 }
Beispiel #8
0
    private void Start()
    {
        tier1.Add(tier1DoubleJump);
        tier2.Add(tier2TripleJump);
        tier2.Add(tier2SuperSpeed);

        myMutationManager = this.GetComponent <MutationManager>();
    }
Beispiel #9
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            escapePressed   = true;
            lastEscapePress = Time.unscaledTime;
        }

        if (Input.GetKeyUp(KeyCode.Escape))
        {
            Camera.main.transform.position = new Vector3(0, 0, Camera.main.transform.position.z);
            escapePressed = false;
        }

        if (Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt) || Input.GetKey(KeyCode.AltGr))
        {
            if (Input.GetKeyUp(KeyCode.F7))
            {
                ChangeToMutation("BaseGameScene");
            }
            else if (Input.GetKeyUp(KeyCode.F8))
            {
                ChangeToMutation("PointGameScene");
            }
            else if (Input.GetKeyUp(KeyCode.F9))
            {
                ChangeToMutation("MovementGameScene");
            }
            else if (Input.GetKeyUp(KeyCode.F10))
            {
                ChangeToMutation("ShootGameScene");
            }
            else if (Input.GetKeyUp(KeyCode.F11))
            {
                ChangeToMutation("InputGameScene");
            }
            else if (Input.GetKeyUp(KeyCode.Alpha1))
            {
                ChangeToMutation(MutationManager.GotoNextMutation());
            }
            else if (Input.GetKeyUp(KeyCode.Alpha0))
            {
                ChangeToMutation(MutationManager.FullGameMutation());
            }
        }

        if (escapePressed)
        {
            Camera cam = Camera.main;
            cam.transform.position = new Vector3(Random.Range(-shakeOffset, shakeOffset), Random.Range(-shakeOffset, shakeOffset), cam.transform.position.z);
            if (Time.unscaledTime - lastEscapePress > quitDelay)
            {
                EventLogger.Log(EventLog.EventCode.GameEnded("InputEscapePressed"));
                Application.Quit();
            }
        }
    }
 public AutoevolutionaryInformation Create(List <Gen> gens)
 {
     return(new AutoevolutionaryInformation(
                FitnessMatcherFabrik.Create(gens.Skip(AutoEvolutionaryInformationGeneticDescriptor.Count + MutationManager.GetInstance().GetMutationTypes() + CrossOverManager.GetInstance().GetCrossOverTypes()).ToList()),
                gens[0].Value,
                gens[1].Value,
                gens[2].Value,
                gens.Skip(3).Take(MutationManager.GetInstance().GetMutationTypes()).Select(o => o.Value).ToList(),
                gens.Skip(3 + MutationManager.GetInstance().GetMutationTypes()).Take(CrossOverManager.GetInstance().GetCrossOverTypes()).Select(o => o.Value).ToList()));
 }
Beispiel #11
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;
 }
Beispiel #12
0
    public void GetMutation()
    {
        MutationManager MM = MutationManager.Instance;

        if (!MM)
        {
            return;
        }

        switch (mutationType)
        {
        case Mutations.AOEMutation:
            mutation = MM.AOEMutation;
            break;

        case Mutations.DashMutation:
            mutation = MM.DashMutation;
            break;

        case Mutations.TentacleMutation:
            mutation = MM.TentacleMutation;
            break;

        case Mutations.BloodlustMutation:
            mutation = MM.BloodlustMutation;
            break;

        case Mutations.BunnyHopMutation:
            mutation = MM.BunnyHopMutation;
            break;

        case Mutations.DoubleEdgeMutation:
            mutation = MM.DoubleEdgeMutation;
            break;

        case Mutations.RootedMutation:
            mutation = MM.RootedMutation;
            break;

        case Mutations.SlimeTrailMutation:
            mutation = MM.SlimeTrailMutation;
            break;

        case Mutations.TurretMutation:
            mutation = MM.TurretMutation;
            break;

        case Mutations.DancingSwordMutation:
            mutation = MM.DancingSwordMutation;
            break;
        }
        ;

        mutationDescription = mutation.Description;
    }
Beispiel #13
0
 public BreedingClassic(
     float productionPart,
     int minProduction,
     ISelection selection,
     ICrossover crossover,
     MutationManager mutationManager
     ) : base(productionPart, minProduction)
 {
     Selection            = selection;
     Crossover            = crossover;
     this.MutationManager = mutationManager;
 }
Beispiel #14
0
        private MutationManager InitMutations()
        {
            var mutation   = new NbMutation((int)(geneDeltaMutationPart * maxGeneValue));
            var mutManager = new MutationManager();

            mutManager.MutationEntries.Add(new MutationEntry(
                                               mutation,
                                               geneNbMutationChance,
                                               EMutationType.Independent));

            return(mutManager);
        }
Beispiel #15
0
        private MutationManager InitMutations()
        {
            var mutation = new TSSwapMutation();
            var result   = new MutationManager();

            result.MutationEntries.Add(new MutationEntry(
                                           mutation,
                                           geneMutationChance,
                                           EMutationType.Independent
                                           ));

            return(result);
        }
 // Update is called once per frame
 void Update()
 {
     if (Input.GetKeyUp(KeyCode.Return))
     {
         SceneManager.LoadScene(MutationManager.MutationName() + "");
     }
     if (Input.GetKeyUp(KeyCode.F12))
     {
         CueManager.SetCues(!CueManager.HasCues());
         EventLogger.Log(EventLog.EventCode.GameHasCues(CueManager.HasCues()));
         UpdateCueIndicator();
     }
 }
    public void Start()
    {
        if (permanentMutation != CaractMonster._enumCaractMonster.NONE)
        {
            permanentCarMutation = CaractMonster.GetCaractMonsterOfEnum(permanentMutation);
        }

        int id = gameObject.transform.parent.GetComponent <FighterUI>().fighter.nID;

        MutationManager mmm = GameObject.FindGameObjectWithTag("MutationManager").GetComponent <MutationManager>();

        SetCaract(mmm.GetMutationWithId(id));
    }
Beispiel #18
0
        public async Task ShouldMutateMessage()
        {
            var mutator = new FakeMutator();

            A.CallTo(() => Configuration.Settings.Container.Resolve(A <Type> .Ignored)).Returns(mutator);
            MutationManager.RegisterMutator("test", typeof(FakeMutator));

            var next    = A.Fake <Func <Task> >();
            var context = new TestableIncomingLogicalMessageContext();

            context.UpdateMessageInstance(Fake <Messages.IEvent>());

            await Sut.Invoke(context, next).ConfigureAwait(false);

            A.CallTo(() => next()).MustHaveHappened();
            mutator.MutatedIncoming.Should().BeTrue();
        }
Beispiel #19
0
        private static void Main(string[] args)
        {
            var configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.AddEnvironmentVariables("TODOMVC_");

            Configuration = configurationBuilder.Build();

            Console.Title = "Domain";
            Log.Logger    = new LoggerConfiguration()
                            .MinimumLevel.Warning()
                            .WriteTo.Console(outputTemplate: "[{Level}] {Message}{NewLine}{Exception}")
                            .CreateLogger();

            AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper;

            NServiceBus.Logging.LogManager.Use <SerilogFactory>();

            _container = new Container(x =>
            {
                x.For <IValidatorFactory>().Use <StructureMapValidatorFactory>();

                x.Scan(y =>
                {
                    y.TheCallingAssembly();

                    y.WithDefaultConventions();
                });
            });

            MutationManager.RegisterMutator("domain", typeof(Mutator));

            // Start the bus
            _bus = InitBus().Result;

            Console.WriteLine("Press CTRL+C to exit...");
            Console.CancelKeyPress += (sender, eArgs) =>
            {
                QuitEvent.Set();
                eArgs.Cancel = true;
            };
            QuitEvent.WaitOne();

            _bus.Stop().Wait();
        }
Beispiel #20
0
        public async Task ShouldNotMutateReplies()
        {
            var mutator = new FakeMutator();

            A.CallTo(() => Configuration.Settings.Container.Resolve(A <Type> .Ignored)).Returns(mutator);
            MutationManager.RegisterMutator("test", typeof(FakeMutator));

            var next    = A.Fake <Func <Task> >();
            var context = new TestableOutgoingLogicalMessageContext();

            context.Headers[Headers.MessageIntent] = MessageIntentEnum.Reply.ToString();
            context.UpdateMessage(Fake <Messages.IEvent>());

            await Sut.Invoke(context, next).ConfigureAwait(false);

            A.CallTo(() => next()).MustHaveHappened();
            mutator.MutatedOutgoing.Should().BeFalse();
        }
Beispiel #21
0
    public void Awake()
    {
        if (instance == null)
        {
            instance = this;
        }

        if (!created)
        {
            DontDestroyOnLoad(transform.gameObject);
            created = true;
        }
        else
        {
            Destroy(transform.gameObject);
        }

        CaractMonster init = CaractMonster.AILES;

        Initialise();
    }
    private void CreateNewGeneration()
    {
        var myList = population.ToList();

        myList.Sort((pair1, pair2) => - fitnesses[pair1].average.CompareTo(fitnesses[pair2].average));

        Parameters[] nextGeneration = new Parameters[population_size];
        nextGeneration[0] = myList[0];

        int pos = 1;

        while (pos < population_size)
        {
            Parameters p1 = SelectCandidateByRank(myList);
            Parameters p2 = SelectCandidateByRank(myList);

            nextGeneration[pos] = MutationManager.Mutate(MutationManager.Crossover(p1, p2));

            pos++;
        }

        population = nextGeneration;
    }
Beispiel #23
0
        public static void Main(string[] args)
        {
            Random             rand = new Random();
            ItemSetController  itemSetController  = new ItemSetController(rand, ITERATION_COUNT);
            PopulationSelector populationSelector = new PopulationSelector(1, 106, rand, ITERATION_COUNT);
            CrossoverManager   crossoverManager   = new CrossoverManager(rand, ITERATION_COUNT);
            SelectionManager   selectionManager   = new SelectionManager(rand);
            MutationManager    mutationManager    = new MutationManager(rand, ITERATION_COUNT);

            for (int i = 0; i < ITERATION_COUNT; i++)
            {
                itemSetController.addItem(new Item(rand.Next(1, 30), rand.Next(1, 30)), i);
            }

            itemSetController.ShowItems();
            itemSetController.IniSets();
            itemSetController.ShowSets();

            string pairSelection;

            do
            {
                Console.WriteLine("Выберите тип выборки пары: 1 - Лучшая пара 2 - Случайный");
                pairSelection = Console.ReadLine();
            } while (pairSelection != "1" && pairSelection != "2");

            string crossover;

            do
            {
                Console.WriteLine("Выберите вид кроссовера: 1 - Двухточечный(Случайный) 2 - Одноточечный классический");
                crossover = Console.ReadLine();
            } while (crossover != "1" && crossover != "2");

            string mutation;

            do
            {
                Console.WriteLine("Выберите вид мутации: 1 - изменеие бита на противоположный 2 - инверсия в случайном интервале");
                mutation = Console.ReadLine();
            } while (mutation != "1" && mutation != "2");

            string selection;

            do
            {
                Console.WriteLine("Выберите вид селекции: 1 - Бинарный турнир 2 - Пропорциональная");
                selection = Console.ReadLine();
            } while (selection != "1" && selection != "2");
            do
            {
                if (pairSelection == "1")
                {
                    populationSelector.ChooseBestPair(itemSetController.getSets());
                }
                else
                {
                    populationSelector.ChoosePair(itemSetController.getSets());
                }

                Set[] childrens    = new Set[CHILDS_COUNT];
                int   dividerPoint = rand.Next(1, ITERATION_COUNT - 1);
                Set[] bestPair     = populationSelector.getPair();
                for (int i = 0; i < childrens.Length; i++)
                {
                    childrens[i] = crossover == "1" ? crossoverManager.DoubleCross(bestPair, itemSetController.getItems()) :
                                   crossoverManager.ClassicCross(bestPair, itemSetController.getItems(), dividerPoint);
                    if (mutation == "1")
                    {
                        mutationManager.RandomMutation(childrens[i]);
                    }
                    else
                    {
                        mutationManager.InversionMutation(childrens[i]);
                    }
                }

                populationSelector.NewPopulation(itemSetController.getSets(), selection == "1" ?
                                                 selectionManager.BinaryTournament(childrens, CHILDS_COUNT / 2) :
                                                 selectionManager.ProportionallySelection(childrens, CHILDS_COUNT / 2));

                Console.WriteLine("Новая популяция:");
                itemSetController.ShowSets();

                populationSelector.ShowBestOf(itemSetController.getSets());
            } while (!populationSelector.End(itemSetController.getSets(), 85) && populationSelector.getAge() != 10);
            Console.ReadKey();
        }
 public Genome Mutate(int type, float choose_probability, float amplitude_porcentage)
 {
     return(new Genome(Descriptors, MutationManager.GetInstance().Mutate(type, Gens, choose_probability, amplitude_porcentage)));
 }
Beispiel #25
0
        public void mutate()
        {
            MutationManager mutation = new MutationManager(this);

            mutation.mutate();
        }
Beispiel #26
0
 void ChangeToMutation(string name)
 {
     MutationManager.SetMutationName(name);
     EventLogger.Log("ChangedScene|" + MutationManager.MutationName());
     SceneManager.LoadScene("SplashScreen");
 }
        public List <GenDescriptor> GetGeneticDescriptor()
        {
            var descriptor = AutoEvolutionaryInformationGeneticDescriptor.ToList();

            descriptor.AddRange(Enumerable.Repeat(new GenDescriptor("Mutation type prob", 0, 1, 0.001f), MutationManager.GetInstance().GetMutationTypes()));
            descriptor.AddRange(Enumerable.Repeat(new GenDescriptor("Apariation type prob", 0, 1, 0.001f), CrossOverManager.GetInstance().GetCrossOverTypes()));
            descriptor.AddRange(FitnessMatcherFabrik.GetGeneticDescriptor());
            return(descriptor);
        }
Beispiel #28
0
        static void Main(string[] args)
        {
            byte[] fileContet;
            using (WebClient client = new WebClient())
            {
                fileContet = client.DownloadData("http://people.sc.fsu.edu/~jburkardt/datasets/tsp/p01_d.txt");
            }
            String input = Encoding.UTF8.GetString(fileContet).Trim();

            int i = 0, j = 0;

            string[] rows = input.Split('\n');
            float [,] distancesVector = new float[rows.Length, rows.Length];
            float maxPathLength = 0;

            foreach (var row in rows)
            {
                j = 0;
                foreach (var col in Regex.Split(row.Trim(), @"\s+"))
                {
                    distancesVector[i, j] = float.Parse(col.Trim());
                    if (distancesVector[i, j] > maxPathLength)
                    {
                        maxPathLength = distancesVector[i, j];
                    }
                    j++;
                }
                i++;
            }
            int nodes = rows.Length;

            //MutationManager.GetInstance().Register(new ClassicMutationResolver());
            //MutationManager.GetInstance().Register(new SwapMutationResolver());

            MutationManager.GetInstance().Register(new DividedMutation(nodes, new SwapMutationResolver(), new ClassicMutationResolver()));

            CrossOverManager.GetInstance().Register(new DividedCrossOver(nodes, new PMXCrossOver(), new ClassicCrossOverResolver()));
            CrossOverManager.GetInstance().Register(new DividedCrossOver(nodes, new CycleCrossOver(), new ClassicCrossOverResolver()));

            var fitnessMatcherFabrik = new AutoevolutionaryFitnessMatcherDefaultImplementationFabrik();

            var GAInfo = new AutoevolutionaryGeneticAlgorithmParameters <TravelSalesmanIndividual, AutoevolutionaryFitnessMatcherDefaultImplementation>
            {
                IndividualFabrik              = new TravelSalesmanPathIndividualFabrik(nodes),
                ScenarioGeneratior            = new TravelSalesmanScenarioGenerator(distancesVector, nodes, maxPathLength),
                EvolutionaryInformationFabrik = new AutoEvolutionaryInformationFabrik <AutoevolutionaryFitnessMatcherDefaultImplementation>(fitnessMatcherFabrik),
                MaxPopulation           = 100,
                InitialLives            = 3,
                AprovedPorcentage       = 0.5f,
                ApariateTournamentCount = 5,
                DeathTournamentCount    = 6,
                ForeingersByGeneration  = 10
            };

            var GA = new AutoEvolutionaryGeneticAlgorithm <TravelSalesmanIndividual, AutoevolutionaryFitnessMatcherDefaultImplementation>(GAInfo);

            //Console.Out.WriteLine(Arrays.PrettyPrintMatrix<float>(scenarioGenerator.DistancesVector));

            for (int g = 0; g < 5000; g++)
            {
                GA.AdvanceGenerations(1);
                var bestIndividual = GA.Population.MaxBy(o => o.getNormalizedFitness());
                Console.Out.WriteLine("Generation: " + GA.GenerationNumber);
                Console.Out.WriteLine("AVG apariate dominance porcentage: " + GA.Population.Average(o => o.EvolutionInformtaion.CrossOverGenDominancePorcentage));
                Console.Out.WriteLine("Best apariate dominance porcentage: " + bestIndividual.EvolutionInformtaion.CrossOverGenDominancePorcentage);
                Console.Out.WriteLine("AVG mutate amplitude: " + GA.Population.Average(o => o.EvolutionInformtaion.MutateGenAmplitudePorcentage));
                Console.Out.WriteLine("Best mutate amplitude: " + bestIndividual.EvolutionInformtaion.MutateGenAmplitudePorcentage);
                Console.Out.WriteLine("AVG mutate choose prob: " + GA.Population.Average(o => o.EvolutionInformtaion.MutateGenChooseProbability));
                Console.Out.WriteLine("Best mutate choose prob: " + bestIndividual.EvolutionInformtaion.MutateGenChooseProbability);
                Console.Out.WriteLine("Best mutation type prob: " + bestIndividual.EvolutionInformtaion.MutationTypeProbability[0]);
                Console.Out.WriteLine("Best crossover type prob: " + bestIndividual.EvolutionInformtaion.CrossOverTypeProbability[0] + ", " + bestIndividual.EvolutionInformtaion.CrossOverTypeProbability[1]);
                Console.Out.WriteLine("Actual Population: " + GA.Population.Count);
                Console.Out.WriteLine("Best path: " + String.Join(",", bestIndividual.Individual.travelOrder));
                Console.Out.WriteLine("Best fitness: " + bestIndividual.getNormalizedFitness());
                TravelSalesmanFitness fitness = (TravelSalesmanFitness)(bestIndividual.Fitness);
                Console.Out.WriteLine("Best fitness: " + fitness.TotalDistance);
            }

            while (true)
            {
                Thread.Sleep(1000);
            }
        }
 public int GetGenCount()
 {
     return(AutoEvolutionaryInformationGeneticDescriptor.Count + MutationManager.GetInstance().GetMutationTypes() + CrossOverManager.GetInstance().GetCrossOverTypes() + FitnessMatcherFabrik.GetGenCount());
 }
 public void ResetLastScene()
 {
     SceneManager.LoadScene(MutationManager.MutationName());
     Debug.Log(MutationManager.MutationName());
 }