public override void ApplyCrossoverOpr(Chromosome.Chromosome chromosome1, Chromosome.Chromosome chromosome2)
        {
            int crossoverPoint = GARandom.BoundedRandomInteger(0, Template.DesignVariables.Count - 1);

            for (int i = 0; i <= crossoverPoint; i++)
            {
                double tempGene = chromosome1[i];
                chromosome1[i] = chromosome2[i];
                chromosome2[i] = tempGene;
            }
        }
Ejemplo n.º 2
0
        public override void ApplyMutationOpr(Chromosome.Chromosome chromosome)
        {
            int mutationPosition = GARandom.BoundedRandomInteger(0, Template.DesignVariables.Count);

            double gene = 0;

            if (Template.DesignVariables[mutationPosition].Type == DesignVariableType.Integer)
            {
                gene = GARandom.BoundedRandomInteger((int)Template.DesignVariables[mutationPosition].LowerBound, (int)Template.DesignVariables[mutationPosition].UpperBound);
            }
            else if (Template.DesignVariables[mutationPosition].Type == DesignVariableType.Double)
            {
                gene = GARandom.BoundedRandomDouble(Template.DesignVariables[mutationPosition].LowerBound, Template.DesignVariables[mutationPosition].UpperBound);
            }
            else
            {
                //System.out.println("Invalid Design Variable Type");
                //System.exit(1);
            }

            chromosome[mutationPosition] = gene;
        }
Ejemplo n.º 3
0
        public Chromosome(OptimisationTemplate Template, GAParameters gaParameters, bool empty)
        {
            this.Template     = Template;
            this.gaParameters = gaParameters;


            int noOfDesignVariables = Template.DesignVariables.Count;

            genes = new double[noOfDesignVariables];
            for (int i = 0; i < noOfDesignVariables; i++)
            {
                if (Template.DesignVariables[i].Type == DesignVariableType.Integer)
                {
                    if (!empty)
                    {
                        genes[i] = GARandom.BoundedRandomInteger((int)Template.DesignVariables[i].LowerBound, (int)Template.DesignVariables[i].UpperBound);
                    }
                    else
                    {
                        genes[i] = 0.0;
                    }
                }
                if (Template.DesignVariables[i].Type == DesignVariableType.Double)
                {
                    if (!empty)
                    {
                        genes[i] = GARandom.BoundedRandomDouble(Template.DesignVariables[i].LowerBound, Template.DesignVariables[i].UpperBound);
                    }
                    else
                    {
                        genes[i] = 0.0;
                    }
                }
            }
            constraintValues          = new double[Template.Constraints.Count];
            constraintViolationValues = new double[Template.Constraints.Count];
        }