public ElitismOpr(OptimisationTemplate Template, GAParameters gaParameters, Population.Population parentPopulation, Population.Population childPopulation)
 {
     this.Template         = Template;
     this.gaParameters     = gaParameters;
     this.parentPopulation = parentPopulation;
     this.childPopulation  = childPopulation;
 }
示例#2
0
 public SingleObjectivePopulation(OptimisationTemplate Template, GAParameters gaParameters, int populationSize, bool empty)
     : base(Template, gaParameters, populationSize)
 {
     //initialising population chromosomes
     chromosomes = new SingleObjectiveChromosome[populationSize];
     for (int i = 0; i < Size; i++)
     {
         chromosomes[i] = new SingleObjectiveChromosome(Template, gaParameters, empty);
     }
     //initialising best chromosome
     bestChromosome = new SingleObjectiveChromosome(Template, gaParameters, true);
 }
        public MultiObjectivePopulation(OptimisationTemplate Template, GAParameters gaParameters, int populationSize, bool empty)
            : base(Template, gaParameters, populationSize)
        {
            //initialising population chromosomes
            chromosomes = new MultiObjectiveChromosome[size];
            for (int i = 0; i < size; i++)
            {
                chromosomes[i] = new MultiObjectiveChromosome(Template, gaParameters, empty);
            }

            //initialising the seven statistics variables
            int noOfObjectives = Template.Objectives.Count;

            bestObjectives    = new double[noOfObjectives];
            worstObjectives   = new double[noOfObjectives];
            averageObjectives = new double[noOfObjectives];
            maximumFitnesses  = new double[noOfObjectives];
            minimumFitnesses  = new double[noOfObjectives];
            averageFitnesses  = new double[noOfObjectives];
            fitnessVariances  = new double[noOfObjectives];
        }
        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];
        }
示例#5
0
        public RobustOptimisationStudy(string name, Treatment treatment, ExecutableComponent ec, OptimisationTemplate template, string parentName = "")
            : base(name, null, null, name, parentName)
        {
            Treatment        = treatment;
            StudiedComponent = ec;


            var DesignVariables = template.DesignVariables.Select(v => new RobOptDesignVariable {
                Name = v.Name
            }).ToList();
            var Objectives = template.Objectives.Select(o => new RobOptObjective {
                Name = o.Name, Type = o.Type
            }).ToList();
            var Constraints = template.Constraints.Select(c => new RobOptConstraint {
                Name = c.Name, Type = c.Type, Value = c.Value
            }).ToList();

            robOptTemplate = new RobOptTemplate()
            {
                DesignVariables = DesignVariables, Objectives = Objectives, Constraints = Constraints
            };


            ColumnNames.Add("ID");
            ColumnTypes.Add(DataTypes.INTEGER);
            ColumnFormats.Add(0);
            ColumnUnits.Add("");

            for (int i = 0; i < robOptTemplate.DesignVariables.Count(); i++)
            {
                string columnHeader = robOptTemplate.DesignVariables[i].Name;
                ColumnNames.Add(columnHeader);
                ColumnTypes.Add(DataTypes.DOUBLE);
                ColumnFormats.Add(4);
                ColumnUnits.Add("");
            }
            for (int i = 0; i < robOptTemplate.Objectives.Count(); i++)
            {
                string columnHeader = robOptTemplate.Objectives[i].Name;

                // Loss Function
                ColumnNames.Add(columnHeader + "LF");
                ColumnTypes.Add(DataTypes.DOUBLE);
                ColumnFormats.Add(4);
                ColumnUnits.Add("");
                // Mean
                ColumnNames.Add(columnHeader + "mean");
                ColumnTypes.Add(DataTypes.DOUBLE);
                ColumnFormats.Add(4);
                ColumnUnits.Add("");
                // Variance
                ColumnNames.Add(columnHeader + "var");
                ColumnTypes.Add(DataTypes.DOUBLE);
                ColumnFormats.Add(4);
                ColumnUnits.Add("");
            }
            for (int i = 0; i < robOptTemplate.Constraints.Count(); i++)
            {
                string columnHeader = robOptTemplate.Constraints[i].Name;

                // Loss Function
                ColumnNames.Add(columnHeader + "LF");
                ColumnTypes.Add(DataTypes.DOUBLE);
                ColumnFormats.Add(4);
                ColumnUnits.Add("");
                // Mean
                ColumnNames.Add(columnHeader + "mean");
                ColumnTypes.Add(DataTypes.DOUBLE);
                ColumnFormats.Add(4);
                ColumnUnits.Add("");
                // Variance
                ColumnNames.Add(columnHeader + "var");
                ColumnTypes.Add(DataTypes.DOUBLE);
                ColumnFormats.Add(4);
                ColumnUnits.Add("");
            }


            TableNames.Add("RobOptimAllResults");
            TableNames.Add("RobOptimGenResults");
            Template = template;
        }
 public Population(OptimisationTemplate Template, GAParameters gaParameters)
     : this(Template, gaParameters, gaParameters.PopulationSize)
 {
 }
 public MultiObjectivePopulation(OptimisationTemplate Template, GAParameters gaParameters, bool empty)
     : this(Template, gaParameters, gaParameters.PopulationSize, empty)
 {
 }
