private void Simular()
        {
            for (int i = 0; i < 3; i++)
            {
                cant_cli_cola.Series[i].Points.Clear();
                dem_prom.Series[i].Points.Clear();
                utilizacion.Series[i].Points.Clear();
            }

            NrosAleatorios.GenerarNros(100);

            #region Exponencial 0.3

            ServidorSimple ServidorSimple_Exp = new ServidorSimple(0.3, 0.3);
            while (ServidorSimple_Exp.reloj < Convert.ToDouble(100))
            {
                char proximo_evento = ServidorSimple_Exp.rutinadetiempo();
                if (proximo_evento == 'a')
                {
                    ServidorSimple_Exp.arribo();
                }
                else
                {
                    ServidorSimple_Exp.partida();
                }
            }
            DataPoint punto = new DataPoint(0.3, ServidorSimple_Exp.CantPromClientesCola);
            cant_cli_cola.Series[0].Points.Add(punto);
            dem_prom.Series[0].Points.Add(new DataPoint(0.3, ServidorSimple_Exp.DemPromedio));
            utilizacion.Series[0].Points.Add(new DataPoint(0.3, ServidorSimple_Exp.UtilServidor));

            #endregion

            NrosAleatorios.ReiniciarR();

            #region Uniforme 0.3
            tea = new List <double>()
            {
                0.1, 0.3
            };
            tds = new List <double>()
            {
                0.1, 0.3
            };
            ServidorSimple ServidorSimple_Uni = new ServidorSimple('u', tea, tds);
            while (ServidorSimple_Uni.reloj < Convert.ToDouble(100))
            {
                char proximo_evento = ServidorSimple_Uni.rutinadetiempo();
                if (proximo_evento == 'a')
                {
                    ServidorSimple_Uni.arribo();
                }
                else
                {
                    ServidorSimple_Uni.partida();
                }
            }
            cant_cli_cola.Series[1].Points.Add(new DataPoint(0.3, ServidorSimple_Uni.CantPromClientesCola));
            dem_prom.Series[1].Points.Add(new DataPoint(0.3, ServidorSimple_Uni.DemPromedio));
            utilizacion.Series[1].Points.Add(new DataPoint(0.3, ServidorSimple_Uni.UtilServidor));
            #endregion

            NrosAleatorios.ReiniciarR();

            #region Weibull 0.3
            tea = new List <double>()
            {
                0.3, 0.3
            };
            tds = new List <double>()
            {
                0.3, 0.3
            };
            ServidorSimple_Exp = new ServidorSimple('w', tea, tds);
            while (ServidorSimple_Exp.reloj < Convert.ToDouble(100))
            {
                char proximo_evento = ServidorSimple_Exp.rutinadetiempo();
                if (proximo_evento == 'a')
                {
                    ServidorSimple_Exp.arribo();
                }
                else
                {
                    ServidorSimple_Exp.partida();
                }
            }
            cant_cli_cola.Series[2].Points.Add(new DataPoint(0.3, ServidorSimple_Exp.CantPromClientesCola));
            dem_prom.Series[2].Points.Add(new DataPoint(0.3, ServidorSimple_Exp.DemPromedio));
            utilizacion.Series[2].Points.Add(new DataPoint(0.3, ServidorSimple_Exp.UtilServidor));
            #endregion

            NrosAleatorios.ReiniciarR();

            #region Exponencial 0.5
            ServidorSimple_Exp = new ServidorSimple(0.5, 0.5);
            while (ServidorSimple_Exp.reloj < Convert.ToDouble(100))
            {
                char proximo_evento = ServidorSimple_Exp.rutinadetiempo();
                if (proximo_evento == 'a')
                {
                    ServidorSimple_Exp.arribo();
                }
                else
                {
                    ServidorSimple_Exp.partida();
                }
            }
            punto = new DataPoint(0.5, ServidorSimple_Exp.CantPromClientesCola);
            cant_cli_cola.Series[0].Points.Add(punto);
            dem_prom.Series[0].Points.Add(new DataPoint(0.5, ServidorSimple_Exp.DemPromedio));
            utilizacion.Series[0].Points.Add(new DataPoint(0.5, ServidorSimple_Exp.UtilServidor));

            #endregion

            NrosAleatorios.ReiniciarR();

            #region Uniforme 0.5
            tea = new List <double>()
            {
                0.4, 0.6
            };
            tds = new List <double>()
            {
                0.4, 0.6
            };
            ServidorSimple_Uni = new ServidorSimple('u', tea, tds);
            while (ServidorSimple_Uni.reloj < Convert.ToDouble(100))
            {
                char proximo_evento = ServidorSimple_Uni.rutinadetiempo();
                if (proximo_evento == 'a')
                {
                    ServidorSimple_Uni.arribo();
                }
                else
                {
                    ServidorSimple_Uni.partida();
                }
            }
            cant_cli_cola.Series[1].Points.Add(new DataPoint(0.5, ServidorSimple_Uni.CantPromClientesCola));
            dem_prom.Series[1].Points.Add(new DataPoint(0.5, ServidorSimple_Uni.DemPromedio));
            utilizacion.Series[1].Points.Add(new DataPoint(0.5, ServidorSimple_Uni.UtilServidor));
            #endregion

            NrosAleatorios.ReiniciarR();

            #region Weibull 0.5
            tea = new List <double>()
            {
                0.5, 0.5
            };
            tds = new List <double>()
            {
                0.5, 0.5
            };
            ServidorSimple_Exp = new ServidorSimple('w', tea, tds);
            while (ServidorSimple_Exp.reloj < Convert.ToDouble(100))
            {
                char proximo_evento = ServidorSimple_Exp.rutinadetiempo();
                if (proximo_evento == 'a')
                {
                    ServidorSimple_Exp.arribo();
                }
                else
                {
                    ServidorSimple_Exp.partida();
                }
            }
            cant_cli_cola.Series[2].Points.Add(new DataPoint(0.5, ServidorSimple_Exp.CantPromClientesCola));
            dem_prom.Series[2].Points.Add(new DataPoint(0.5, ServidorSimple_Exp.DemPromedio));
            utilizacion.Series[2].Points.Add(new DataPoint(0.5, ServidorSimple_Exp.UtilServidor));
            #endregion

            NrosAleatorios.ReiniciarR();

            #region Exponencial 0.7
            ServidorSimple_Exp = new ServidorSimple(0.7, 0.7);
            while (ServidorSimple_Exp.reloj < Convert.ToDouble(100))
            {
                char proximo_evento = ServidorSimple_Exp.rutinadetiempo();
                if (proximo_evento == 'a')
                {
                    ServidorSimple_Exp.arribo();
                }
                else
                {
                    ServidorSimple_Exp.partida();
                }
            }
            punto = new DataPoint(0.7, ServidorSimple_Exp.CantPromClientesCola);
            cant_cli_cola.Series[0].Points.Add(punto);
            dem_prom.Series[0].Points.Add(new DataPoint(0.7, ServidorSimple_Exp.DemPromedio));
            utilizacion.Series[0].Points.Add(new DataPoint(0.7, ServidorSimple_Exp.UtilServidor));
            #endregion

            NrosAleatorios.ReiniciarR();

            #region Uniforme 0.7
            tea = new List <double>()
            {
                0.7, 0.99
            };
            tds = new List <double>()
            {
                0.7, 0.99
            };
            ServidorSimple_Uni = new ServidorSimple('u', tea, tds);
            while (ServidorSimple_Uni.reloj < Convert.ToDouble(100))
            {
                char proximo_evento = ServidorSimple_Uni.rutinadetiempo();
                if (proximo_evento == 'a')
                {
                    ServidorSimple_Uni.arribo();
                }
                else
                {
                    ServidorSimple_Uni.partida();
                }
            }
            cant_cli_cola.Series[1].Points.Add(new DataPoint(0.7, ServidorSimple_Uni.CantPromClientesCola));
            dem_prom.Series[1].Points.Add(new DataPoint(0.7, ServidorSimple_Uni.DemPromedio));
            utilizacion.Series[1].Points.Add(new DataPoint(0.7, ServidorSimple_Uni.UtilServidor));
            #endregion

            NrosAleatorios.ReiniciarR();

            #region Weibull 0.7
            tea = new List <double>()
            {
                0.7, 0.7
            };
            tds = new List <double>()
            {
                0.7, 0.7
            };
            ServidorSimple_Exp = new ServidorSimple('w', tea, tds);
            while (ServidorSimple_Exp.reloj < Convert.ToDouble(100))
            {
                char proximo_evento = ServidorSimple_Exp.rutinadetiempo();
                if (proximo_evento == 'a')
                {
                    ServidorSimple_Exp.arribo();
                }
                else
                {
                    ServidorSimple_Exp.partida();
                }
            }
            cant_cli_cola.Series[2].Points.Add(new DataPoint(0.7, ServidorSimple_Exp.CantPromClientesCola));
            dem_prom.Series[2].Points.Add(new DataPoint(0.7, ServidorSimple_Exp.DemPromedio));
            utilizacion.Series[2].Points.Add(new DataPoint(0.7, ServidorSimple_Exp.UtilServidor));
            #endregion

            NrosAleatorios.ReiniciarN();
        }
