public override bool Execute()
        {
            Treatment.Result = ActiveResult;

            // Apply Treatment
            return(Treatment.ApplyOn());
        }
        public override bool Execute()
        {
            bool status = true;



            /*
             *
             * // Name of the results file
             * StudyExecutionDialog studyExecutionDialog = new StudyExecutionDialog();
             * System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(studyExecutionDialog);
             * //            studyExecutionDialog.Owner = this;
             * bool? result = studyExecutionDialog.ShowDialog(); // Show model dialog
             *
             * if (result == true)
             * {
             * Result currentResult = new Result(studyExecutionDialog.ResultName);
             * string fullPath = System.IO.Path.Combine("Studies", this.Name, studyExecutionDialog.ResultName + ".sdf");
             * currentResult.DatabasePath = fullPath;
             * this.Results.Add(currentResult);
             * this.ActiveResult = currentResult;
             * }
             * else
             * {
             * studyExecutionDialog.Close();
             * }
             *
             */



            Treatment.Result = ActiveResult;

            status = Treatment.ApplyOn();



            string CurrentDir = System.IO.Directory.GetCurrentDirectory();
            string FileName   = Name;

            if (File.Exists(CurrentDir + "\\" + FileName + ".acdstd"))
            {
                FileName = Name + "_" + DateTime.Today.Day + "-" + DateTime.Today.Month + "-" + DateTime.Today.Year + "_" + DateTime.Now.Hour + "-" + DateTime.Now.Minute + "-" + DateTime.Now.Second;
            }


            /*
             * string output1 = File.ReadAllText("evaluatedSolutions.txt");
             * FileStream filer1 = new FileStream(CurrentDir + "\\" + FileName + ".acdstd", FileMode.Append, FileAccess.Write);
             * StreamWriter evals1 = new StreamWriter(filer1);
             * evals1.Write(output1);
             * evals1.Close();
             * filer1.Close();
             */


            return(status);
        }
        public override bool Execute()
        {
            bool status = true;

            if (Treatment is NSGAIIOptimiser || Treatment is SGAOptimizer)
            {
                throw new NotImplementedException("NSGAII or SGA  used a GUI to define some parameters, removing this dependencies needs to be implemented");

                //// GA setup
                //var gaSetup = new GASetup();
                //gaSetup.ShowDialog();
                //GAParameters gaParameters = gaSetup.GAParameters;
                //gaParameters.EvaluatedSolutionsFile = Path.Combine(AircadiaProject.ProjectPath, "evaluatedSolutions.txt");
                //((NSGAII)(Treatment)).GAParameters = gaParameters;
            }

            Treatment.Result = ActiveResult;

            status = Treatment.ApplyOn();

            return(status);
        }
        public override bool Execute()
        {
            bool status = Treatment.ApplyOn();

            return(status);
        }
        //public Treatment Treatment { get; }

        public override bool Execute()
        {
            bool status = true;



            /*
             #region Atif
             * string databaseFileName = Path.Combine(AircadiaProject.ProjectPath, "Studies\\" + this.Name + "\\" + this.Name + ".sdf"); // Microsoft SQL server compact edition file
             *
             * // Create database for optimisation results
             * string connectionString;
             *
             * connectionString = string.Format("Data Source = " + databaseFileName + ";Persist Security Info=False");
             * SqlCeEngine engine = new SqlCeEngine(connectionString);
             *
             * // Create tables
             * SqlCeConnection connection = new SqlCeConnection(connectionString);
             * if (connection.State == ConnectionState.Closed)
             * {
             *  connection.Open();
             * }
             *
             *
             *
             *
             *
             * // Create SQL statement command for "SQL Server Compact Edition"
             * SqlCeCommand command1 = new SqlCeCommand(sqlStatement1, connection);
             * SqlCeCommand command2 = new SqlCeCommand(sqlStatement2, connection);
             * // Execute the SQL command
             * try
             * {
             *  command1.ExecuteNonQuery();
             *  command2.ExecuteNonQuery();
             * }
             * catch (SqlCeException sqlexception)
             * {
             *  Console.WriteLine(sqlexception.Message);
             * }
             * catch (Exception ex)
             * {
             *  Console.WriteLine(ex.Message);
             * }
             #endregion Atif
             */



            if (Treatment is NSGAIIOptimiser opt)
            {
                //throw new NotImplementedException("NSGAII or SGA  used a GUI to define some parameters, removing this dependencies needs to be implemented");

                //opt.GAParameters.SelectionOprMethod = Treatments.Optimisers.GA.Selection.SelectionOprMethods.TournamentSelectionWithoutReplacement;
                //opt.GAParameters.CrossoverOprMethod = Treatments.Optimisers.GA.Crossover.CrossoverOprMethods.UniformCrossover;
                //opt.GAParameters.MutationOprMethod = Treatments.Optimisers.GA.Mutation.MutationOprMethods.PolynomialMutation;
                //opt.GAParameters.EvaluatedSolutionsFile = Path.Combine(AircadiaProject.ProjectPath, "evaluatedSolutions.txt");

                // UI Code
                //    NoOfGenerations = (int)numericUpDownNoOfGenerations.Value;
                //GAParameters.NoOfGenerations = NoOfGenerations;

                //PopulationSize = (int)numericUpDownPopulationSize.Value;
                //GAParameters.PopulationSize = PopulationSize;

                //if ((comboBoxSelectionOpr.SelectedItem as RadComboBoxItem).Content.ToString() == "Roulette Wheel")
                //    GAParameters.SelectionOprMethod = SelectionOprMethods.RouletteWheelSelection;
                //else if ((comboBoxSelectionOpr.SelectedItem as RadComboBoxItem).Content.ToString() == "Tournament Without Replacement")
                //    GAParameters.SelectionOprMethod = SelectionOprMethods.TournamentSelectionWithoutReplacement;
                //else if ((comboBoxSelectionOpr.SelectedItem as RadComboBoxItem).Content.ToString() == "Tournament With Replacement")
                //    GAParameters.SelectionOprMethod = SelectionOprMethods.TournamentSelectionWithReplacement;

                //if ((comboBoxCrossoverOpr.SelectedItem as RadComboBoxItem).Content.ToString() == "One-Point")
                //    GAParameters.CrossoverOprMethod = CrossoverOprMethods.OnePointCrossover;
                //else if ((comboBoxCrossoverOpr.SelectedItem as RadComboBoxItem).Content.ToString() == "Two-Point")
                //    GAParameters.CrossoverOprMethod = CrossoverOprMethods.TwoPointCrossover;
                //else if ((comboBoxCrossoverOpr.SelectedItem as RadComboBoxItem).Content.ToString() == "Uniform")
                //    GAParameters.CrossoverOprMethod = CrossoverOprMethods.UniformCrossover;
                //else if ((comboBoxCrossoverOpr.SelectedItem as RadComboBoxItem).Content.ToString() == "Simulated Binary")
                //    GAParameters.CrossoverOprMethod = CrossoverOprMethods.SimulatedBinaryCrossover;

                //if ((comboBoxMutationOpr.SelectedItem as RadComboBoxItem).Content.ToString() == "Genewise")
                //    GAParameters.MutationOprMethod = MutationOprMethods.GenewiseMutation;
                //else if ((comboBoxMutationOpr.SelectedItem as RadComboBoxItem).Content.ToString() == "Selective")
                //    GAParameters.MutationOprMethod = MutationOprMethods.SelectiveMutation;
                //else if ((comboBoxMutationOpr.SelectedItem as RadComboBoxItem).Content.ToString() == "Polynomial")
                //    GAParameters.MutationOprMethod = MutationOprMethods.PolynomialMutation;

                // GA setup
                GASetup gaSetup = new GASetup(this.OptimisationTemplate);
                if (gaSetup.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    GAParameters gaParameters = gaSetup.GAParameters;
                    //gaParameters.EvaluatedSolutionsFile = Path.Combine(AircadiaProject.ProjectPath, "evaluatedSolutions.txt");
                    ((NSGAIIOptimiser)(Treatment)).GAParameters = gaParameters;
                }
            }
            else if (Treatment is SGAOptimizer)
            {
                throw new NotImplementedException("NSGAII or SGA  used a GUI to define some parameters, removing this dependencies needs to be implemented");
            }

            Treatment.Result = ActiveResult;

            status = Treatment.ApplyOn();

            return(status);
        }
