def inicializacion(self, duracion_simulacion): super(Simulacion2mec, self).inicializacion(duracion_simulacion) self.estado_mecanico = [Simulacion.DESOCUPADO, Simulacion.DESOCUPADO] self.cola_mecanico = [Cola('mecanico'), Cola('mecanico')] # Lista de eventos self.lista_de_eventos = { 'arribo_pala': [ Evento('arribo_pala'), Evento('arribo_pala'), Evento('arribo_pala') ], 'partida_pala': [ Evento('partida_pala'), Evento('partida_pala'), Evento('partida_pala') ], 'arribo_aplastador': Evento('arribo_aplastador'), 'partida_aplastador': Evento('partida_aplastador'), 'fin_de_reparacion': [Evento('fin_de_reparacion'), Evento('fin_de_reparacion')] }
def gerar_eventos(): fila_de_eventos = Queue() for _, i in enumerate(range(randint(1, 20))): evento = Evento(choice(eventos)) evento.set_priority() print(f"[{_+1}] Evento gerado: {evento}.") sleep(0.2) fila_de_eventos.insert(evento) print(f"[+] ----- > Gerados: {len(fila_de_eventos)} eventos.\n\n") sleep(0.5) return fila_de_eventos
def inicializacion(self, duracion_simulacion): self.duracion_simulacion = duracion_simulacion # Contadores Estadisticos self.tiempo_ocioso = 0 self.total_material_transportado = 0 self.total_descomposturas = 0 self.acrt = 0 # Variables de estado self.reloj_simulacion = 0 self.estado_pala = [ Simulacion.DESOCUPADO, Simulacion.DESOCUPADO, Simulacion.DESOCUPADO ] self.estado_aplastador = Simulacion.DESOCUPADO self.estado_mecanico = Simulacion.DESOCUPADO self.ult_ubicacion_mecanico = 'pala' self.ultima_medicion_descomposturas = 0 self.dcrt = 0 self.colas_pala = [] for i in range(3): cola_pala = Cola('pala') cola_pala.agregar(Camion(50, i)) cola_pala.agregar(Camion(20, i)) cola_pala.agregar(Camion(20, i)) self.colas_pala.append(cola_pala) self.cola_aplastador = Cola('aplastador') self.cola_mecanico = Cola('mecanico') # Lista de eventos self.lista_de_eventos = { 'arribo_pala': [ Evento('arribo_pala'), Evento('arribo_pala'), Evento('arribo_pala') ], 'partida_pala': [ Evento('partida_pala'), Evento('partida_pala'), Evento('partida_pala') ], 'arribo_aplastador': Evento('arribo_aplastador'), 'partida_aplastador': Evento('partida_aplastador'), 'fin_de_reparacion': Evento('fin_de_reparacion') }
def parse_json_eventos(json_source): #json_eventos = json_source["eventos"] eventos = [] for json_evento in json_source: eventos.append(Evento(json_evento)) return eventos
def analisa_linha(queue_leitura, queue_linha, queue_lista): if not queue_linha.empty(): evento = queue_linha.get() params = evento.get_params() if evento.metodo == None: novo_evento = Evento("quebrar", **params) queue_linha.put(novo_evento) elif evento.metodo == "quebrar": params["linha"] = str(evento.linha) lista = quebrar(evento.linha) params["lista"] = lista novo_evento = Evento(None, **params) queue_lista.put(novo_evento) elif evento.metodo == "fim": novo_evento = Evento("proxima", **params) queue_leitura.put(novo_evento) return queue_leitura, queue_linha, queue_lista
def inicializacion(self, duracion_simulacion): super(SimulacionUnaCola, self).inicializacion(duracion_simulacion) self.cola_pala = Cola('pala') for i in range(3): self.cola_pala.agregar(Camion(50)) for k in range(2): self.cola_pala.agregar(Camion(20)) # Lista de eventos self.lista_de_eventos = { 'arribo_pala': Evento('arribo_pala'), 'partida_pala': [ Evento('partida_pala'), Evento('partida_pala'), Evento('partida_pala') ], 'arribo_aplastador': Evento('arribo_aplastador'), 'partida_aplastador': Evento('partida_aplastador'), 'fin_de_reparacion': Evento('fin_de_reparacion') }
def run(self): self.cargar_integrantes() Contenido.importar_info_contenidos() Evento.creacion_primeros_eventos() while Evento.lista_eventos: Evento.seleccionar_evento() self.funciones[Evento.evento_actual.tipo]() examen = Evaluacion(4, Evento.evento_actual.tiempo + 5, choice(Contenido.lista_contenidos) ) #Solo para mostrar, mal implemenado Evento.evento_actual = examen self.funciones[examen.tipo]() entrega_examen = EntregaNotasCoord(7, examen.tiempo + 14, (4, 1)) Evento.evento_actual = entrega_examen self.funciones[entrega_examen.tipo]() publicacion_examen = PublicacionNotas(14, entrega_examen.tiempo, (4, 1)) Evento.evento_actual = publicacion_examen Evento.evento_actual.numero = 1000000 self.funciones[publicacion_examen.tipo]()
def analisa_lista(queue_leitura, queue_linha, queue_lista): if not queue_lista.empty(): evento = queue_lista.get() params = evento.get_params() if evento.metodo == None: params["linha_analisada"] = [] params["linha"] = (evento.linha) novo_evento = Evento("primeira", **params) queue_lista.put(novo_evento) elif evento.metodo == "primeira": string = evento.lista[0] del (evento.lista[0]) novo_evento = Evento("classificar", arg=string, **params) queue_lista.put(novo_evento) elif evento.metodo == "classificar": token = classificar(evento.arg) if "linha_analisada" not in params: params["linha_analisada"] = [] params["linha_analisada"] += (token) novo_evento = Evento("proxima", **params) queue_lista.put(novo_evento) elif evento.metodo == "proxima": if not evento.lista or len(evento.lista) == 0: novo_evento = Evento("fim", **params) queue_lista.put(novo_evento) else: string = evento.lista[0] del (evento.lista[0]) novo_evento = Evento("classificar", arg=string, **params) queue_lista.put(novo_evento) elif evento.metodo == "fim": params["lista"] = None novo_evento = Evento("fim", **params) queue_linha.put(novo_evento) return queue_leitura, queue_linha, queue_lista
def reunion_a_docencia(self): ''' Este metodo desencadena todas las funciones asociadas a la reunion de los ayudantes de docencia. Se crean los futuros eventos que dependen de este. :return: ''' evento = Evento.evento_actual # Proxima reunion: fecha = evento.tiempo + 7 Evento(8, fecha) sim_logger.info( '[Día {dia}]: Reunión de ayudantes de docencia.'.format( dia=evento.tiempo))
def publicacion_notas(self): evento = Evento.evento_actual str_publicacion = '' for alumno in Alumno.lista_alumnos: confianza = alumno.confianza for tupla in Evento.evento_actual.lista_entregas: if tupla[0] == 1 and tupla[1] == 4: # Se programa la bota de ramos: Evento(10, evento.tiempo) str_publicacion += '{tipo_ev} {num}, '.format( tipo_ev=Evento.tipos[tupla[0]], num=tupla[1]) str_publicacion = str_publicacion[:-2] sim_logger.info( '[Día {dia}]: Se publicaron las notas de: {evaluaciones}'.format( evaluaciones=str_publicacion, dia=evento.tiempo))
def catedra(self): ''' Este metodo desencadena todas las funciones asociadas a la realizaciond e la catedra. Se crean los futuros eventos que dependen de este. :return: ''' evento = Evento.evento_actual # Creacion proxima catedra: try: fecha = evento.tiempo + 7 sim_logger.info( '[Día {dia}]: Se realizó la catedra {numero}, acerca de {materia}.' .format(materia=Contenido.lista_contenidos[semana( evento.tiempo)].nombre, dia=evento.tiempo, numero=evento.numero_tipo)) Evento(6, fecha) except BaseException: pass
def analise_lexica(): queue_leitura = queue.Queue() queue_linha = queue.Queue() queue_lista = queue.Queue() #path = input("Digite o endereço do arquivo: ") path = "/home/paula/paula/poli/doing/compiladores/projeto/programa.bas" novo_evento = Evento(None, arg=path) queue_leitura.put(novo_evento) while (True): if not queue_lista.empty(): queue_leitura, queue_linha, queue_lista = analisa_lista( queue_leitura, queue_linha, queue_lista) elif not queue_linha.empty(): queue_leitura, queue_linha, queue_lista = analisa_linha( queue_leitura, queue_linha, queue_lista) elif not queue_leitura.empty(): queue_leitura, queue_linha, queue_lista, response = leitura( queue_leitura, queue_linha, queue_lista) else: return response
def leitura(queue_leitura, queue_linha, queue_lista): response = None if not queue_leitura.empty(): evento = queue_leitura.get() params = evento.get_params() if evento.metodo == None: params["filename"] = evento.arg novo_evento = Evento("abrir", **params) queue_leitura.put(novo_evento) elif evento.metodo == "abrir": file = open(evento.filename, "r") novo_evento = Evento("primeira", file=file, **params) queue_leitura.put(novo_evento) elif evento.metodo == "primeira": params["numero_linha"] = 1 novo_evento = Evento("ler", **params) queue_leitura.put(novo_evento) elif evento.metodo == "ler": linha = evento.file.readline() if not linha: linha = None novo_evento = Evento("fim", **params) queue_leitura.put(novo_evento) else: params["linha"] = linha novo_evento = Evento(None, **params) queue_linha.put(novo_evento) elif evento.metodo == "proxima": if "texto_analisado" not in params: params["texto_analisado"] = [] params["texto_analisado"].append( Linha_tokens(evento.numero_linha, evento.linha_analisada)) params["linha_analisada"] = [] params["linha"] = None params["numero_linha"] += 1 novo_evento = Evento("ler", **params) queue_leitura.put(novo_evento) elif evento.metodo == "fim": response = evento.texto_analisado else: raise Exception("Evento estranho") return queue_leitura, queue_linha, queue_lista, response
except ValueError: print("Introduce un numero!") if op == 7: print("Adiós!") break if op == 1: print("Registrando evento....") nombreEvento = input("Nombre del evento: ") fecha = input("Fecha del evento: ") localidad = input("Localidad del evento: ") provincia = input("Provincia del evento: ") precioInscipcion = input("Precio de inscripción del evento: ") evento = Evento(nombreEvento, fecha, localidad, provincia, precioInscipcion) if controlador.añadirEvento(evento): print("Evento añadido correctamente!") else: print("Error al añadir el evento!") if op == 2: while True: nomEvento = input("Introduce el nombre del evento:") if controlador.estaEvento(nomEvento): break else: print("Este evento no existe!") print()
def __montar_objeto_evento(self, tupla): return Evento(tupla['nome'], tupla['tema'], tupla['local'], tupla['data'], tupla['hora_ini'], tupla['hora_fim'])
def initSimulacion(tiempo): #tiempo en unidades. global eventoCount global clienteCount global clntsSistema global instalaciones global servidores global clientes global miu global clientesViejos tiemposAtencion = [] calculoCola = [] calculoSistema = [] colaCount = 0 print("\nTiempo que va a correr la simulación: " + str(tiempo) + "\n") #Creamos las instalaciones del sistema for e in range(colas): ins = Cola(servidores[e], miu[e], clientes[e]) instalaciones.append(ins) calculoCola += [{'sumatoria': 0, 'cantidad': 0}] calculoSistema += [{'sumatoria': 0, 'cantidad': 0}] #Generar Eventos # Para el tiempo t = 0 deben generar el evento de # "entrada de una persona desde el exterior a la cola" for c in instalaciones: colaCount += 1 eventoCount += 1 #ID del evento,Cola del evento, tiempo = 0, tipo Evento 1-3 evn = Evento(eventoCount, colaCount, 0, 1) colaPrioridad.append(evn) ordernarColaPrioridad() #generar tiempos de llegadas totales del exterior del sistema para cada cola. ordernarColaPrioridad() cFin = 0 while (len(colaPrioridad) > 0 and (cFin < tiempo * 40)): event = colaPrioridad[0] largoCola = len(instalaciones[event.colaMadre - 1].colaEspera) eventServ = instalaciones[event.colaMadre - 1].servidores #Realiza sumatoria del tamanno de la cola calculoCola[event.colaMadre - 1]["sumatoria"] += largoCola calculoCola[event.colaMadre - 1]["cantidad"] += 1 #Realiza sumatoria del tamanno del sistema calculoSistema[event.colaMadre - 1]["sumatoria"] += len( [item for item in eventServ if item != []]) + largoCola calculoSistema[event.colaMadre - 1]["cantidad"] += 1 event.procesar( ) #Cambia el estado de procesado de False a True del evento. #1: Llegada a la cola if (event.tipo == 1): #print("Caso 1:") #Verificar que el evento pertenezca a un cliente, sino se crea un cliente nuevo y se le asigna el evento. clnt = Cliente(clienteCount) clienteCount += 1 clnt.agregarEvento(event) clntsSistema.append(clnt) #print(clntsSistema) #Verificar si hay personas en la cola. if (largoCola > 0): #Debe de esperar en la cola. instalaciones[event.colaMadre - 1].agregarCliente( clntsSistema[0]) del clntsSistema[0] print("{} : Entra cliente en la cola {}, espera en la cola". format(event.tiempo, event.colaMadre)) else: #Pasar cliente a servidor para ser atendido. eventoCount += 1 tiempoServicio = instalaciones[event.colaMadre - 1].obtenerTiempoServicio() #tiemposAtencion[event.colaMadre-1]["cantidad"]+= 1 #ID del evento,Cola del evento, tiempo = 0, tipo Evento 1-4 eve = Evento(eventoCount, event.colaMadre, tiempoServicio, 2) clntsSistema[0].agregarEvento( eve) #Asigna el evento con el cliente. colaPrioridad.append(eve) ordernarColaPrioridad() print( "{} : Entra cliente en la cola {}, empieza a ser atendido". format(event.tiempo, event.colaMadre)) #Pasamos el cliente al servidor y lo sacamos de la lista de clientes del sistema. instalaciones[event.colaMadre - 1].pasarCliente( clntsSistema[0]) del clntsSistema[0] #Generar siguiente llamada desde el exterior. cola = instalaciones[event.colaMadre - 1] cola.generarTiempoLLegada() #Generar evento de nueva llegada, si no supera el límite de tiempo. if (cola.y <= tiempo): #print("Crea llegada nueva") eventoCount += 1 nEvn = Evento(eventoCount, event.colaMadre, cola.y, 1) #print(nEvn.IDCliente) colaPrioridad.append(nEvn) ordernarColaPrioridad() #2: Termina de ser atendido. #Aquí se puede procesar (generar bitácora) los eventos del cliente una vez que sale de la cola. elif (event.tipo == 2): #print("Caso 2:") #Sacar Cliente del servidor. clnt = instalaciones[event.colaMadre - 1].sacarCliente( event.IDCliente) clientesViejos.append(clnt) if (clnt == -5): for c in instalaciones: for cliente in c.servidores: if (cliente.ID == event.IDCliente): clnt = cliente #Decidir cola a nueva a la que se debe ir. colaSig = colaSiguiente(event.colaMadre) #Averiguar si sale del sistema o pasa a cola nueva. if (colaSig == 0): print( "{} : El Cliente termina de ser atendido en la cola {}, sale del sistema." .format(clnt.obtenerTiempoSalida(), event.colaMadre)) else: print( "{} : Cliente termina de ser atendido en la cola {}, pasa a la cola {}" .format(clnt.obtenerTiempoSalida(), event.colaMadre, colaSig)) eventoCount += 1 #ID del evento,Cola del evento, tiempo = 0, tipo Evento 1-4 eve = Evento(eventoCount, colaSig, clnt.obtenerTiempoSalida(), 3) colaPrioridad.append(eve) ordernarColaPrioridad() clnt.agregarEvento(eve) instalaciones[colaSig - 1].agregarCliente(clnt) if (largoCola > 0): #Pasar siguiente cliente de la cola al servidor.Generar Evento de atención. eventoCount += 1 tiempoServicio = instalaciones[event.colaMadre - 1].obtenerTiempoServicio() tiempoServicio = instalaciones[event.colaMadre - 1].obtenerTiempoServicio() #ID del evento,Cola del evento, tiempo = 0, tipo Evento 1-4 eve = Evento(eventoCount, event.colaMadre, tiempoServicio, 2) colaPrioridad.append(eve) ordernarColaPrioridad() instalaciones[event.colaMadre - 1].colaEspera[0].agregarEvento( eve) #Asignar evento con cliente. nClnt = instalaciones[event.colaMadre - 1].colaEspera[0] instalaciones[event.colaMadre - 1].pasarCliente(nClnt) #3: Termina de ser atendido y pasa a la cola n. elif (event.tipo == 3): #print("Caso 3:") if (largoCola > 0): #Debe de esperar en la cola. print("{} : Entra cliente en la cola {}, espera en la cola". format(event.tiempo, event.colaMadre)) else: #Pasar cliente a servidor para ser atendido. eventoCount += 1 tiempoServicio = instalaciones[event.colaMadre - 1].obtenerTiempoServicio() #ID del evento,Cola del evento, tiempo = 0, tipo Evento 1-4 eve = Evento(eventoCount, event.colaMadre, tiempoServicio, 2) cln = instalaciones[colaSig - 1].colaEspera[0] instalaciones[colaSig - 1].colaEspera[0].agregarEvento( eve) #Asigna el evento con el cliente. colaPrioridad.append(eve) ordernarColaPrioridad() print( "{} : Entra cliente en la cola {}, empieza a ser atendido". format(event.tiempo, event.colaMadre)) #Pasamos el cliente al servidor y lo sacamos de la lista de clientes del sistema. instalaciones[event.colaMadre - 1].pasarCliente(cln) #Generar siguiente llamada desde el exterior. cola = instalaciones[event.colaMadre - 1] cola.generarTiempoLLegada() #Generar evento de nueva llegada, si no supera el límite de tiempo. if (cola.y <= tiempo): #print("Crea llegada nueva") eventoCount += 1 nEvn = Evento(eventoCount, event.colaMadre, cola.y, 1) #print(nEvn.IDCliente) colaPrioridad.append(nEvn) ordernarColaPrioridad() else: print("Caso X: Inexistente") #print("Borra de cola de prioridad") event = None eventosProcesados.append(colaPrioridad.pop(0)) cFin += 1 #Calculo de datos obtenidos en la simulacion clientesViejos = set(clientesViejos) print(clientesViejos) Wq = calcularTiempoColaSimulacion(clientesViejos, colas) W = calcularTiempoSistemaSimulacion(clientesViejos, colas) L = [] Lq = [] for i in range(len(calculoCola)): Lq += [calculoCola[i]["sumatoria"] / calculoCola[i]["cantidad"]] for i in range(len(calculoSistema)): L += [calculoSistema[i]["sumatoria"] / calculoSistema[i]["cantidad"]] #Imprimir datos print("\r\n\r\n\r\n") print("-------------------------------------------------") print("-------------------------------------------------") print("-Resultados según la simulacion:-") print("-------------------------------------------------") print("-------------------------------------------------\r\n") for i in range(colas): print("---------------Resultados de cola ", i + 1, "---------------") print("Lq ", i + 1, ": ", Lq[i]) print("L ", i + 1, ": ", L[i]) print("Wq ", i + 1, ": ", Wq[i]) print("W ", i + 1, ": ", W[i])
if isinstance(evento, Evento_exclusivo): if evento.cupos == 0: continue if (asistente.agregar_a_evento(evento)): if isinstance(evento, Evento_exclusivo): evento.cupos -= 1 evento.espectadores += 1 asistentes_del_evento.append(asistente.nombre) self.comicon[evento.nombre] = [ asistentes_del_evento, evento.espectadores ] def mostrar_eventos_de_asistentes(self): for asistente in self.asistentes: print( asistente.nombre, "tiene asignados los nombres de los siguientes eventos: ", str([evento.nombre for evento in asistente.eventos_anotados])) if __name__ == "__main__": asistentes = ["Luciano", "Julian", "Lucas", "Martín"] eventos = [ Evento_exclusivo("Capitán América", 10, 13, 2), Evento_exclusivo("Hulk", 10, 11, 1), Evento_exclusivo("Los 4 fantásticos", 11, 12, 3), Evento_exclusivo("Mujer Maravilla", 13, 14, 2), Evento("Hombre araña", 16, 17) ] a = ComiCon(asistentes, eventos)
break while True: try: precioI = int(input("Introduce el precio de la inscripcion: ")) if precioI <= 0: print( "El precio de la inscripcion no puede ser 0 o menor que 0" ) else: break except ValueError: print("El precio es un numero!!") evento = Evento(nombre, fecha, localidad, provincia, precioI) if con.anyadirEvento(evento): print("El evento se ha anyadido correctamente!!") else: print("Error al anyadir el evento!!") if op == 2: while True: nEvento = str(input("Introduce le nombre del evento: ")) if con.comEvento(nEvento) == False: print("El evento introducido no existe!!") else: break
def __init__(self, nombre, inicio, fin, cupos): Evento.__init__(self, nombre, inicio, fin) self.cupos = cupos
def criar_evento(self, nome, tema, local, data, hora_ini, hora_fim): evento = Evento(nome, tema, local, data, hora_ini, hora_fim) self.eventoDAO.inserir(evento)
def extraerDecrip(soup): topicsEvent_estruct = BeautifulSoup( soup.find("div", class_="cfp").prettify()) topicsEvent = "" for txt in topicsEvent_estruct.stripped_strings: topicsEvent = topicsEvent + '\n' + txt return topicsEvent a = "http://www.wikicfp.com/cfp/servlet/event.showcfp?eventid=45369©ownerid=60222" r = requests.get(a) soup = BeautifulSoup(r.text) soup = soup.find("div", class_="contsec") event = Evento() event.name = extraerName(soup) event.url = extraerUrl(soup) when = extraerDates(soup, "When") #return ('value1','value2') event.whenBegin = when[0] event.whenEnd = when[1] event.where = extraerWhere(soup, "Where") event.abstractRegistration = extraerImportantDates( soup, "Abstract Registration Due") event.submissionDeadline = extraerImportantDates(
return categ def extraerDecrip(soup): topicsEvent_estruct = BeautifulSoup(soup.find("div", class_="cfp").prettify()) topicsEvent = "" for txt in topicsEvent_estruct.stripped_strings: topicsEvent = topicsEvent +'\n'+ txt return topicsEvent a = "http://www.wikicfp.com/cfp/servlet/event.showcfp?eventid=45369©ownerid=60222" r = requests.get(a) soup = BeautifulSoup(r.text) soup = soup.find("div", class_="contsec") event = Evento() event.name = extraerName(soup) event.url = extraerUrl(soup) when = extraerDates(soup, "When") #return ('value1','value2') event.whenBegin = when[0] event.whenEnd = when[1] event.where = extraerWhere(soup, "Where") event.abstractRegistration = extraerImportantDates(soup, "Abstract Registration Due") event.submissionDeadline = extraerImportantDates(soup, "Submission Deadline") #Notification Due inal Version Due