예제 #1
0
 public GerenciadorSinaisDinamicos(IRepositorio<Sinal> repositorio,
     ICaracteristicasSinalEstaticoComTipoFrame caracteristicas,
     IAlgoritmoClassificacaoSinais algoritmoClassificacaoSinaisDinamicos,
     IAlgoritmoClassificacaoSinais algoritmoClassificacaoSinaisEstaticos)
     : base(repositorio, algoritmoClassificacaoSinaisDinamicos)
 {
     this.caracteristicas = caracteristicas;
     this.algoritmoClassificacaoSinaisEstaticos = algoritmoClassificacaoSinaisEstaticos;
     this.repositorio = repositorio;
 }
예제 #2
0
        private void ExecutarTestesDeReconhecimentoComRelatorio(IAlgoritmoClassificacaoSinais algoritmo, IRepositorio<Sinal> repositorioTestes, IRepositorio<Sinal> repositorioTreinamento)
        {
            var relatorio = new Relatorio();
            for (var i = 0; i < repositorioTestes.Quantidade; i++)
            {
                var sinal = repositorioTestes.BuscarPorIndice(i);
                sinal.IdNoAlgoritmo = repositorioTreinamento
                    .First(o => o.Descricao == sinal.Descricao)
                    .IdNoAlgoritmo;

                for (var j = 0; j < sinal.Amostras.Count; j++)
                {
                    var stopwatch = Stopwatch.StartNew();
                    var resultado = algoritmo.Classificar(sinal.Amostras[j]);
                    stopwatch.Stop();
                    if (resultado == sinal.IdNoAlgoritmo)
                        relatorio.AdicionarAcerto(sinal, stopwatch.ElapsedMilliseconds);
                    else
                        relatorio.AdicionarErro(sinal, repositorioTreinamento.BuscarPorIndice(resultado), j, stopwatch.ElapsedMilliseconds);
                }
            }

            relatorio.Imprimir();
        }
예제 #3
0
        private void ExecutarTestesDeReconhecimentoFramesComRelatorio(IAlgoritmoClassificacaoSinais algoritmo, IRepositorio<Sinal> repositorioTestes, IRepositorio<Sinal> repositorioTreinamento)
        {
            var caracteristicas = caracteristicasFactory.CriarGeradorDeCaracteristicasDeSinalEstaticoComTipoFrame();
            var relatorio = new Relatorio();
            for (var i = 0; i < repositorioTestes.Quantidade; i++)
            {
                var sinal = repositorioTestes.BuscarPorIndice(i);
                sinal.IdNoAlgoritmo = repositorioTreinamento
                    .First(o => o.Descricao == sinal.Descricao)
                    .IdNoAlgoritmo;

                for (var j = 0; j < sinal.Amostras.Count; j++)
                {
                    caracteristicas.PrimeiroFrame = null;
                    caracteristicas.TipoFrame = TipoFrame.Primeiro;
                    var stopwatch = Stopwatch.StartNew();
                    var resultado = algoritmo.Classificar(new[] { sinal.Amostras[j].First() });
                    stopwatch.Stop();
                    if (resultado == sinal.IdNoAlgoritmo)
                        relatorio.AdicionarAcerto(sinal, stopwatch.ElapsedMilliseconds, " - PRIMEIRO FRAME");
                    else
                    {
                        var indice = resultado >= repositorioTestes.Quantidade
                            ? resultado - repositorioTestes.Quantidade
                            : resultado;
                        relatorio.AdicionarErro(sinal, repositorioTreinamento.BuscarPorIndice(indice), j, stopwatch.ElapsedMilliseconds, " - PRIMEIRO FRAME");
                        //var ddag = "";
                        //foreach (var t in ((Svm)algoritmo).path)
                        //    ddag += string.Format("[{0}, {1}]", t.Item1, t.Item2);
                        //relatorio.AdicionarObservacao(ddag);
                    }

                    caracteristicas.PrimeiroFrame = sinal.Amostras[j].First();
                    caracteristicas.TipoFrame = TipoFrame.Ultimo;
                    stopwatch = Stopwatch.StartNew();
                    resultado = algoritmo.Classificar(new[] { sinal.Amostras[j].Last() });
                    stopwatch.Stop();
                    if (resultado == sinal.IdNoAlgoritmo + repositorioTestes.Quantidade)
                        relatorio.AdicionarAcerto(sinal, stopwatch.ElapsedMilliseconds, " - ÚLTIMO FRAME");
                    else
                    {
                        var indice = resultado >= repositorioTestes.Quantidade
                            ? resultado - repositorioTestes.Quantidade
                            : resultado;
                        relatorio.AdicionarErro(sinal, repositorioTreinamento.BuscarPorIndice(indice), j, stopwatch.ElapsedMilliseconds, " - ÚLTIMO FRAME");
                        //var ddag = "";
                        //foreach (var t in ((Svm)algoritmo).path)
                        //    ddag += string.Format("[{0}, {1}]", t.Item1, t.Item2);
                        //relatorio.AdicionarObservacao(ddag);
                    }
                }
            }

            relatorio.Imprimir();
        }
예제 #4
0
 public GerenciadorSinaisEstaticos(IRepositorio<Sinal> repositorio, 
     IAlgoritmoClassificacaoSinais algoritmoClassificacaoSinaisEstaticos)
     : base(repositorio, algoritmoClassificacaoSinaisEstaticos)
 {
 }