Beispiel #1
0
 /// <summary>
 /// Constructor del formulario atencion. Insntacia sus atributos
 /// </summary>
 public FrmAtencion()
 {
     InitializeComponent();
     this.comercio     = new Comercio();
     this.simulador    = new Simulador(this.comercio);
     this.listaUltimos = new List <string>();
 }
        private void AvancarProximoEvento(Simulador Sim)
        {
            Equipamento eq = GerarEquipamento(Sim);

            Sim.Equipamentos.Add(eq);

            if (Sim.Tecnicos.Where(x => x.Ocupado == false).Count() > 0)
            {
                var evento = new ProcederDiagnostico()
                {
                    Equipamento = eq,
                    Funcionario = Sim.Tecnicos.Where(x => x.Ocupado == false).FirstOrDefault(),
                    TempoEntradaEmFilaEspera = Sim.Contador.TempoAtual,
                    TempoEntrada             = Sim.Contador.TempoAtual
                };

                evento.AtualizarEstadoFuncionario(Sim.Tecnicos.ToList(), true);
                Sim.ListaEventos.Add(evento);
            }
            else
            {
                var evento = new ProcederDiagnostico()
                {
                    Equipamento = eq,
                    TempoEntradaEmFilaEspera = Sim.Contador.TempoAtual
                };
                Sim.ListaEsperaProcederDiagnostico.Add(evento);
            }
        }
Beispiel #3
0
        public int CriarSimulador(ParametrosSimuladorCRM parametros, Oportunidade oportunidade)
        {
            var simulador = new Simulador
            {
                Descricao = "Simulador CRM"
            };

            if (parametros.Regime == Regime.LCL)
            {
                simulador.ValorCifCargaSolta = parametros.ValorCif;
                simulador.Regime             = "1"; //LCL
            }
            else
            {
                simulador.ValorCifConteiner = parametros.ValorCif;
                simulador.Regime            = "0"; //FCL
            }

            simulador.Periodos       = parametros.Periodos;
            simulador.TipoDocumento  = parametros.DocumentoId;
            simulador.VolumeM3       = parametros.VolumeM3;
            simulador.NumeroLotes    = parametros.NumeroLotes;
            simulador.GrupoAtracacao = parametros.GrupoAtracacaoId;
            simulador.Qtde20         = parametros.Qtde20;
            simulador.Qtde40         = parametros.Qtde40;
            simulador.CriadoPor      = _usuarioId;

            var simuladorId = _simuladorDAO.CadastrarSimulador(simulador);

            return(simuladorId);
        }
Beispiel #4
0
        /// <summary>
        /// Initializes the simulator variables and events
        /// </summary>
        public void Inicializador(ValoresEntradaViewModel viewModel)
        {
            if (viewModel.ColaboradoresArmazem.Any() &&
                viewModel.ColaboradoresLogistica.Any() &&
                viewModel.Testers.Any())
            {
                DateTime startTime = DateTime.Now;

                Sim = new Simulador(viewModel.Duracao,
                                    viewModel.NumEquipamentosSim,
                                    viewModel.AceitacaoOrcamentos,
                                    viewModel.TaxaReclamacao,
                                    viewModel.TaxaUrgencia,
                                    viewModel.Tecnicos,
                                    viewModel.ColaboradoresArmazem,
                                    viewModel.ColaboradoresLogistica,
                                    viewModel.Equipamentos,
                                    viewModel.Testers
                                    );

                //Adiciona primeiro evento à lista
                ReceberEquipamento evento = new ReceberEquipamento();
                evento.GerarEvento(Sim.ColaboradoresLogistica.ToList(), Sim.ListaEsperaReceberEquipamento, Sim.Contador, Sim.ListaEventos, Sim.NumEquipamentosSim);

                SnapshotsSim = new List <Simulador>
                {
                    Sim
                };

                RotinaPrincipal();

                Sim.Contador.TimeSpan = (DateTime.Now - startTime);
            }
        }
Beispiel #5
0
 public frmSegundoSistema()
 {
     InitializeComponent();
     simulador               = new Simulador();
     testers                 = new List <Tester>();
     txtSimulaciones.Text    = "30";
     txtSimulaciones.Enabled = false;
 }
