Point3[,] pts = new Point3[20, 20]; //задание матрицы точек с тремя координатами для построения графика #endregion Fields #region Constructors //конструктор формы public FunctionGraph(Functions.FunctionVyb Fun, double minX, double maxX, double minY, double maxY) { InitializeComponent(); FunctionGraphik.C3DrawChart.ChartType = DrawChart.ChartTypeEnum.SurfaceFillContour; //определяем вид графика - контурный и объемный Azimuth.Text = PovorotAzimuth.Value.ToString(); //для поворота по горизонтали выводим в соответсвующую метку Elevation.Text = PovorotElevation.Value.ToString(); //для поворота по вертикали выводим в соответсвующую метку this.Fun = Fun; //присваиваем функцию переданную в конструктор полю if (minX == maxX) //присваиваем границы переданные - полям, если границы одинаковые - расширяем, чтобы график не выродился в точку { this.minX = minX-1; this.maxX = maxX+1; } else { this.minX = minX; this.maxX = maxX; } if (minY == maxY) { this.minY = minY-1; this.maxY = maxY+1; } else { this.minY = minY; this.maxY = maxY; } AddData(); //вызываем метод для построения }
//выбор функции private void Function_Click(object sender, EventArgs e) { clickitem++; //наращиваем количество нажатий switch (clickitem) { case 2: Function.Image = Properties.Resources.Function2; Fun = Functions.Function2; //переключаем картинку и функции break; case 3: Function.Image = Properties.Resources.Function3; Fun = Functions.Function3; //переключаем картинку и функции break; case 4: Function.Image = Properties.Resources.Function4; Fun = Functions.Function4; //переключаем картинку и функции break; case 5: Function.Image = Properties.Resources.Function5; Fun = Functions.Function5; //переключаем картинку и функции break; case 6: Function.Image = Properties.Resources.Function6; Fun = Functions.Function6; //переключаем картинку и функции break; case 7: Function.Image = Properties.Resources.Function7; Fun = Functions.Function7; //переключаем картинку и функции break; case 8: Function.Image = Properties.Resources.Function8; Fun = Functions.Function8; //переключаем картинку и функции break; default: clickitem =1; //количество кликов - ставим начальное значение Function.Image = Properties.Resources.Function1; Fun = Functions.Function1; //переключаем картинку и функции break; } }
double[,] newpop; //популяция #endregion Fields #region Constructors //конструктор формы public Graphiks(int KolIt, double MiX, double MaX, double MiY, double MaY, bool MaxF, bool MinF, Functions.FunctionVyb x) { Kol = KolIt;//присваиваем переданные значения из другой формы MaxX = MaX; MinX = MiX; MaxY = MaY; MinY = MiY; Max = MaxF; Min = MinF; Fun = x; InitializeComponent(); Timer.Interval = 1000; //интервал для таймера lastiteration.Enabled = false; //начальные параметры доступа некоторых объектов Stop_button.Enabled = false; newpop = OptimizationAlgorithms.NewPopulation(MinX, MaxX, MinY, MaxY); //формируем новую популяцию lastmassiv = new double[newpop.GetLength(0), 2]; //инициализируем массив для предыдущей итерации Postroenye(); //строим график без точек zedGraph.IsShowPointValues = true;// включаем показ всплывающих подсказок при наведении курсора на график // для изменения формата представления координат обрабатываем событие для графика zedGraph.PointValueEvent += new ZedGraphControl.PointValueHandler(zedGraph_PointValueEvent); GraphSupport.SetToolTip(zedGraph, "Красным цветом обозначается лучший агент, желтым - худший агент, зеленым - остальные агенты"); //подсказка для графика }
double[,] newpop; //переменные для возможности использовать вне конструктора #endregion Fields #region Constructors public PopulationShow(int Kol, double[,] newpop, Functions.FunctionVyb Fun) { //конструктор формы InitializeComponent(); this.newpop = newpop; this.Fun = Fun; //присваивание внешним переменным Iteration.Text = Kol.ToString(); //задание количества итераций Population.RowCount = newpop.GetLength(0); Population.ColumnCount = 3; Population.Columns[0].HeaderText = "Координата Х"; //именуем столбцы Population.Columns[1].HeaderText = "Координата Y"; Population.Columns[2].HeaderText = "Значение функции"; for (int i = 0; i < newpop.GetLength(0); i++) { //заполняем таблицу switch ((int)KolZnakov.Value) { //в зависимости от выбранного количества знаков, заполняем таблицу case 0: Population[0, i].Value = string.Format("{0:f0}",newpop[i, 0]); Population[1, i].Value = string.Format("{0:f0}", newpop[i, 1]); Population[2, i].Value = string.Format("{0:f0}",Fun(newpop[i, 0], newpop[i, 1])); Population.Rows[i].HeaderCell.Value = String.Format("{0}", i + 1); break; case 1: Population[0, i].Value = string.Format("{0:f1}",newpop[i, 0]); Population[1, i].Value = string.Format("{0:f1}", newpop[i, 1]); Population[2, i].Value = string.Format("{0:f1}", Fun(newpop[i, 0], newpop[i, 1])); Population.Rows[i].HeaderCell.Value = String.Format("{0}", i + 1); break; case 2: Population[0, i].Value = string.Format("{0:f2}",newpop[i, 0]); Population[1, i].Value = string.Format("{0:f2}", newpop[i, 1]); Population[2, i].Value = string.Format("{0:f2}", Fun(newpop[i, 0], newpop[i, 1])); Population.Rows[i].HeaderCell.Value = String.Format("{0}", i + 1); break; case 3: Population[0, i].Value = string.Format("{0:f3}",newpop[i, 0]); Population[1, i].Value = string.Format("{0:f3}", newpop[i, 1]); Population[2, i].Value = string.Format("{0:f3}", Fun(newpop[i, 0], newpop[i, 1])); Population.Rows[i].HeaderCell.Value = String.Format("{0}", i + 1); break; case 4: Population[0, i].Value = string.Format("{0:f4}",newpop[i, 0]); Population[1, i].Value = string.Format("{0:f4}", newpop[i, 1]); Population[2, i].Value = string.Format("{0:f4}", Fun(newpop[i, 0], newpop[i, 1])); Population.Rows[i].HeaderCell.Value = String.Format("{0}", i + 1); break; case 5: Population[0, i].Value = string.Format("{0:f5}",newpop[i, 0]); Population[1, i].Value = string.Format("{0:f5}", newpop[i, 1]); Population[2, i].Value = string.Format("{0:f5}",Fun(newpop[i, 0], newpop[i, 1])); Population.Rows[i].HeaderCell.Value = String.Format("{0}", i + 1); break; case 6: Population[0, i].Value = string.Format("{0:f6}",newpop[i, 0]); Population[1, i].Value = string.Format("{0:f6}", newpop[i, 1]); Population[2, i].Value = string.Format("{0:f6}",Fun(newpop[i, 0], newpop[i, 1])); Population.Rows[i].HeaderCell.Value = String.Format("{0}", i + 1); break; case 7: Population[0, i].Value = string.Format("{0:f7}",newpop[i, 0]); Population[1, i].Value = string.Format("{0:f7}", newpop[i, 1]); Population[2, i].Value = string.Format("{0:f7}",Fun(newpop[i, 0], newpop[i, 1])); Population.Rows[i].HeaderCell.Value = String.Format("{0}", i + 1); break; case 8: Population[0, i].Value = string.Format("{0:f8}",newpop[i, 0]); Population[1, i].Value = string.Format("{0:f8}", newpop[i, 1]); Population[2, i].Value = string.Format("{0:f8}", Fun(newpop[i, 0], newpop[i, 1])); Population.Rows[i].HeaderCell.Value = String.Format("{0}", i + 1); break; case 9: Population[0, i].Value = string.Format("{0:f9}",newpop[i, 0]); Population[1, i].Value = string.Format("{0:f9}", newpop[i, 1]); Population[2, i].Value = string.Format("{0:f9}", Fun(newpop[i, 0], newpop[i, 1])); Population.Rows[i].HeaderCell.Value = String.Format("{0}", i + 1); break; case 10: Population[0, i].Value = string.Format("{0:f10}",newpop[i, 0]); Population[1, i].Value = string.Format("{0:f10}", newpop[i, 1]); Population[2, i].Value = string.Format("{0:f10}", Fun(newpop[i, 0], newpop[i, 1])); Population.Rows[i].HeaderCell.Value = String.Format("{0}", i + 1); break; case 11: Population[0, i].Value = string.Format("{0:f11}",newpop[i, 0]); Population[1, i].Value = string.Format("{0:f11}", newpop[i, 1]); Population[2, i].Value = string.Format("{0:f11}", Fun(newpop[i, 0], newpop[i, 1])); Population.Rows[i].HeaderCell.Value = String.Format("{0}", i + 1); break; case 12: Population[0, i].Value = string.Format("{0:f12}",newpop[i, 0]); Population[1, i].Value = string.Format("{0:f12}", newpop[i, 1]); Population[2, i].Value = string.Format("{0:f12}", Fun(newpop[i, 0], newpop[i, 1])); Population.Rows[i].HeaderCell.Value = String.Format("{0}", i + 1); break; case 13: Population[0, i].Value = string.Format("{0:f13}",newpop[i, 0]); Population[1, i].Value = string.Format("{0:f13}", newpop[i, 1]); Population[2, i].Value = string.Format("{0:f13}", Fun(newpop[i, 0], newpop[i, 1])); Population.Rows[i].HeaderCell.Value = String.Format("{0}", i + 1); break; case 14: Population[0, i].Value = string.Format("{0:f14}",newpop[i, 0]); Population[1, i].Value = string.Format("{0:f14}", newpop[i, 1]); Population[2, i].Value = string.Format("{0:f14}", Fun(newpop[i, 0], newpop[i, 1])); Population.Rows[i].HeaderCell.Value = String.Format("{0}", i + 1); break; case 15: Population[0, i].Value = string.Format("{0:f15}",newpop[i, 0]); Population[1, i].Value = string.Format("{0:f15}", newpop[i, 1]); Population[2, i].Value = string.Format("{0:f15}", Fun(newpop[i, 0], newpop[i, 1])); Population.Rows[i].HeaderCell.Value = String.Format("{0}", i + 1); break; } } }