Example #1
0
 public Entrada treinar(Entrada entrada, double txAprendizado, double desejado, int classe, double pesoBias, double bias)
 {
     entrada.Peso = entrada.Peso + (txAprendizado * (desejado - classe) * entrada.Valor);
     pesoBias = (pesoBias + txAprendizado * (desejado - classe) * bias);
     this.Peso = entrada.Peso;
     return entrada;
 }
Example #2
0
 public int Perceptron(Entrada[] entrada, double bias, double pesoBias)
 {
     double soma = 0;
     int classe;
     //soma
     foreach (Entrada x in entrada)
     {
         soma += x.Valor * x.Peso;
     }
     soma += bias * pesoBias;
     if (soma >= 0)
     {
         classe = 1;
     }
     else
     {
         classe = -1;
     }
     return classe;
 }
Example #3
0
        //Sobreescrever
        public int Perceptron(Entrada[] entrada, double bias, double pesoBias, double desejado, int limite)
        {
            double soma = 0;
            int classe;
            bool erro = true;
            int count = 0;
            //soma
            do{
                erro = false;
                foreach (Entrada x in entrada)
                {
                    soma += x.Valor * x.Peso;
                }
                soma += bias * pesoBias;
                if (soma >= limite)
                {
                    classe = 1;
                }
                else
                {
                    classe = -1;
                }
                if (classe != desejado)
                {
                    erro = true;
                    foreach (Entrada x in entrada)
                    {
                        x.treinar(x, 0.5, desejado, classe, pesoBias, bias);
                    }

                }
                count++;
            } while (erro == true || count < 3000);

            return classe;
        }
