Beispiel #1
0
        private void eventoLlegaPatrulla()
        {
            reloj  = patrullasOrdenadas[0].ProxRotura;
            evento = "Rotura patrulla";
            Patrulla patrulla = patrullasOrdenadas[0];

            patrullasOrdenadas.RemoveAt(0);
            patrulla.DiaRotura = reloj;

            //Si hay puestos libres
            if (puestosLibres.Count > 0)
            {
                PuestoTaller puesto = puestosLibres[0];
                ocuparPuesto(puesto, patrulla);
                puestosLibres.RemoveAt(0);
            }
            //Si no hay puestos libres
            else
            {
                patrulla.Estado     = 1;
                patrulla.ProxRotura = 0;
                cola.Add(patrulla);
                if (colaMaxima == 0 || cola.Count > colaMaxima)
                {
                    colaMaxima = cola.Count;
                }
            }
        }
Beispiel #2
0
 private void liberarPuesto(PuestoTaller puesto)
 {
     puesto.Estado            = 0;
     puesto.ProxFinReparacion = 0;
     puesto.Patrulla          = null;
     puestosLibres.Add(puesto);
 }
Beispiel #3
0
 private void crearPuestosTaller()
 {
     for (int i = 0; i < capacidadTaller; i++)
     {
         PuestoTaller puesto = new PuestoTaller(i + 1);
         puestosTaller.Add(puesto);
         puestosLibres.Add(puesto);
     }
 }
Beispiel #4
0
        private void ocuparPuesto(PuestoTaller puesto, Patrulla patrulla)
        {
            patrulla.Estado     = 2;
            patrulla.ProxRotura = 0;
            patrulla.Rnd        = 0;

            int finReparacion = puesto.calcularProxFinReparacion(reloj, random);

            puesto.Estado   = 1;
            puesto.Patrulla = patrulla;
            ordenarPuestoOcupado(puesto);
        }
Beispiel #5
0
 private void ordenarPuestoOcupado(PuestoTaller puesto)
 {
     if (puestosOcupados.Count == 0 || puesto.ProxFinReparacion >= puestosOcupados[puestosOcupados.Count - 1].ProxFinReparacion)
     {
         puestosOcupados.Add(puesto);
     }
     else
     {
         for (int i = 0; i < puestosOcupados.Count; i++)
         {
             if (puesto.ProxFinReparacion < puestosOcupados[i].ProxFinReparacion)
             {
                 puestosOcupados.Insert(i, puesto);
                 break;
             }
         }
     }
 }
Beispiel #6
0
        private void renderPuestos(int iteracion)
        {
            DataGridViewRow row = (DataGridViewRow)this.dataGridView3.Rows[0].Clone();

            row.Cells[0].Value = iteracion;
            row.Cells[1].Value = evento;
            row.Cells[1].Value = evento;
            row.Cells[2].Value = reloj;

            for (int i = 3; i < puestosTaller.Count * 5; i += 5)
            {
                PuestoTaller puesto = puestosTaller[i / 5];
                row.Cells[i].Value     = puesto.getEstadoString();
                row.Cells[i + 1].Value = puesto.Rnd != 0 ? puesto.Rnd.ToString() : "-";
                row.Cells[i + 2].Value = puesto.TReparacion != 0 ? puesto.TReparacion.ToString() : "-";

                row.Cells[i + 3].Value = puesto.ProxFinReparacion == 0 ? "-" : "Día " + puesto.ProxFinReparacion;
                String patrulla = puesto.getPatrulla() != 0 ? "Patrulla " + puesto.getPatrulla().ToString() : "-";
                row.Cells[i + 4].Value = patrulla;
            }
            this.dataGridView3.Rows.Add(row);
        }
Beispiel #7
0
        private void eventoFinReparacion()
        {
            reloj  = puestosOcupados[0].ProxFinReparacion;
            evento = "Fin reparación";
            PuestoTaller puestoDesocupado   = puestosOcupados[0];
            Patrulla     patrullaRecuperada = puestoDesocupado.Patrulla;

            liberarPatrulla(patrullaRecuperada);

            puestosOcupados.RemoveAt(0);

            //Si hay cola
            if (cola.Count > 0)
            {
                ocuparPuesto(puestoDesocupado, cola[0]);
                cola.RemoveAt(0);
            }
            //Si no hay cola
            else
            {
                liberarPuesto(puestoDesocupado);
            }
        }