示例#1
0
文件: Form1.cs 项目: Xobr/Neuro_Labs
        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
文件: Form1.cs 项目: Xobr/Neuro_Labs
        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!");
        }