示例#8
0
 public MutationOpr(OptimisationTemplate Template, GAParameters gaParameters)
 {
     this.Template     = Template;
     this.gaParameters = gaParameters;
 }
        public DetOptStudy(string name, string description, ExecutableComponent studiedComponent, OptimisationTemplate optimisationTemplate, Treatment treatment, string parentName = "")
            : base(name, null, null, description, parentName)
        {
            OptimisationTemplate = optimisationTemplate;
            base.Treatment       = treatment;
            StudiedComponent     = studiedComponent;

            // Create SQL statements to create tables, sqlStatement1 for OptimAllResults and sqlStatement2 for OptimGenResults
            sqlStatement1  = "create table OptimAllResults (";
            sqlStatement2  = "create table OptimGenResults (";
            sqlStatement1 += "ID int, ";
            sqlStatement2 += "ID int, Category int, ";

            #region Atif
            // Prepare results database
            foreach (BoundedDesignVariableNoInital designVariable in this.OptimisationTemplate.DesignVariables)
            {
                string columnHeader = designVariable.Name;
                ColumnNames.Add(columnHeader);
                sqlStatement1 += columnHeader + " ";
                sqlStatement2 += columnHeader + " ";
                if (designVariable.Data is IntegerData)
                {
                    ColumnTypes.Add(DataTypes.INTEGER);
                    ColumnFormats.Add(0);
                    sqlStatement1 += "int, ";
                    sqlStatement2 += "int, ";
                }
                else if (designVariable.Data is DoubleData)
                {
                    ColumnTypes.Add(DataTypes.DOUBLE);
                    ColumnFormats.Add(((DoubleData)(designVariable.Data)).DecimalPlaces);
                    sqlStatement1 += "float, ";
                    sqlStatement2 += "float, ";
                }
                ColumnUnits.Add(designVariable.Data.Unit);
                MinValues.Add(designVariable.LowerBound);
                MaxValues.Add(designVariable.UpperBound);
            }
            foreach (Objective objective in this.OptimisationTemplate.Objectives)
            {
                string columnHeader = objective.Name;
                ColumnNames.Add(columnHeader);
                sqlStatement1 += columnHeader + " ";
                sqlStatement2 += columnHeader + " ";
                if (objective.Data is IntegerData)
                {
                    ColumnTypes.Add(DataTypes.INTEGER);
                    ColumnFormats.Add(0);
                    sqlStatement1 += "int, ";
                    sqlStatement2 += "int, ";
                }
                else if (objective.Data is DoubleData)
                {
                    ColumnTypes.Add(DataTypes.DOUBLE);
                    ColumnFormats.Add(((DoubleData)(objective.Data)).DecimalPlaces);
                    sqlStatement1 += "float, ";
                    sqlStatement2 += "float, ";
                }
                ColumnUnits.Add(objective.Data.Unit);
                MinValues.Add(Double.NaN);
                MaxValues.Add(Double.NaN);
            }
            foreach (Aircadia.ObjectModel.Treatments.Optimisers.Formulation.Constraint constraint in this.OptimisationTemplate.Constraints)
            {
                string columnHeader = constraint.Name;
                ColumnNames.Add(columnHeader);
                sqlStatement1 += columnHeader + " ";
                sqlStatement2 += columnHeader + " ";
                if (constraint.Data is IntegerData)
                {
                    ColumnTypes.Add(DataTypes.INTEGER);
                    ColumnFormats.Add(0);
                    sqlStatement1 += "int, ";
                    sqlStatement2 += "int, ";
                }
                else if (constraint.Data is DoubleData)
                {
                    ColumnTypes.Add(DataTypes.DOUBLE);
                    ColumnFormats.Add(((DoubleData)(constraint.Data)).DecimalPlaces);
                    sqlStatement1 += "float, ";
                    sqlStatement2 += "float, ";
                }
                ColumnUnits.Add(constraint.Data.Unit);
                MinValues.Add(Double.NaN);
                MaxValues.Add(Double.NaN);
            }

            TableNames.Add("OptimAllResults");
            TableNames.Add("OptimGenResults");

            if (this.OptimisationTemplate.DesignVariables.Count() + this.OptimisationTemplate.Objectives.Count() + this.OptimisationTemplate.Constraints.Count() > 0)
            {
                sqlStatement1 = sqlStatement1.Remove(sqlStatement1.Length - 2);
                sqlStatement2 = sqlStatement2.Remove(sqlStatement2.Length - 2);
            }
            sqlStatement1 += ")";
            sqlStatement2 += ")";


            #endregion Atif

            Treatment.CreateFolder();
        }
 public TournamentSelectionOpr(OptimisationTemplate Template, GAParameters gaParameters, int tournamentSize)
     : base(Template, gaParameters)
 {
     this.tournamentSize = tournamentSize;
 }
 public TournamentSelectionOprWithoutReplacement(OptimisationTemplate Template, GAParameters gaParameters, int tournamentSize)
     : base(Template, gaParameters, tournamentSize)
 {
 }