Beispiel #6
0
        public ActionResult Index([Bind(Include = "Id, Descricao, Regime, NumeroLotes, ArmadorId, CifConteiner, CifCargaSolta, Margem, LocalAtracacaoId, GrupoAtracacaoId, VolumeM3, Periodos, TipoDocumentoId")] SimuladorViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                var simulador = new Simulador(
                    viewModel.Descricao,
                    viewModel.Regime,
                    viewModel.NumeroLotes,
                    viewModel.ArmadorId,
                    viewModel.CifConteiner,
                    viewModel.CifCargaSolta,
                    viewModel.Margem,
                    viewModel.LocalAtracacaoId,
                    viewModel.GrupoAtracacaoId,
                    viewModel.VolumeM3,
                    viewModel.Periodos,
                    viewModel.TipoDocumentoId,
                    User.ObterId());

                if (Validar(simulador))
                {
                    if (viewModel.Id == 0)
                    {
                        simulador.Id = _simuladorRepositorio.CadastrarSimulador(simulador);

                        TempData["Sucesso"]     = true;
                        TempData["Atualizacao"] = false;

                        GravarLogAuditoria(TipoLogAuditoria.INSERT, simulador);
                    }
                    else
                    {
                        simulador.Id = viewModel.Id;

                        _simuladorRepositorio.AtualizarSimulador(simulador);

                        TempData["Sucesso"]     = true;
                        TempData["Atualizacao"] = true;

                        GravarLogAuditoria(TipoLogAuditoria.UPDATE, simulador);
                    }

                    return(RedirectToAction("Index", "Simulador", new { id = simulador.Id }));
                }
            }

            PopularTiposDocumentos(viewModel);
            PopularLocaisAtracacao(viewModel);
            PopularGruposAtracacao(viewModel);
            PopularMargens(viewModel);
            PopularCargaConteiner(viewModel);
            PopularCargaSolta(viewModel);
            PopularSimuladores(viewModel);

            return(View(viewModel));
        }
Beispiel #7
0
        private void tsbSimulador_Click(object sender, EventArgs e)
        {
            Simulador formulario = new Simulador();

            formulario.MdiParent     = this;
            formulario.StartPosition = FormStartPosition.Manual;
            formulario.Location      = new Point((this.Width / 2) - (formulario.Width / 2), tbcMenuppal.Location.Y + altura);
            formulario.comitente     = comitente;
            formulario.Show();
        }
        public Simulador Run(Simulador Sim)
        {
            AtualizarContadorEvento(Sim.Contador, Sim.ListaEsperaReceberEquipamento.Count());
            //Coloca o funcionario como desocupado
            AtualizarEstadoFuncionario(Sim.ColaboradoresLogistica.ToList(), false);
            AvancarProximoEvento(Sim);
            GerarEvento(Sim.ColaboradoresLogistica.ToList(), Sim.ListaEsperaReceberEquipamento, Sim.Contador, Sim.ListaEventos, Sim.NumEquipamentosSim);

            return(Sim);
        }
Beispiel #9
0
 private void AvancarProximoEvento(Simulador Sim)
 {
     if (PassaTeste() == true)
     {
         AvancaEventoAposTeste(Sim.ColaboradoresLogistica.ToList(), Sim.ListaEsperaEmbalarEquipamentoParaEnvio, Sim.Contador, Sim.ListaEventos);
     }
     else
     {
         RetornaTesteParaDiagnostico(Sim.Tecnicos.ToList(), Sim.ListaEsperaProcederDiagnostico, Sim.Contador, Sim.ListaEventos);
     }
 }
        public Simulador Run(Simulador Sim)
        {
            AtualizarContadorEvento(Sim.Contador, Sim.ListaEsperaEmbalarEquipamentoParaEnvio.Count());
            AtualizarEstadoFuncionario(Sim.ColaboradoresLogistica.ToList(), false);
            if (Sim.ListaEsperaEmbalarEquipamentoParaEnvio.Count > 0)
            {
                GerarEvento(Sim.ColaboradoresLogistica.ToList(), Sim.ListaEsperaEmbalarEquipamentoParaEnvio, Sim.ListaEventos, Sim.Contador);
            }

            return(Sim);
        }
