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; } } }
private void liberarPuesto(PuestoTaller puesto) { puesto.Estado = 0; puesto.ProxFinReparacion = 0; puesto.Patrulla = null; puestosLibres.Add(puesto); }
private void crearPuestosTaller() { for (int i = 0; i < capacidadTaller; i++) { PuestoTaller puesto = new PuestoTaller(i + 1); puestosTaller.Add(puesto); puestosLibres.Add(puesto); } }
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); }
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; } } } }
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); }
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); } }