Exemple #6
0
        public override bool Execute()
        {
            bool status = true;



            /*
             *
             * // Name of the results file
             * StudyExecutionDialog studyExecutionDialog = new StudyExecutionDialog();
             * System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(studyExecutionDialog);
             * //            studyExecutionDialog.Owner = this;
             * bool? result = studyExecutionDialog.ShowDialog(); // Show model dialog
             *
             * if (result == true)
             * {
             *  Result currentResult = new Result(studyExecutionDialog.ResultName);
             *  string fullPath = System.IO.Path.Combine("Studies", this.Name, studyExecutionDialog.ResultName + ".sdf");
             *  currentResult.DatabasePath = fullPath;
             *  this.Results.Add(currentResult);
             *  this.ActiveResult = currentResult;
             * }
             * else
             * {
             *  studyExecutionDialog.Close();
             * }
             *
             */



            string databaseFileName = Path.Combine(Project.ProjectPath, "Studies\\" + Name, Name + ".sdf"); // Microsoft SQL server compact edition file

            // Create database for optimisation results
            string connectionString;

            connectionString = String.Format("Data Source = " + databaseFileName + ";Persist Security Info=False");


            // Create tables
            var connection = new SqlCeConnection(connectionString);

            if (connection.State == ConnectionState.Closed)
            {
                connection.Open();
            }



            #region Atif
            // Create SQL statements to create tables, sqlStatement1 for OptimAllResults and sqlStatement2 for OptimGenResults
            //            this.Result.TableNames.Add("RobOptimAllResults");
            //            this.Result.TableNames.Add("RobOptimGenResults");
            string sqlStatement1 = "create table " + Name + " (";
            sqlStatement1 += "ID int, ";



            for (int i = 0; i < names.Count; i++)
            {
                sqlStatement1 += names[i] + " ";

                sqlStatement1 += "float, ";
            }


            for (int i = 0; i < robOptTemplate.DesignVariables.Count; i++)
            {
                if (!names.Contains(robOptTemplate.DesignVariables[i].Name))
                {
                    string columnHeader = robOptTemplate.DesignVariables[i].Name;
                    sqlStatement1 += columnHeader + " ";

                    sqlStatement1 += "float, ";
                }
            }


            //for (int i = 0; i < this.robOptTemplate.DesignVariables.Count(); i++)
            //{
            //    string columnHeader = this.robOptTemplate.DesignVariables[i].Name;
            //    sqlStatement1 += columnHeader + " ";
            //    sqlStatement2 += columnHeader + " ";
            //    /*
            //    if (this.robOptTemplate.DesignVariables[i].WrappedData is IntegerData)
            //    {
            //        sqlStatement1 += "int, ";
            //        sqlStatement2 += "int, ";
            //    }
            //    else if (this.robOptTemplate.DesignVariables[i].WrappedData is DoubleData)
            //    {
            //    */
            //    sqlStatement1 += "float, ";
            //    sqlStatement2 += "float, ";
            //    /*
            //    }
            //    */
            //}
            for (int i = 0; i < robOptTemplate.Objectives.Count(); i++)
            {
                string columnHeader = robOptTemplate.Objectives[i].Name;

                // Loss Function
                sqlStatement1 += columnHeader + "LF" + " ";

                /*
                 * if ((this.robOptTemplate.Objectives[i].WrappedData) is IntegerData)
                 * {
                 *  sqlStatement1 += "int, ";
                 *  sqlStatement2 += "int, ";
                 * }
                 * else if (this.robOptTemplate.Objectives[i].WrappedData is DoubleData)
                 * {
                 */
                sqlStatement1 += "float, ";

                /*
                 * }
                 */

                // Mean
                sqlStatement1 += columnHeader + "mean" + " ";

                /*
                 * if ((this.robOptTemplate.Objectives[i].WrappedData) is IntegerData)
                 * {
                 *  sqlStatement1 += "int, ";
                 *  sqlStatement2 += "int, ";
                 * }
                 * else if (this.robOptTemplate.Objectives[i].WrappedData is DoubleData)
                 * {
                 */
                sqlStatement1 += "float, ";

                /*
                 * }
                 */

                // Variance
                sqlStatement1 += columnHeader + "var" + " ";

                /*
                 * if ((this.robOptTemplate.Objectives[i].WrappedData) is IntegerData)
                 * {
                 *  sqlStatement1 += "int, ";
                 *  sqlStatement2 += "int, ";
                 * }
                 * else if (this.robOptTemplate.Objectives[i].WrappedData is DoubleData)
                 * {
                 */
                sqlStatement1 += "float, ";

                /*
                 * }
                 */
            }
            for (int i = 0; i < robOptTemplate.Constraints.Count(); i++)
            {
                string columnHeader = robOptTemplate.Constraints[i].Name;

                // Loss Function
                sqlStatement1 += columnHeader + "LF" + " ";

                /*
                 * if ((this.robOptTemplate.Constraints[i].WrappedData) is IntegerData)
                 * {
                 *  sqlStatement1 += "int, ";
                 *  sqlStatement2 += "int, ";
                 * }
                 * else if (this.robOptTemplate.Constraints[i].WrappedData is DoubleData)
                 * {
                 */
                sqlStatement1 += "float, ";

                /*
                 * }
                 */

                // Mean
                sqlStatement1 += columnHeader + "mean" + " ";

                /*
                 * if ((this.robOptTemplate.Constraints[i].WrappedData) is IntegerData)
                 * {
                 *  sqlStatement1 += "int, ";
                 *  sqlStatement2 += "int, ";
                 * }
                 * else if (this.robOptTemplate.Constraints[i].WrappedData is DoubleData)
                 * {
                 */
                sqlStatement1 += "float, ";

                /*
                 * }
                 */

                // Variance
                sqlStatement1 += columnHeader + "var" + " ";

                /*
                 * if ((this.robOptTemplate.Constraints[i].WrappedData) is IntegerData)
                 * {
                 *  sqlStatement1 += "int, ";
                 *  sqlStatement2 += "int, ";
                 * }
                 * else if (this.robOptTemplate.Constraints[i].WrappedData is DoubleData)
                 * {
                 */
                sqlStatement1 += "float, ";

                /*
                 * }
                 */
            }
            if (robOptTemplate.DesignVariables.Count() + robOptTemplate.Objectives.Count() + robOptTemplate.Constraints.Count() > 0)
            {
                sqlStatement1 = sqlStatement1.Remove(sqlStatement1.Length - 2);
            }
            sqlStatement1 += ")";

            // Create SQL statement command for "SQL Server Compact Edition"
            var command1 = new SqlCeCommand(sqlStatement1, connection);
            // Execute the SQL command
            try
            {
                command1.ExecuteNonQuery();
            }
            catch (SqlCeException sqlexception)
            {
                Console.WriteLine(sqlexception.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            #endregion Atif



            Treatment.Result = ActiveResult;

            status = Treatment.ApplyOn(StudiedComponent);



            if (Treatment.Name == "ROP" && status == true) //This is to store the results of Robust Analysis studies(RA) so that they can be visualised on the grid of the fExecuter form
            {
                //Storing variables and targets labels:
                string[,] ROPvars    = Treatment.input_options.setuplist[0] as string[, ];
                string[,] ROPtargets = Treatment.input_options.setuplist[1] as string[, ];
                int      NoROPvars       = ROPvars.GetLength(0);
                int      NoROPtargets    = ROPtargets.GetLength(0);
                string[] ROPvarsNames    = new string[NoROPvars];
                string[] ROPtargetsNames = new string[NoROPtargets];
                string   OutputString    = "";
                for (int i = 0; i < NoROPvars; i++)
                {
                    OutputString = OutputString + ROPvars[i, 0] + "(var)\t";
                }
                for (int i = 0; i < NoROPtargets - 1; i++)
                {
                    OutputString = OutputString + ROPtargets[i, 0] + "(LossFunc)\t";
                    OutputString = OutputString + ROPtargets[i, 0] + "(Mean)\t";
                    OutputString = OutputString + ROPtargets[i, 0] + "(Variance)\t";
                }
                OutputString = OutputString + ROPtargets[NoROPtargets - 1, 0] + "(LossFunc)\t";
                OutputString = OutputString + ROPtargets[NoROPtargets - 1, 0] + "(Mean)\t";
                OutputString = OutputString + ROPtargets[NoROPtargets - 1, 0] + "(Variance)\r\n";

                //Storing variables and targets values:
                //for (int i = 0; i < NoROPvars + (3 * NoROPtargets) - 1; i++)
                //{
                //    OutputString = OutputString + (Treatment as URQTreatmentOld).RobustData[0, i] + "\t";
                //}
                //OutputString = OutputString + (Treatment as URQTreatmentOld).RobustData[0, NoROPvars + 3 * NoROPtargets - 1] + "\t";


                Treatment.output_struct.output = OutputString;
            }



            if (status == true)
            {
                string CurrentDir = System.IO.Directory.GetCurrentDirectory();
                string FileName   = Name;
                if (File.Exists(CurrentDir + "\\" + FileName + ".acdstd"))
                {
                    FileName = Name + "_" + DateTime.Today.Day + "-" + DateTime.Today.Month + "-" + DateTime.Today.Year + "_" + DateTime.Now.Hour + "-" + DateTime.Now.Minute + "-" + DateTime.Now.Second;
                }
                if (File.Exists(Project.ProjectPath + "\\FuncEvalsH.txt"))
                {
                    File.Copy(Project.ProjectPath + "\\FuncEvalsH.txt", CurrentDir + "\\" + FileName + ".acdstd", false);
                }

                string output = File.ReadAllText(Project.ProjectPath + "\\FuncEvalsRob.txt");
                var    filer  = new FileStream(CurrentDir + "\\" + FileName + ".acdstd", FileMode.Append, FileAccess.Write);
                var    evals  = new StreamWriter(filer);
                evals.Write(output);
                evals.Close();
                filer.Close();


                string VisualisationCase = ((this as Study) as Study).Treatment.Name;
                if (VisualisationCase == "TradeStudy" || VisualisationCase == "rDOE" || Treatment is Aircadia.ObjectModel.Treatments.DOE.DesignOfExperiment)
                {
                    string output1 = File.ReadAllText("evaluatedSolutions.txt");
                    var    filer1  = new FileStream(CurrentDir + "\\" + FileName + ".acdstd", FileMode.Append, FileAccess.Write);
                    var    evals1  = new StreamWriter(filer1);
                    evals1.Write(output1);
                    evals1.Close();
                    filer1.Close();
                }
            }



            return(status);
        }