Beispiel #11
0
        public Simulador Run(Simulador Sim)
        {
            AtualizarContadorEvento(Sim.Contador, Sim.ListaEsperaExecutaTeste.Count());
            AtualizarEstadoFuncionario(Sim.Testers.ToList(), false);
            AvancarProximoEvento(Sim);
            if (Sim.ListaEsperaExecutaTeste.Count > 0)
            {
                GerarEvento(Sim.Testers.ToList(), Sim.ListaEsperaExecutaTeste, Sim.ListaEventos, Sim.Contador);
            }

            return(Sim);
        }
Beispiel #12
0
        public Simulador Run(Simulador Sim)
        {
            AtualizarContadorEvento(Sim.Contador, Sim.ListaEsperaProcederDiagnostico.Count());
            AtualizarEstadoFuncionario(Sim.Tecnicos.ToList(), false);
            AvancarProximoEvento(Sim);
            if (Sim.ListaEsperaProcederDiagnostico.Count() > 0)
            {
                GerarEvento(Sim.Tecnicos.ToList(), Sim.ListaEsperaProcederDiagnostico, Sim.ListaEventos, Sim.Contador);
            }

            return(Sim);
        }
Beispiel #13
0
        //Arranca com o simulador gerando os eventos do armazem
        public Simulador Run(Simulador Sim)
        {
            AtualizarContadorEvento(Sim.Contador, Sim.ListaEsperaFazPedidoRecebeMaterial.Count());
            AtualizarEstadoFuncionario(Sim.ColaboradoresArmazem.ToList(), false);
            AvancarProximoEvento(Sim.Tecnicos.ToList(), Sim.ListaEsperaProcederReparacao, Sim.Contador, Sim.ListaEventos);
            if (Sim.ListaEsperaFazPedidoRecebeMaterial.Count > 0)
            {
                GerarEvento(Sim.ColaboradoresArmazem.ToList(), Sim.ListaEsperaFazPedidoRecebeMaterial, Sim.ListaEventos, Sim.Contador);
            }

            return(Sim);
        }
Beispiel #14
0
        static void Main(string[] args)
        {
            int  valorLeitura;
            bool statusEquipamento;

            int idEquipamento;

            statusEquipamento = true;

            valorLeitura = Simulador.Leitura(statusEquipamento);
            DateTime date = Simulador.StatusSet(statusEquipamento);



            //var equipamento = new Leitura();

            //Thread oThread = new Thread();

            var           key        = "b14ca5898a4e4133bbce2ea2315a1916";
            string        name       = string.Empty;
            HubConnection connection = new HubConnectionBuilder().WithUrl("https://localhost:44339/ChatHub").Build();

            connection.Closed += async(error) => {
                await Task.Delay(new Random().Next(0, 5) * 1000);

                await connection.StartAsync();
            };

            connection.On <string>("Connected",
                                   (connectionid) => {
                Console.WriteLine($"Your connection id is:{connectionid}");
                Console.WriteLine("Enter your name");
            });
            connection.On <string, string>("ReceivedMesssage",
                                           (user, message) => {
                Console.WriteLine($"{user}:{message}");
            });

            try
            {
                connection.StartAsync();
            }catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            name = Console.ReadLine();
            Console.WriteLine($"Write your message {name}");
            replay(connection, name);
        }
Beispiel #15
0
        private Equipamento GerarEquipamento(Simulador Sim)
        {
            //TODO - É necessário entender este bocado de código de forma a perceber como aplicar a distribuicao
            //Acertar os valores aleatórios


            Equipamento eq = new Equipamento()
            {
                EquipamentoUrgencia           = gerarValorAleatorio(0, 100, this.Funcionario.Experiencia) < Sim.TaxaUrgencia ? true: false,
                EquipamentoReclamacao         = gerarValorAleatorio(0, 100, this.Funcionario.Experiencia) < Sim.TaxaReclamacao ? true : false,
                EquipamentoAceitacaoOrcamento = gerarValorAleatorio(0, 100, this.Funcionario.Experiencia) < Sim.AceitacaoOrcamentos ? true : false
            };

            return(eq);
        }
