Example #1
0
        public override void OnePointCrossover(MOOSolution rhs)
        {
            if (mData.Count == 1)
            {
                return;
            }

            int cut_point = 1;

            if (mData.Count > 2)
            {
                cut_point = DistributionModel.NextInt(mData.Count);
            }

            ContinuousVector rhs_vector = (ContinuousVector)rhs;

            double temp = 0;

            for (int dimension = 0; dimension != cut_point; ++dimension)
            {
                temp                  = this[dimension];
                this[dimension]       = rhs_vector[dimension];
                rhs_vector[dimension] = temp;
            }
        }
Example #2
0
        public override ISolution Clone()
        {
            ContinuousVector clone = new ContinuousVector(mPopulation, mProblem);

            clone.Copy(this);

            int dimension_count = mData.Count;

            for (int dimension = 0; dimension < dimension_count; ++dimension)
            {
                clone.mData.Add(mData[dimension]);
            }
            return(clone);
        }
Example #3
0
        public override void UniformCrossover(MOOSolution rhs)
        {
            ContinuousVector rhs_vector = (ContinuousVector)rhs;

            int length = mData.Count;

            for (int dimension = 0; dimension != length; ++dimension)
            {
                double val1 = this[dimension];
                double val2 = rhs_vector[dimension];
                if (DistributionModel.GetUniform() < 0.5)
                {
                    this[dimension] = val2;
                }

                if (DistributionModel.GetUniform() < 0.5)
                {
                    rhs_vector[dimension] = val1;
                }
            }
        }