Exemplo n.º 1
0
        public NeuralNet CrossOver(MovingAgent parentOne, MovingAgent parentTwo)
        {
            NeuralNet    neuralNet        = new NeuralNet(true);
            List <float> newWeights       = new List <float>();
            List <float> parentOneWeights = parentOne.GetNetworkWeights();
            List <float> parentTwoWeights = parentTwo.GetNetworkWeights();

            int crossOverPoint;

            if (Utilities.IsRandomCrossoverPoint)
            {
                crossOverPoint = (int)Utilities.RandomMinMax(0, parentOneWeights.Count);
            }
            else
            {
                crossOverPoint = (int)(parentOneWeights.Count * Utilities.CrossoverPoint);
            }

            for (int i = 0; i < crossOverPoint; i++)
            {
                newWeights.Add(parentOneWeights[i]);
            }

            for (int i = crossOverPoint; i < parentOneWeights.Count; i++)
            {
                newWeights.Add(parentTwoWeights[i]);
            }

            neuralNet.SetWeights(ref newWeights);

            return(neuralNet);
        }