public MinFunGettingStarted
        (
            int earlyPopulation,
            int numberOfParents,
            int numberOfGenerationRepetitions,
            int choromosemeLenght,
            double sigma,
            int kIndividualTornomantInit,

            int a,
            int b,
            int c,

            FunctionSelected functionSelected,
            Selection selectionList,
            Recombination recombinations,
            Mutation mutations
        )
            : base(earlyPopulation, numberOfParents, numberOfGenerationRepetitions)
        {
            ChoromosemeLenght        = choromosemeLenght;
            Sigma                    = sigma;
            KIndividualTornomantInit = kIndividualTornomantInit;
            A = a;
            B = b;
            C = c;
            FunctionSelected = functionSelected;
            SelectionList    = selectionList;
            Recombinations   = recombinations;
            mutationList     = mutations;
        }
    // Use this for initialization
    void Start()
    {
        pop        = GameObject.Find("GameMaster");
        naturalSel = pop.GetComponent <NaturalSelection>();
        artSel     = pop.GetComponent <ArtificalSelection>();
        recom      = pop.GetComponent <Recombination>();
        replace    = pop.GetComponent <Replacement>();

        playerNum = PauseMenu.playerNum; //number of players is taken from other script because it enables changing this value in game by user
        Players   = new GameObject[playerNum];

        jumpingEnabled = PauseMenu.jumpingEnabled;  //jumping can be enabled through game menu

        SpawnPlayers();
    }
Example #3
0
        public Task <(MinFuncIndividual first, MinFuncIndividual second)> HandleRecombination(MinFuncIndividual parent1, MinFuncIndividual parent2, Recombination recombination)
        {
            if (recombination == Recombination.Simple)
            {
                var random = RandomHelper.CreateRandom(0, _chromosomeLength);
                var child1 = new MinFuncIndividual(new double[_chromosomeLength]);
                var child2 = new MinFuncIndividual(new double[_chromosomeLength]);

                for (int i = random; i < _chromosomeLength; i++)
                {
                    child1.Generate[i] = (parent1.Generate[i] * _alfa) + (parent2.Generate[i] * (1 - _alfa));
                    child2.Generate[i] = (parent1.Generate[i] * _alfa) + (parent2.Generate[i] * (1 - _alfa));
                }
                return(Task.FromResult((child1, child2)));
            }
            return(Task.FromResult((new MinFuncIndividual(null), new MinFuncIndividual(null))));
        }
Example #4
0
 void Start()
 {
     population = GameObject.Find("GameMaster").gameObject.GetComponent <Population>();
     recom      = GameObject.Find("GameMaster").gameObject.GetComponent <Recombination>();
     art        = GameObject.Find("GameMaster").gameObject.GetComponent <ArtificalSelection>();
 }
        public async Task <(MinFuncIndividual first, MinFuncIndividual second)> ProcessRecombinationHandler(MinFuncIndividual parent1, MinFuncIndividual parent2, Recombination recombination)
        {
            //var threadId = Thread.CurrentThread.ManagedThreadId;
            foreach (IRecombinationMethod <MinFuncIndividual, MinFuncIndividual> recombinationRequest in _recombinationRequestList)
            {
                var result = await recombinationRequest.HandleRecombination(parent1, parent2, recombination);

                if (result is (MinFuncIndividual, MinFuncIndividual) &&
                    result.first.Generate != null && result.second.Generate != null)
                {
                    return(result.first, result.second);
                }
            }
            return(null, null);
        }
Example #6
0
        public async Task <(Individual first, Individual second)> HandleRecombination(Individual first, Individual second, Recombination recombination)
        {
            var point1 = RandomHelper.CreateRandom(1, first.Generate.Count());
            var point2 = RandomHelper.CreateRandom(point1, first.Generate.Count());

            bool[] child1Generate = new bool[first.Generate.Count()];
            bool[] child2Generate = new bool[first.Generate.Count()];

            await Task.Run(() =>
            {
                for (int i = 0; i < first.Generate.Count(); i++)
                {
                    if (point1.Equals(point2))
                    {
                        child1Generate[i] = (i < point1) ? first.Generate[i] : second.Generate[i];
                        child2Generate[i] = (i < point1) ? second.Generate[i] : first.Generate[i];
                    }
                    else
                    {
                        child1Generate[i] = (i < point1) ? first.Generate[i]
                                                         : ((i < point2) ? second.Generate[i] : first.Generate[i]);
                        child2Generate[i] = (i < point1) ? second.Generate[i]
                                                         : ((i < point2) ? first.Generate[i] : second.Generate[i]);
                    }
                }
            });

            var child1 = new Individual(child1Generate, _items, _knapsackCapacity);
            var child2 = new Individual(child2Generate, _items, _knapsackCapacity);

            //noise for mutation
            if (RandomHelper.CreateRandom(0, 100) < 35)
            {
                child1 = await _simpleMutation.HandleMutation(child1, Mutation.None);
            }
            if (RandomHelper.CreateRandom(0, 100) < 35)
            {
                child2 = await _simpleMutation.HandleMutation(child2, Mutation.None);
            }
            return(child1, child2);
        }