Beispiel #16
0
        static void Main(string[] args)
        {
            Stopwatch sw = new Stopwatch();

            sw.Start();
            var naturais = OutputNaturais.Processar(Simulador.ListarApenasMelhores());

            sw.Stop();

            naturais.EscreverEmArquivo("Naturais.txt");
            //naturais.EscreverEmConsole();

            Console.WriteLine($"Processado em {sw.Elapsed.ToString()}");
            Console.ReadLine();
        }
Beispiel #17
0
        private Simulador AvancarProximoEvento(Simulador Sim)
        {
            if (Equipamento.EquipamentoAceitacaoOrcamento == false)
            {
                GerarEmbalarEquipamentoParaEnvio(Sim.ColaboradoresLogistica.ToList(), Sim.ListaEsperaEmbalarEquipamentoParaEnvio, Sim.Contador, Sim.ListaEventos);
            }
            else if (Equipamento.TempoChegadaMaterial == TempoChegadaMaterial.Nenhum)
            {
                GerarProcederReparacao(Sim.Tecnicos.ToList(), Sim.ListaEsperaProcederReparacao, Sim.Contador, Sim.ListaEventos);
            }
            else
            {
                GerarFazPedidoRecebeMaterial(Sim.ColaboradoresArmazem.ToList(), Sim.ListaEsperaFazPedidoRecebeMaterial, Sim.Contador, Sim.ListaEventos);
            }

            return(Sim);
        }
Beispiel #18
0
        /*
         * Lee desde los archivos todas las instrucciones para luego enviarlas al simulador.
         */
        private void BotonIniciarSimulacion_Click(object sender, EventArgs e)
        {
            //Deshabilitar botones para no entorpecer la interfaz durante la simulación (TODO agregar botón para detenerla)
            BotonNuevaSimulacion.Enabled   = false;
            BotonAgregarArchivo.Enabled    = false;
            BotonIniciarSimulacion.Enabled = false;
            panelProcesadores.Visible      = true; //también hace este panel visible para ver los programas correr
            panelMemoria.Visible           = true; //también hace este panel visible para ver los programas correr

            //Lee todas las instrucciones y las guarda en una lista
            List <int>    instrucciones         = new List <int>(); //arreglo general que almacenará todas las instrucciones leídas
            List <int>    iniciosProgramas      = new List <int>(); //arreglo pequeño que almacena los índices en el anterior donde inicia cada programa
            List <string> nombresProgramas      = new List <string>();
            String        instruccionIndividual = "";               //usada para iterar por las líneas de los archivos

            foreach (String path in pathsArchivos)
            {
                nombresProgramas.Add(path.Substring(path.LastIndexOf('\\') + 1));
                iniciosProgramas.Add(instrucciones.Count);
                System.IO.TextReader lector = System.IO.File.OpenText(path); //abre el archivo para Leer sus líneas una por una
                while ((instruccionIndividual = lector.ReadLine()) != null)
                {
                    string[] partes = System.Text.RegularExpressions.Regex.Split(instruccionIndividual.Trim(), @"\s+");
                    if (partes.Length == 4)
                    {
                        for (short i = 0; i < 4; ++i)
                        {
                            instrucciones.Add(int.Parse(partes[i])); //agrega cada número entero al arreglo
                        }
                    }
                }
                lector.Close();
                cantidadProcesadores = (iniciosProgramas.Count > 2 ? 3 : iniciosProgramas.Count); //para no accesar grids inexistentes
            }

            //Enviar parámetros al simulador e iniciar la simulación
            Simulador simulador      = new Simulador(instrucciones, iniciosProgramas, nombresProgramas, this);
            Thread    hiloSimulacion = new Thread(simulador.EjecutarSimulacion);

            hiloSimulacion.Start();

            crearTuplasMemoriaCompartida(); //de una vez iniciarlizar las tuplas de la memoria compartida

            // NO hacer join al hiloSimulacion porque sino se detienen los eventos de la interfaz grafica
        }