示例#12
0
 public SimulatedBinaryCrossoverOpr(OptimisationTemplate Template, GAParameters gaParameters)
     : this(Template, gaParameters, 0.5, 10)
 {
 }
 public Population(OptimisationTemplate Template, GAParameters gaParameters, int size)
 {
     this.Template     = Template;
     this.gaParameters = gaParameters;
     this.size         = size;
 }
示例#14
0
 public SelectiveMutationOpr(OptimisationTemplate Template, GAParameters gaParameters)
     : base(Template, gaParameters)
 {
 }
示例#15
0
 protected SelectionOpr(OptimisationTemplate Template, GAParameters gaParameters)
 {
     this.Template     = Template;
     this.gaParameters = gaParameters;
 }
 public OnePointCrossoverOpr(OptimisationTemplate Template, GAParameters gaParameters)
     : base(Template, gaParameters)
 {
 }
示例#17
0
 public CrossoverOpr(OptimisationTemplate Template, GAParameters gaParameters)
 {
     this.Template     = Template;
     this.gaParameters = gaParameters;
 }
 public ProportionalElitismOpr(OptimisationTemplate Template, GAParameters gaParameters, Population.Population parentPopulation, Population.Population childPopulation)
     : base(Template, gaParameters, parentPopulation, childPopulation)
 {
 }
        protected double crowdingDistance; //will be initialised to 0.0 upon object creation


        public MultiObjectiveChromosome(OptimisationTemplate Template, GAParameters gaParameters, bool empty)
            : base(Template, gaParameters, empty)
        {
            objectiveValues = new double[Template.Objectives.Count];
            fitnessValues   = new double[Template.Objectives.Count];
        }
 public TournamentSelectionOprWithoutReplacement(OptimisationTemplate Template, GAParameters gaParameters)
     : this(Template, gaParameters, 2)
 {
 }
 public GAParameters(OptimisationTemplate template) : this(template.Constraints.Count)
 {
 }
示例#22
0
 public SimulatedBinaryCrossoverOpr(OptimisationTemplate Template, GAParameters gaParameters, double genewiseSwapProb, int polynomialOrder)
     : base(Template, gaParameters)
 {
     this.genewiseSwapProb = genewiseSwapProb;
     this.polynomialOrder  = polynomialOrder;
 }
示例#23
0
 public PolynomialMutationOpr(OptimisationTemplate Template, GAParameters gaParameters)
     : base(Template, gaParameters)
 {
 }
 public SingleObjectiveChromosome(OptimisationTemplate Template, GAParameters gaParameters, bool empty)
     : base(Template, gaParameters, empty)
 {
 }
示例#25
0
 public GASetup(OptimisationTemplate template)
 {
     InitializeComponent();
     gaParameters = new GAParameters(template);
 }