Beispiel #1
0
        private void DrawOperationProperty(int index, Color color, PlotBuilder graph)
        {
            int[] indices       = new int[100];
            int[] numIterations = new int[100];

            for (int i = 0; i < 100; i++)
            {
                indices[i] = i;
            }

            Cursor = Cursors.WaitCursor;
            for (int i = 0; i < 100; i++)
            {
                Problem problem = new Problem();
                problem.Left        = new double[] { 0.0, 0.0 };
                problem.Right       = new double[] { 1.0, 1.0 };
                problem.Constraints = new List <FunctionDelegate>();

                GrishaginFunction targetFunction = new GrishaginFunction(i + 1);
                problem.TargetFunction = delegate(double[] args)
                {
                    return(-targetFunction.CalculateFunction(args));
                };

                method = (Method)Activator.CreateInstance(methods[experiments[index].MethodName]);
                method.SetProblem(problem);
                method.SetOptions(experiments[index].MethodOptions);
                method.IsOperationProperty = true;
                method.MaximumPoint        = targetFunction.MaximumPoint;
                method.Solve();
                Text = "Выполнено: " + i + "%";

                numIterations[i] = method.GetTrials().Count;
            }
            Cursor = Cursors.Default;
            Text   = "OptimLab";

            Array.Sort(numIterations, indices);

            PointF[] points = new PointF[100];
            for (int i = 0; i < 100; i++)
            {
                points[i] = new PointF(numIterations[i], i + 1);
            }

            Plot plotPoints = Triangulator.PointsVertexArray(points);

            plotPoints.Information.Name = "Points" + index;
            plotPoints.Color            = color;
            graph.AddPlot(plotPoints);

            Plot plotLines = Triangulator.CurveStripVertexArray(points);

            plotLines.Information.Name = "Lines" + index;
            plotLines.Color            = color;
            graph.AddPlot(plotLines);
        }