Beispiel #19
0
        // tratando o evento de clique no botao
        private void button1_Click(object sender, EventArgs e)
        {
            bool calculando; //variavel que tem valor true se estamos calculando os dados da simulacao

            //botoes da tela nao podem mais ser clicaveis
            button1.Enabled      = false;
            comboBox1.Enabled    = false;
            radioButton1.Enabled = false;
            radioButton2.Enabled = false;

            _simulacao       = new Simulador(fila, utilizacao); // passando argumentos para o construtor do simulador
            calculando       = true;
            data_hora_comeco = DateTime.Now;
            //abrindo uma thread para comeco da simulacao
            Task.Factory.StartNew(() =>
            {
                this.Invoke((MethodInvoker) delegate
                {
                    label2.Text = "Calculando rodada: " + rodadas + "  Tempo comeco: " + data_hora_comeco.ToLongTimeString();
                });
                //iniciando a simulacao
                _simulacao.IniciarSimulacao();
                calculando = false;
            });

            //abrindo uma thread para interface e escrita na tela
            Task.Factory.StartNew(() =>
            {
                //avisando qual rodada esta sendo calculada enquanto estamos calculando as estatisticas
                while (calculando)
                {
                    this.Invoke((MethodInvoker) delegate
                    {
                        label2.Text = "Calculando rodada: " + rodadas + "  Tempo de começo: " + data_hora_comeco.ToLongTimeString();
                    });
                    rodadas = _simulacao.listaEstatisticas.Count;
                }

                //colocando os dados recolhidos por rodada nos graficos
                //observe que as medias sao as medias estimadas em cada rodada e nao a media da rodada
                this.Invoke((MethodInvoker) delegate
                {
                    chart1.Series["N° Pessoas"].Points.DataBindY(_simulacao.listaMediaPessoasRodada);

                    chart3.Series["Variância de Pessoas"].Points.DataBindY(_simulacao.listaVarianciaP);

                    chart1.Series["Tempo Médio"].Points.DataBindY(_simulacao.listaMediaTempoRodada);

                    chart3.Series["Variância do Tempo"].Points.DataBindY(_simulacao.listaVarianciaT);
                });
                data_hora_fim = DateTime.Now;

                //escrevendo dados finais na tela
                this.Invoke((MethodInvoker) delegate
                {
                    label2.Text = "Fim da simulação" + "  Tempo de começo: " + data_hora_comeco.ToLongTimeString() + "  Tempo final: " + data_hora_fim.ToLongTimeString();

                    label4.Text = "E: " + _simulacao.mediaPessoasFinal + "  V: " + _simulacao.varianciaPessoasFinal + "\n"
                                  + "L(E): " + _simulacao.icPessoasMedia.L + "  U(E): " + _simulacao.icPessoasMedia.U + "  P(E): " + _simulacao.icPessoasMedia.Precisao + "\n"
                                  + "L(V): " + _simulacao.icPessoasVariancia.L + "  U(V):  " + _simulacao.icPessoasVariancia.U + "  P(V): " + _simulacao.icPessoasVariancia.Precisao;

                    label5.Text = "E: " + _simulacao.tempoMedioFinal + "  V: " + _simulacao.varianciaTempoFinal + "\n"
                                  + "L(E): " + _simulacao.icMedia.L + "  U(E): " + _simulacao.icMedia.U + "  P(E): " + _simulacao.icMedia.Precisao + "\n"
                                  + "L(V): " + _simulacao.icVariancia.L + "  U(V):  " + _simulacao.icVariancia.U + "  P(V): " + _simulacao.icVariancia.Precisao;
                });
            });
        }
 /// <summary>
 /// Constructor que obtiene una instancia de comercio e inicializa el simulador.
 /// Asocia el manejador MostrarDatos al evento del simulador.
 /// </summary>
 /// <param name="comercio"></param>
 public FrmSimularAtencion(Comercio comercio) : this()
 {
     this.comercio               = comercio;
     this.simulador              = new Simulador(comercio);
     this.simulador.MostrarInfo += MostrarDatos;
 }
Beispiel #21
0
 private void btnIniciarSimulacion_Click(object sender, EventArgs e)
 {
     dataGridView1.Rows.Clear();
     setearCantidadDeEventos();
     Simulador.Simular(this);
 }
