Ejemplo n.º 1
0
        private void AdicionaCabeca(Agente Agente)
        {
            ICollection <Tuple <Cabecario, double> > Add = Agente.ProcuraCabeca();

            if (Add != null)
            {
                lock (this)
                {
                    Cabecas.AddRange(Add);
                }
            }
            ;
        }
Ejemplo n.º 2
0
        private void Montar(Regra Regra)
        {
            BancoDeDados db = new BancoDeDados();

            Regra = db.Regras.Where(a => a.ID == Regra.ID).SingleOrDefault();


            double confianca = 1;

            bool resultado = Cabecas.Select(a => a.Item1.ID).Contains(Regra.Se.ID);

            if (resultado)
            {
                confianca = Cabecas.Where(a => a.Item1.ID == Regra.Se.ID).SingleOrDefault().Item2;
            }

            int cont = Regra.E.Count + Regra.Ou.Count;

            if (cont == 0)
            {
                if (resultado)
                {
                    Aplicar(Regra, confianca);
                    return;
                }
                else
                {
                    return;
                }
            }
            ;


            for (int i = 1; i <= cont; i++)
            {
                try
                {
                    ListaE temp = Regra.E.Where(a => a.Pos == i).SingleOrDefault();
                    resultado = resultado && Cabecas.Select(a => a.Item1.ID).Contains(temp.Cabeca.ID);
                    if (resultado)
                    {
                        confianca *= Cabecas.Where(a => a.Item1.ID == temp.Cabeca.ID).SingleOrDefault().Item2;
                    }
                }
                catch (Exception)
                {
                }

                try
                {
                    ListaOU temp = Regra.Ou.Where(a => a.Pos == i).SingleOrDefault();
                    resultado = resultado || Cabecas.Select(a => a.Item1.ID).Contains(temp.Cabeca.ID);
                    double aux = Cabecas.Where(a => a.Item1.ID == temp.Cabeca.ID).SingleOrDefault().Item2;
                    if (resultado)
                    {
                        confianca = (confianca + aux) - (confianca * aux);
                    }
                }
                catch (Exception)
                {
                }
            }

            if (resultado)
            {
                Aplicar(Regra, confianca);
            }
        }