Exemplo n.º 2
0
        private void btn_simular_Click(object sender, EventArgs e)
        {
            int msj = Validar(this.Controls);

            if (msj == 0)
            {
                String nom_graf = "Weibull";

                cli_cola    = new List <double>();
                dem_prom    = new List <double>();
                utilizacion = new List <double>();

                cli_en_cola.Series.Clear();
                dem_prom_cli.Series.Clear();
                utilizacion_serv.Series.Clear();

                cli_en_cola.Series.Add(nom_graf);
                cli_en_cola.Series[nom_graf].ChartType   = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Column;
                cli_en_cola.Series[nom_graf].Color       = Color.Green;
                cli_en_cola.Series[nom_graf].BorderWidth = 3;

                dem_prom_cli.Series.Add(nom_graf);
                dem_prom_cli.Series[nom_graf].ChartType   = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Column;
                dem_prom_cli.Series[nom_graf].Color       = Color.Red;
                dem_prom_cli.Series[nom_graf].BorderWidth = 3;

                utilizacion_serv.Series.Add(nom_graf);
                utilizacion_serv.Series[nom_graf].ChartType   = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Column;
                utilizacion_serv.Series[nom_graf].Color       = Color.Blue;
                utilizacion_serv.Series[nom_graf].BorderWidth = 3;

                NrosAleatorios.GenerarNros(Convert.ToInt32(txtHs.Text));

                for (int i = 0; i < tiempos.Length; i++)
                {
                    ServidorSimple ServidorSimple;
                    TDS = new List <double>();
                    TEA = new List <double>();

                    if (arribo)
                    {
                        TEA.Add(Convert.ToDouble(txtTEA_a.Text));
                        TEA.Add(Convert.ToDouble(txtTEA_b.Text));
                        TDS.Add(tiempos[i]);
                        TDS.Add(tiempos[i]);
                        ServidorSimple = new ServidorSimple('w', TEA, TDS);
                    }
                    else
                    {
                        TDS.Add(Convert.ToDouble(txtTDS_a.Text));
                        TDS.Add(Convert.ToDouble(txtTDS_b.Text));
                        TEA.Add(tiempos[i]);
                        TEA.Add(tiempos[i]);
                        ServidorSimple = new ServidorSimple('w', TEA, TDS);
                    }

                    while (ServidorSimple.reloj < Convert.ToDouble(txtHs.Text))
                    {
                        char proximo_evento = ServidorSimple.rutinadetiempo();
                        if (proximo_evento == 'a')
                        {
                            ServidorSimple.arribo();
                        }
                        else
                        {
                            ServidorSimple.partida();
                        }
                    }

                    DataPoint punto = new DataPoint(tiempos[i], ServidorSimple.CantPromClientesCola);
                    cli_en_cola.Series[nom_graf].Points.Add(punto);
                    cli_cola.Add(ServidorSimple.CantPromClientesCola);

                    punto = new DataPoint(tiempos[i], ServidorSimple.DemPromedio);
                    dem_prom_cli.Series[nom_graf].Points.Add(punto);
                    dem_prom.Add(ServidorSimple.DemPromedio);

                    punto = new DataPoint(tiempos[i], ServidorSimple.UtilServidor);
                    utilizacion_serv.Series[nom_graf].Points.Add(punto);
                    utilizacion.Add(ServidorSimple.UtilServidor);

                    NrosAleatorios.ReiniciarR();
                }

                cli_en_cola.ChartAreas[0].AxisY.Maximum      = DameMaximo(cli_cola) * 1.2;
                dem_prom_cli.ChartAreas[0].AxisY.Maximum     = DameMaximo(dem_prom) * 1.2;
                utilizacion_serv.ChartAreas[0].AxisY.Maximum = DameMaximo(utilizacion) * 1.2;

                NrosAleatorios.ReiniciarN();
            }
            else
            {
                string mensaje = null;
                switch (msj)
                {
                case (1):
                    mensaje = "Existen campos vacíos.";
                    break;

                case (2):
                    mensaje = "Verifique el formato las horas: deben ser enteras.";
                    break;

                case (3):
                    mensaje = "Los parámetros del TDS tienen que ser números decimales entre 0,1 y 1.";
                    break;

                case (4):
                    mensaje = "Los parámetros del TEA tienen que ser números decimales entre 0,1 y 1.";
                    break;

                case (5):
                    mensaje = "Los parámetros del TDS tienen que ser números decimales entre 0,1 y 1.";
                    break;

                case (6):
                    mensaje = "Los parámetros del TEA tienen que ser números decimales entre 0,1 y 1.";
                    break;

                case (7):
                    mensaje = "Debe ingresar los parámetros del TEA o del TDS";
                    break;

                default: break;
                }
                MessageBox.Show(mensaje, "¡ Atención !", MessageBoxButtons.OK);
            }
        }