Example #4
0
        static void Main(string[] args)
        {
            //Random rdn = new Random();
            //Entrada x1 = new Entrada();
            //Entrada x2 = new Entrada();

            ////valores
            //x1.Valor = 0.0462;
            //x2.Valor = 0.0548;

            ////bias
            //double bias = 1;
            //double pesoBias = rdn.NextDouble();
            //Console.WriteLine(x1.Peso);


            //Entrada[] x = new Entrada[2] { x1, x2 };
            //Rede redeP = new Rede();
            //int classe = redeP.Perceptron(x, bias, pesoBias, -1, 0);
            //if(classe == 1){
            //    Console.WriteLine("Neuronio 1");
            //} else {
            //    Console.WriteLine("Neuronio 2");
            //}

            //Entrada y1 = new Entrada();
            //Entrada y2 = new Entrada();

            //y1.Valor = 0.0665;
            //y2.Valor = 0.0572;

            //y2.Peso = x1.Peso;
            //y2.Peso = x2.Peso;


            //Entrada[] y = new Entrada[2] { y1, y2 };
            //Rede redeQ = new Rede();
            //int classe2 = redeP.Perceptron(y, bias, pesoBias, 1, 0);
            //if (classe2 == 1)
            //{
            //    Console.WriteLine("Neuronio 1");
            //}
            //else
            //{
            //    Console.WriteLine("Neuronio 2");
            //}


            //Entrada z1 = new Entrada();
            //Entrada z2 = new Entrada();

            //z1.Valor = 0.0665;
            //z2.Valor = 0.0572;

            //y2.Peso = x1.Peso;
            //y2.Peso = x2.Peso;


            //Entrada[] z = new Entrada[2] { z1, z2 };
            //Rede redeU = new Rede();
            //int classe3 = redeP.Perceptron(y, bias, pesoBias);
            //if (classe3 == 1)
            //{
            //    Console.WriteLine("Neuronio 1");
            //}
            //else
            //{
            //    Console.WriteLine("Neuronio 2");
            //}

            //Entrada a1 = new Entrada();
            //Entrada a2 = new Entrada();

            //a1.Valor = 0.1;
            //a1.Valor = 0.1;

            //a1.Peso = x1.Peso;
            //a2.Peso = x2.Peso;

            //Entrada[] a = new Entrada[2] { a1, a2 };
            //int classeA = redeP.Perceptron(a, bias, pesoBias);
            //if (classeA == 1)
            //{
            //    Console.WriteLine("Neuronio 1");
            //}
            //else
            //{
            //    Console.WriteLine("Neuronio 2");
            //}

            Entrada x1 = new Entrada();
            Entrada x2 = new Entrada();
            Entrada x3 = new Entrada();

            x1.Valor = 0;
            x2.Valor = 0;
            x3.Valor = 1;

            x1.Peso = 0.4;
            x2.Peso = -0.6;
            x3.Peso = 0.6;

            double bias           = -1;
            double pesoBias       = 0.5;
            double txAprendizagem = 0.5;

            string classes;

            Entrada[] x = new Entrada[3] {
                x1, x2, x3
            };
            Rede rede   = new Rede();
            int  classe = rede.Perceptron(x, bias, pesoBias, -1, 0);

            Console.WriteLine("Padrão: " + x1.Valor + " " + x2.Valor + " " + x3.Valor + " | " + classe);

            x1.Valor = 1;
            x2.Valor = 1;
            x3.Valor = 0;
            classe   = rede.Perceptron(x, bias, pesoBias, 1, 0);

            Console.WriteLine("Padrão: " + x1.Valor + " " + x2.Valor + " " + x3.Valor + " | " + classe);

            x1.Valor = 1;
            x2.Valor = 1;
            x3.Valor = 1;
            classe   = rede.Perceptron(x, bias, pesoBias);
            if (classe == 1)
            {
                classes = "Classe 1";
            }
            else
            {
                classes = "Classe 0";
            }
            Console.WriteLine("Padrão: " + x1.Valor + " " + x2.Valor + " " + x3.Valor + " | " + classes);

            x1.Valor = 0;
            x2.Valor = 0;
            x3.Valor = 0;
            classe   = rede.Perceptron(x, bias, pesoBias);
            if (classe == 1)
            {
                classes = "Classe 1";
            }
            else
            {
                classes = "Classe 0";
            }
            Console.WriteLine("Padrão: " + x1.Valor + " " + x2.Valor + " " + x3.Valor + " | " + classes);

            x1.Valor = 1;
            x2.Valor = 0;
            x3.Valor = 0;
            classe   = rede.Perceptron(x, bias, pesoBias);
            if (classe == 1)
            {
                classes = "Classe 1";
            }
            else
            {
                classes = "Classe 0";
            }
            Console.WriteLine("Padrão: " + x1.Valor + " " + x2.Valor + " " + x3.Valor + " | " + classes);

            x1.Valor = 0;
            x2.Valor = 1;
            x3.Valor = 1;
            classe   = rede.Perceptron(x, bias, pesoBias);
            if (classe == 1)
            {
                classes = "Classe 1";
            }
            else
            {
                classes = "Classe 0";
            }
            Console.WriteLine("Padrão: " + x1.Valor + " " + x2.Valor + " " + x3.Valor + " | " + classes);

            Console.Read();
        }