Beispiel #22
0
        static void Main(string[] args)

        {   //Creacion de las 3 cofiguraciones, con mapa y bitmons correspondientes.
            Johto config1 = new Johto(0, 3, 3);
            Johto config2 = new Johto(1, 4, 4);
            Johto config3 = new Johto(2, 5, 5);

            config1.crearMapa();
            config2.crearMapa();
            config3.crearMapa();
            config1.crearBitmons();
            config2.crearBitmons();
            config3.crearBitmons();

            string opcion1 = "[Opción 1] Dimesiones mapa: 3x3, Terrenos(N° Bitmons iniciales): \n\n";
            string opcion2 = "[Opción 2] Dimesiones mapa: 4x4, Terrenos(N° Bitmons iniciales): \n\n";
            string opcion3 = "[Opción 3] Dimesiones mapa: 5x5, Terrenos(N° Bitmons iniciales): \n\n";

            int contadorfila = 0;

            foreach (Terreno terreno in config1.mapaRegion)
            {
                opcion1 += terreno.getTipoAbrev() + "(" + terreno.numBitmons() + ") - ";
                contadorfila++;
                if (contadorfila % 3 == 0)
                {
                    opcion1  = opcion1.Substring(0, opcion1.Length - 2);
                    opcion1 += "\n";
                }
            }
            contadorfila = 0;
            foreach (Terreno terreno in config2.mapaRegion)
            {
                opcion2 += terreno.getTipoAbrev() + "(" + terreno.numBitmons() + ") - ";
                contadorfila++;
                if (contadorfila % 4 == 0)
                {
                    opcion2  = opcion2.Substring(0, opcion2.Length - 2);
                    opcion2 += "\n";
                }
            }
            contadorfila = 0;
            foreach (Terreno terreno in config3.mapaRegion)
            {
                opcion3 += terreno.getTipoAbrev() + "(" + terreno.numBitmons() + ") - ";
                contadorfila++;
                if (contadorfila % 5 == 0)
                {
                    opcion3  = opcion3.Substring(0, opcion3.Length - 2);
                    opcion3 += "\n";
                }
            }

            // Definicion de terrenos,region y mundoBitmons
            // Console.WindowWidth = 90;
            //Console.WindowHeight = 50;
            Console.SetWindowPosition(0, 0);

            MapasConsola mapas = new MapasConsola();

            Console.WriteLine(mapas.logo);
            Console.WriteLine("Configuraciones iniciales disponibles: \n");
            Console.WriteLine("\nTipos Terreno--> Ac=Acuatico , De=Desierto , Ni=Nieve , Ve=Vegetacion , Vo=Volcan \n\n");
            Console.WriteLine(opcion1);
            Console.WriteLine(opcion2);
            Console.WriteLine(opcion3);
            Console.WriteLine("Elija una opción: ");

            int dimensionMapa = Convert.ToInt32(Console.ReadLine());

            dimensionMapa = dimensionMapa - 1;

            Console.WriteLine("\nIngrese cuantos meses quiere simular: ");
            int mesesSimulacion = Convert.ToInt32(Console.ReadLine());


            Johto regionElegida;

            switch (dimensionMapa)
            {
            case 0:
                regionElegida = config1;
                break;

            case 1:
                regionElegida = config2;
                break;

            case 2:
                regionElegida = config3;
                break;

            default:
                regionElegida = config1;
                break;
            }


            Simulador simulador = new Simulador(dimensionMapa, regionElegida, mesesSimulacion);

            simulador.comenzarSimulacion();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Simulador Form = new Simulador();

            Form.Show();
        }
        public static void Main(string[] args)
        {
            Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;

            List <Fila> filas = new List <Fila>();

            string caminho;

            if (args.Length == 1)
            {
                caminho = args[0];
            }
            else
            {
                Console.WriteLine("Digite o caminho do arquivo desejado e pressione enter:");
                caminho = Console.ReadLine();
            }

            try
            {
                using (StreamReader leitor = new StreamReader(caminho))
                {
                    while (!leitor.EndOfStream)
                    {
                        string linha = leitor.ReadLine();

                        // TAMANHO_DA_FILA_INFINITA
                        if (linha.StartsWith("TAMANHO_DA_FILA_INFINITA"))
                        {
                            string valor = leitor.ReadLine().Trim();
                            Simulador.TAMANHO_DA_FILA_INFINITA = Convert.ToInt32(valor);
                        }
                        // FILAS
                        else if (linha.StartsWith("FILAS"))
                        {
                            int posicaoNoArray = 0;
                            while (true)
                            {
                                string[] valores = leitor.ReadLine().Split(' ');

                                // Linha em branco, passar para proxima entrada
                                if (valores.Length == 0 || "".Equals(valores[0]))
                                {
                                    break;
                                }
                                // Quatro valores, fila INFINITA que NAO possui entrada externa
                                else if (valores.Length == 4)
                                {
                                    var tAtendimento = new Intervalo(double.Parse(valores[2]), double.Parse(valores[3]));
                                    filas.Add(new Fila(valores[0], Convert.ToInt32(valores[1]), Simulador.TAMANHO_DA_FILA_INFINITA, tAtendimento));
                                }
                                // Cinco valores, fila que NAO possui entrada externa
                                else if (valores.Length == 5)
                                {
                                    var tAtendimento = new Intervalo(double.Parse(valores[3]), double.Parse(valores[4]));
                                    filas.Add(new Fila(valores[0], Convert.ToInt32(valores[1]), Convert.ToInt32(valores[2]), tAtendimento));
                                }
                                // Seis valores, fila INFINITA que possui entrada externa
                                else if (valores.Length == 6)
                                {
                                    var tChegada     = new Intervalo(double.Parse(valores[2]), double.Parse(valores[3]));
                                    var tAtendimento = new Intervalo(double.Parse(valores[4]), double.Parse(valores[5]));
                                    filas.Add(new Fila(valores[0], Convert.ToInt32(valores[1]), Simulador.TAMANHO_DA_FILA_INFINITA, tChegada, tAtendimento));
                                }
                                // Sete valores, fila que possui entrada externa
                                else if (valores.Length == 7)
                                {
                                    var tChegada     = new Intervalo(double.Parse(valores[3]), double.Parse(valores[4]));
                                    var tAtendimento = new Intervalo(double.Parse(valores[5]), double.Parse(valores[6]));
                                    filas.Add(new Fila(valores[0], Convert.ToInt32(valores[1]), Convert.ToInt32(valores[2]), tChegada, tAtendimento));
                                }
                                // Entrada inválida
                                else
                                {
                                    throw new ArgumentException("Ocorreu um erro ao processar o seu arquivo na tag FILAS.");
                                }
                                filas[filas.Count - 1].PosicaoNoArray = posicaoNoArray++;
                            }
                        }
                        // PRIMEIRA_CHEGADA
                        else if (linha.StartsWith("PRIMEIRA_CHEGADA"))
                        {
                            if (filas.Count == 0)
                            {
                                throw new ArgumentException("Você não definiu nenhum valor para a tag PRIMEIRA_CHEGADA.");
                            }
                            while (true)
                            {
                                string[] valores = leitor.ReadLine().Split(' ');

                                // Linha em branco, passar para proxima entrada
                                if (valores.Length == 0 || "".Equals(valores[0]))
                                {
                                    break;
                                }
                                // Dois valores, nome da fila e primeira chegada
                                else if (valores.Length == 2)
                                {
                                    foreach (Fila fila in filas)
                                    {
                                        if (valores[0].Equals(fila.Nome))
                                        {
                                            fila.PrimeiraChegada = double.Parse(valores[1]);
                                            break;
                                        }
                                    }
                                }
                                else
                                {
                                    throw new ArgumentException("Ocorreu um erro ao processar o seu arquivo na tag PRIMEIRA_CHEGADA.");
                                }
                            }
                        }
                        // REDE
                        else if (linha.StartsWith("REDE"))
                        {
                            if (filas.Count == 0)
                            {
                                throw new ArgumentException("Você não definiu nenhum valor para a tag REDE.");
                            }
                            while (true)
                            {
                                string[] valores = leitor.ReadLine().Split(' ');

                                if (valores.Length == 0 || "".Equals(valores[0]))
                                {
                                    break;
                                }
                                // Tres valores, nome fila origem, nome fila destino e probabilidade
                                else if (valores.Length == 3)
                                {
                                    foreach (Fila fila in filas)
                                    {
                                        if (valores[0].Equals(fila.Nome))
                                        {
                                            if (fila.AdicionaDestino(valores[1], double.Parse(valores[2])))
                                            {
                                                break;
                                            }
                                            else
                                            {
                                                throw new ArgumentException("Soma das probabilidades para " + valores[0] + " é maior que 1.0.");
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    throw new ArgumentException("Ocorreu um erro ao processar o seu arquivo na tag REDE.");
                                }
                            }
                        }
                        // NUMERO_DE_ALEATORIOS_POR_SEMENTE
                        else if (linha.StartsWith("NUMERO_DE_ALEATORIOS_POR_SEMENTE"))
                        {
                            string[] values = leitor.ReadLine().Split(' ');
                            Simulador.NUMEROS_ALEATORIOS = Convert.ToInt32(values[0]);
                        }
                        // NUMERO_DE_SEMENTES
                        else if (linha.StartsWith("NUMERO_DE_SEMENTES"))
                        {
                            string[] values = leitor.ReadLine().Split(' ');
                            Simulador.EXECUCOES = Convert.ToInt32(values[0]);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
                Console.ReadKey();
                return;
            }

            Simulador s = new Simulador();

            s.Executar(filas);
            Console.ReadKey();
        }
Beispiel #25
0
        private void btnAbrir_Click(object sender, EventArgs e)
        {
            pbarFilas.Value = 0;
            pbarHojas.Value = 0;
            using (OpenFileDialog ofd = new OpenFileDialog()
            {
                Filter = "Archivo de excel|*.xls", ValidateNames = true
            })
            {
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    // Variable global
                    Simulador.IniciarSimulador();

                    // Manejo archivo
                    FileStream fs = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read);
                    lectorExcel = ExcelReaderFactory.CreateBinaryReader(fs);
                    lectorExcel.IsFirstRowAsColumnNames = true;
                    excel = lectorExcel.AsDataSet();

                    //Escribir nombre del archivo
                    txtPath.Text = ofd.FileName;

                    int indiceHoja = 0;
                    foreach (DataTable dt in excel.Tables)
                    {
                        //Chequeo de las 4 tablas
                        switch (dt.TableName)
                        {
                        case "Maestro de productos":
                            cboxTablasMP.Checked = true;
                            pbarHojas.Value     += 25;
                            Simulador.MaestroProd.NumeroDeHoja = indiceHoja;
                            break;

                        case "Stock de referencia":
                            cboxTablasS.Checked = true;
                            pbarHojas.Value    += 25;
                            Simulador.MaestroProd.NumeroDeHojaStock = indiceHoja;
                            break;

                        case "Historial de transacciones":
                            cboxTablasH.Checked = true;
                            pbarHojas.Value    += 25;
                            Simulador.HistorialT.NumeroDeHoja = indiceHoja;
                            break;

                        case "Maestro de transacciones":
                            cboxTablasMT.Checked = true;
                            pbarHojas.Value     += 25;
                            Simulador.MaestroOpe.NumeroDeHoja = indiceHoja;
                            break;

                        default:
                            break;
                        }
                        indiceHoja++;
                    }

                    // Mapeo de hojas a clases
                    DataTable tablaMaestroProd, tablaStockRef, tablaMaestroOpe, tablaHistorialT;
                    Mapeo_Hojas_Clases(out tablaMaestroProd, out tablaStockRef, out tablaMaestroOpe, out tablaHistorialT);

                    // Mapeo de datos a clases
                    Mapeo_Datos_Clases(tablaMaestroProd, tablaStockRef, tablaMaestroOpe, tablaHistorialT);

                    // Cierre del archivo
                    lectorExcel.Close();

                    // Habilitamos el panel del analizador
                    tabSimulador.Enabled = true;

                    // Llenado del combo de maestro de productos
                    comboMProd.Items.Clear();
                    foreach (Producto prod in Simulador.MaestroProd.productos)
                    {
                        comboMProd.Items.Add(prod._productId + " - " + prod._descripcion);
                    }
                }
            }
        }
Beispiel #26
0
 /// <summary>
 /// Constructor con Comercio por paramentro.
 /// </summary>
 /// <param name="comercio">Comercio apra asociar al simulador.</param>
 public FrmSimularAtencion(Comercio comercio) : this()
 {
     this.simulador = new Simulador(comercio);
     this.simulador.SimularAtencion += VerCliente;
 }