コード例 #1
0
        private void RemoverNós(IRede rede, double probabilidadeRemoção)
        {
            var aleatório    = new Random();
            var nósRemovidos = new List <string>();
            var arquivos     = rede.RetornarArquivosRede();

            using (var transferência = new TransferirRedeBiblioteca(arquivos.ListaNós))
            {
                foreach (var item in transferência)
                {
                    var valor = aleatório.NextDouble();
                    if (valor <= probabilidadeRemoção)
                    {
                        var nó = item.Split(" ", 3, StringSplitOptions.RemoveEmptyEntries)[0];
                        nósRemovidos.Add(nó);
                        continue;
                    }

                    transferência.Escrever();
                }
            }

            using (var transferência = new TransferirRedeBiblioteca(arquivos.ListaArestas))
            {
                foreach (var item in transferência)
                {
                    var deletar = false;
                    foreach (var nó in nósRemovidos)
                    {
                        var regex1 = new Regex($"^[{nó}][ ][0-9]");
                        var regex2 = new Regex($"^[0-9][ ][{nó}]");

                        var teste1 = regex1.IsMatch(item);
                        var teste2 = regex2.IsMatch(item);

                        if (teste1 || teste2)
                        {
                            deletar = true;
                            break;
                        }
                    }

                    if (deletar)
                    {
                        continue;
                    }

                    transferência.Escrever();
                }
            }
        }
コード例 #2
0
        public AnáliseDAO AnalisarRede(IRede rede)
        {
            var probabilidadesRemoção = Linspace(0, 1, _quantidadePontos);
            var importânciaTotal      = new double[_quantidadePontos];
            var latênciaEfetiva       = new double[_quantidadePontos];

            for (int i = 0; i < _quantidadePontos; i++)
            {
                var probabilidade = probabilidadesRemoção[i];
                var dados         = rede.AnalisarEmMemória(probabilidade);
                importânciaTotal[i] = dados.Importância;
                latênciaEfetiva[i]  = dados.Latência;
                Console.WriteLine($"Analisado {i+1} de {_quantidadePontos}");
            }

            return(new AnáliseDAO(importânciaTotal, latênciaEfetiva, probabilidadesRemoção, _quantidadePontos));
        }
コード例 #3
0
        public static void TestarClone()
        {
            var pngOriginal = "/codigo/png/original.png";
            var pngClone    = "/codigo/png/clone.png";

            using (IRede rede = new DebugRede())
            {
                rede.CriarRede();
                using (IRede clone = rede.Clone() as DebugRede)
                {
                    rede.PlotarRede(pngOriginal);
                    clone.PlotarRede(pngClone);
                }
            }

            File.Delete(pngClone);
            File.Delete(pngOriginal);
        }
コード例 #4
0
        public AnáliseDAO AnalisarRede(IRede rede)
        {
            var probabilidadesRemoção = Linspace(0, 1, _quantidadePontos);
            var importânciaTotal      = new double[_quantidadePontos];
            var latênciaEfetiva       = new double[_quantidadePontos];

            for (int i = 0; i < _quantidadePontos; i++)
            {
                var probabilidade = probabilidadesRemoção[i];
                using (IRede clone = rede.Clone() as IRede)
                {
                    RemoverNós(clone, probabilidade);
                    clone.Reanalisar();
                    var dados = clone.RetornarMétricasRede();
                    importânciaTotal[i] = dados.Importância;
                    latênciaEfetiva[i]  = dados.Latência;
                }
                Console.WriteLine($"Analisado {i+1} de {_quantidadePontos}");
            }

            return(new AnáliseDAO(importânciaTotal, latênciaEfetiva, probabilidadesRemoção, _quantidadePontos));
        }