Example #5
0
        static void Main(string[] args)
        {
            //Random rdn = new Random();
            //Entrada x1 = new Entrada();
            //Entrada x2 = new Entrada();

            ////valores
            //x1.Valor = 0.0462;
            //x2.Valor = 0.0548;

            ////bias
            //double bias = 1;
            //double pesoBias = rdn.NextDouble();
            //Console.WriteLine(x1.Peso);

            //Entrada[] x = new Entrada[2] { x1, x2 };
            //Rede redeP = new Rede();
            //int classe = redeP.Perceptron(x, bias, pesoBias, -1, 0);
            //if(classe == 1){
            //    Console.WriteLine("Neuronio 1");
            //} else {
            //    Console.WriteLine("Neuronio 2");
            //}

            //Entrada y1 = new Entrada();
            //Entrada y2 = new Entrada();

            //y1.Valor = 0.0665;
            //y2.Valor = 0.0572;

            //y2.Peso = x1.Peso;
            //y2.Peso = x2.Peso;

            //Entrada[] y = new Entrada[2] { y1, y2 };
            //Rede redeQ = new Rede();
            //int classe2 = redeP.Perceptron(y, bias, pesoBias, 1, 0);
            //if (classe2 == 1)
            //{
            //    Console.WriteLine("Neuronio 1");
            //}
            //else
            //{
            //    Console.WriteLine("Neuronio 2");
            //}

            //Entrada z1 = new Entrada();
            //Entrada z2 = new Entrada();

            //z1.Valor = 0.0665;
            //z2.Valor = 0.0572;

            //y2.Peso = x1.Peso;
            //y2.Peso = x2.Peso;

            //Entrada[] z = new Entrada[2] { z1, z2 };
            //Rede redeU = new Rede();
            //int classe3 = redeP.Perceptron(y, bias, pesoBias);
            //if (classe3 == 1)
            //{
            //    Console.WriteLine("Neuronio 1");
            //}
            //else
            //{
            //    Console.WriteLine("Neuronio 2");
            //}

            //Entrada a1 = new Entrada();
            //Entrada a2 = new Entrada();

            //a1.Valor = 0.1;
            //a1.Valor = 0.1;

            //a1.Peso = x1.Peso;
            //a2.Peso = x2.Peso;

            //Entrada[] a = new Entrada[2] { a1, a2 };
            //int classeA = redeP.Perceptron(a, bias, pesoBias);
            //if (classeA == 1)
            //{
            //    Console.WriteLine("Neuronio 1");
            //}
            //else
            //{
            //    Console.WriteLine("Neuronio 2");
            //}

            Entrada x1 = new Entrada();
            Entrada x2 = new Entrada();
            Entrada x3 = new Entrada();

            x1.Valor = 0;
            x2.Valor = 0;
            x3.Valor = 1;

            x1.Peso = 0.4;
            x2.Peso = -0.6;
            x3.Peso = 0.6;

            double bias = -1;
            double pesoBias = 0.5;
            double txAprendizagem = 0.5;

            string classes;

            Entrada[] x = new Entrada[3] { x1, x2, x3 };
            Rede rede = new Rede();
            int classe = rede.Perceptron(x, bias, pesoBias, -1, 0);

            Console.WriteLine("Padrão: " + x1.Valor + " " + x2.Valor + " " + x3.Valor + " | "+ classe);

            x1.Valor = 1;
            x2.Valor = 1;
            x3.Valor = 0;
            classe = rede.Perceptron(x, bias, pesoBias, 1, 0);

            Console.WriteLine("Padrão: " + x1.Valor + " " + x2.Valor + " " + x3.Valor + " | " + classe);

            x1.Valor = 1;
            x2.Valor = 1;
            x3.Valor = 1;
            classe = rede.Perceptron(x, bias, pesoBias);
            if (classe == 1)
            {
                classes = "Classe 1";
            }
            else
            {
                classes = "Classe 0";
            }
            Console.WriteLine("Padrão: " + x1.Valor + " " + x2.Valor + " " + x3.Valor + " | " + classes);

            x1.Valor = 0;
            x2.Valor = 0;
            x3.Valor = 0;
            classe = rede.Perceptron(x, bias, pesoBias);
            if (classe == 1)
            {
                classes = "Classe 1";
            }
            else
            {
                classes = "Classe 0";
            }
            Console.WriteLine("Padrão: " + x1.Valor + " " + x2.Valor + " " + x3.Valor + " | " + classes);

            x1.Valor = 1;
            x2.Valor = 0;
            x3.Valor = 0;
            classe = rede.Perceptron(x, bias, pesoBias);
            if (classe == 1)
            {
                classes = "Classe 1";
            }
            else
            {
                classes = "Classe 0";
            }
            Console.WriteLine("Padrão: " + x1.Valor + " " + x2.Valor + " " + x3.Valor + " | " + classes);

            x1.Valor = 0;
            x2.Valor = 1;
            x3.Valor = 1;
            classe = rede.Perceptron(x, bias, pesoBias);
            if (classe == 1)
            {
                classes = "Classe 1";
            }
            else
            {
                classes = "Classe 0";
            }
            Console.WriteLine("Padrão: " + x1.Valor + " " + x2.Valor + " " + x3.Valor + " | " + classes);

            Console.Read();
        }