public MyAlgorithmOptimization(MainForm form1, Algorithm algorithm)
        {
            this.algorithm      = algorithm;
            explored            = new List <TargetFunctionPoint>();
            this.form1          = form1;
            variablesVisualizer = new MultiParameterVisualizer(form1.picBox, form1);
            variablesVisualizer.addParameter("max Q", Color.Cyan, 400);
            variablesVisualizer.addParameter("target_function", Color.LightCyan, 800);



            //VVVVVVVVVVV



            //    1)разобраться с косяками на графике всех индивидов

            //    2)почему при нахождении центра получаются близкие, но разные числа

            //    3)добиться одинакового числа точек в currentHypercube связано с (1)

            //    4) прикрутить красивые графики везде, где уместно


            // -параллелизм
            //for (int i = 0; i < population_value; i++)
            //     variablesVisualizer.parameters[1].functions.Add(new Function(" [" + i.ToString() + "]", valueToColor(0, population_value, population_value - i - 1)));

            report_file_name = form1.pathPrefix + "/MyAlgorithmOptimization/Optimization report " + DateTime.Now.ToString().Replace(':', '-') + ".txt";

            P = algorithm.h.Clone();
            string reportHeader = "";

            for (int i = 0; i < P.nodes.Count; i++)
            {
                if (P.nodes[i].getAttributeValue("variable") == "numerical")
                {
                    reportHeader += P.nodes[i].getAttributeValue("name") + ';';
                    variablesCount++;
                }
            }

            variablesVisualizer.enableGrid = false;

            int fucnCount = Convert.ToInt32(Math.Pow(3.0, Convert.ToDouble(variablesCount)));

            for (int i = 0; i < fucnCount; i++)
            {
                variablesVisualizer.parameters[1].functions.Add(new Function(" [" + i.ToString() + "]", ParameterVisualizer.valueToColor(0, fucnCount, fucnCount - i - 1)));
            }

            File.WriteAllText(report_file_name, reportHeader + "Q;" + '\n');

            initPool();
            variablesVisualizer.refresh();
        }
Exemplo n.º 2
0
        public ExpertOptimization(Expert expert, MainForm form1, int population_value, int test_count, int mutation_rate, double elite_ratio, int Iterarions, DateTime date1, DateTime date2, string rawDatasetFilePath)
        {
            r = new Random();
            this.Iterarions         = Iterarions;
            this.rawDatasetFilePath = rawDatasetFilePath;
            this.form1            = form1;
            this.expert           = expert;
            this.elite_ratio      = elite_ratio;
            this.mutation_rate    = mutation_rate;
            this.population_value = population_value;
            this.test_count       = test_count;
            this.date1            = date1;
            this.date2            = date2;
            variablesVisualizer   = new MultiParameterVisualizer(form1.picBox, form1);
            population            = new Hyperparameters[population_value];
            variablesNames        = new List <string>();
            variablesIDs          = new List <int>();

            this.agentManager = form1.I.agentManager;

            name = expert.expertName;

            try { Directory.Delete(form1.pathPrefix + "Optimization\\" + name, true); } catch { }

            //  refreshAOTree();
            variablesVisualizer.enableGrid = false;
            variablesVisualizer.addParameter("best_individ", Color.Cyan, 300);
            variablesVisualizer.addParameter("target_function", Color.LightCyan, 600);
            variablesVisualizer.parameters[1].functions.Add(new Function("averege best", Color.Lime));
            //добавление переменных в  MultiParameterVisualizer
            for (int i = 0; i < population_value; i++)
            {
                variablesVisualizer.parameters[1].functions.Add(new Function(" [" + i.ToString() + "]", valueToColor(0, population_value, population_value - i - 1)));
            }

            for (int i = 0; i < population_value; i++)
            {
                // variablesVisualizer.addParameter("actions [" + i.ToString() + "]", Color.Pink, 50);
                variablesVisualizer.addParameter("committee response [" + i.ToString() + "]", Color.Pink, 300);
                variablesVisualizer.addParameter("close [" + i.ToString() + "]", Color.Pink, 300);
                variablesVisualizer.addParameter("deposit1 [" + i.ToString() + "]", Color.Green, 300);
                variablesVisualizer.addParameter("exit [" + i.ToString() + "]", Color.LightSeaGreen, 300);

                /* variablesVisualizer.addParameter("deposit history [" + i.ToString() + "]", Color.LightCyan, 300);
                 * variablesVisualizer.parameters[1 + i].functions.Add(new Function("deposit1 [" + i.ToString() + "]", Color.Pink));
                 * variablesVisualizer.parameters[1 + i].functions.Add(new Function("deposit2 [" + i.ToString() + "]", Color.Green));
                 * variablesVisualizer.parameters[1 + i].functions.Add(new Function("exit [" + i.ToString() + "]", Color.LightSeaGreen));   */
            }

            // recurciveVariableAdding(expert.H, 0, name + "[0]");
            variablesVisualizer.refresh();
        }