Пример #1
0
        private void button3_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 1000; i++)
            {
                Point    P = new Point(Constatnts.GetDouble(0, 7), Constatnts.GetDouble(1, 5));
                double[] x = new double[] { P.X, P.Y };
                neuro.SetX(x);
                var res = neuro.GetOut();

                DataPoint dp = new DataPoint(P.X, P.Y);
                if (res[0] > 0.9)
                {
                    dp.Color = System.Drawing.Color.Red;
                }
                else if (res[1] > 0.9)
                {
                    dp.Color = System.Drawing.Color.Green;
                }
                else if (res[2] > 0.9)
                {
                    dp.Color = System.Drawing.Color.Blue;
                }
                else
                {
                    dp.Color = System.Drawing.Color.Orange;
                }

                chart1.Series[1].Points.Add(dp);
            }
            this.Refresh();
        }
Пример #2
0
        private void button1_Click(object sender, EventArgs e)
        {
            int first  = 30;
            int second = 3;

            neuro = new RBFNeuroSystem(first * 3, second);
            int             i  = 0;
            List <double[]> ls = new List <double[]>();

            for (; i < first; i++)
            {
                var nr = (RBFNeuron)neuro.Neurons[0][i];
                nr.X = new double[] { Constatnts.GetDouble(1, 2), Constatnts.GetDouble(2, 4) };
                ls.Add(nr.X);
            }

            for ( ; i < 2 * first; i++)
            {
                var nr = (RBFNeuron)neuro.Neurons[0][i];
                nr.X = new double[] { Constatnts.GetDouble(3, 4), Constatnts.GetDouble(2, 4) };
                ls.Add(nr.X);
            }

            for ( ; i < 3 * first; i++)
            {
                var nr = (RBFNeuron)neuro.Neurons[0][i];
                nr.X = new double[] { Constatnts.GetDouble(5, 6), Constatnts.GetDouble(2, 4) };
                ls.Add(nr.X);
            }

            int    counter = 1;
            double E       = double.MaxValue;

            while (E > Constatnts._Epselon)
            {
                for (int j = 0; j < counter; j++)
                {
                    while (E > Constatnts._Epselon)
                    {
                        neuro.Teach(ls[j], getT(new Point(ls[j][0], ls[j][1])));
                        E = Constatnts.GetE(neuro.GetOut(), getT(new Point(ls[j][0], ls[j][1])));
                    }
                    E = double.MaxValue;
                }
                if (counter != ls.Count)
                {
                    counter++;
                    E = double.MaxValue;
                }
                else
                {
                    E = double.MinValue;
                }
            }



            MessageBox.Show("Done!");
        }
Пример #3
0
        private void button1_Click(object sender, EventArgs e)
        {
            int countOfWindow = int.Parse(textBox5.Text);
            var levels        = new int[] { int.Parse(textBox4.Text), 1 };

            neuro = new NeuroSystem(levels, countOfWindow);


            var data = Constatnts.GetArray(double.Parse(textBox1.Text), double.Parse(textBox2.Text), double.Parse(textBox3.Text));


            double max = double.MinValue;
            double min = double.MaxValue;

            for (int i = 0; i < data.Length; i++)
            {
                max = Math.Max(max, data[i].Y);
                min = Math.Min(min, data[i].Y);
            }

            Constatnts._XMax = max;
            Constatnts._XMin = min;

            double E = double.MaxValue;



            for (int index = countOfWindow; index < data.Length - 2; index++)
            {
                for (int i = countOfWindow; i <= index; i++)
                {
                    double[] arr = new double[countOfWindow];
                    int      k   = 0;

                    for (int j = i - countOfWindow; j < i; j++)
                    {
                        arr[k] = Constatnts.TransformerAlong(data[j].Y);
                        k++;
                    }

                    neuro.SetX(arr);

                    double d = (Constatnts.TransformerAlong(data[i + 1].Y));
                    double s = neuro.GetResult();
                    E = Math.Pow(d - s, 2);

                    while (E > Constatnts._Epselon)
                    {
                        neuro.Teach(d, s);
                        s = neuro.GetResult();
                        E = Math.Pow(d - s, 2);
                    }
                }
            }


            MessageBox.Show("Done!");
        }
Пример #4
0
        private void button3_Click(object sender, EventArgs e)
        {
            Clear();

            var res = Constatnts.GetArray(double.Parse(textBox1.Text), double.Parse(textBox2.Text), double.Parse(textBox3.Text));

            foreach (var elem in res)
            {
                chart1.Series[0].Points.AddXY(elem.X, elem.Y);
                chart1.Series[2].Points.AddXY(elem.X, elem.Y);
            }

            int    cp        = int.Parse(textBox5.Text);
            double step      = double.Parse(textBox3.Text);
            double lastPoint = double.Parse(textBox2.Text) - (cp * step);
            var    data      = Constatnts.GetArray(double.Parse(textBox1.Text), double.Parse(textBox2.Text), double.Parse(textBox3.Text));
            var    ls        = new List <double>();

            for (int i = data.Length - 2 * cp; i < data.Length - cp; i++)
            {
                ls.Add(Constatnts.TransformerAlong(data[i].Y));
            }
            // lastPoint += step;
            int index = data.Length - cp;

            for (int i = 0; i < cp; i++)
            {
                neuro.SetX(ls.ToArray());
                double s    = neuro.GetResult();
                double real = Constatnts.TransformerBack(s);
                chart1.Series[1].Points.AddXY(lastPoint, real);
                chart1.Series[3].Points.AddXY(lastPoint, real);
                ls.Add(s);
                ls.RemoveAt(0);
                lastPoint += step;
                dataGridView1.Rows.Add(i + 1, data[index + i].Y.ToString("N4"), real.ToString("N4"), (Constatnts.GetPercError(real, data[index + i].Y) * 100).ToString("N2"));
            }
            this.Refresh();
        }
Пример #5
0
 public double GetOUT(double s)
 {
     return(Constatnts.ActivationFunk(s));
 }