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); }