Esempio n. 1
0
def plotMinimumCostPathMap(analyzer, vertexa, vertexb):
    """
    Crea un mapa interactivo de la ruta de costo mínimo entre dos
    puntos de conexión
    """
    lstvertexs = controller.getMinimumCostPathVertexs(analyzer, vertexb)
    lstcoordinates = controller.getPathCoordinates(analyzer, lstvertexs)
    origincoords = lt.firstElement(lstcoordinates)
    destcoords = lt.lastElement(lstcoordinates)
    originpos = lt.isPresent(lstcoordinates, origincoords)
    destpos = lt.isPresent(lstcoordinates, destcoords)
    lt.removeFirst(lstcoordinates)
    lt.removeLast(lstcoordinates)
    map = folium.Map(origincoords, zoom_start=2.5)
    for location in lt.iterator(lstcoordinates):
        folium.Marker(location).add_to(map)
    lt.insertElement(lstcoordinates, origincoords, originpos)
    lt.insertElement(lstcoordinates, destcoords, destpos)
    folium.Marker(origincoords,
                  str(vertexa.replace('-', ', ')),
                  icon=folium.Icon(icon='flag', color='red')).add_to(map)
    folium.Marker(destcoords,
                  str(vertexb.replace('-', ', ')),
                  icon=folium.Icon(icon='flag', color='red')).add_to(map)
    folium.PolyLine(lstcoordinates['elements'],
                    color="grey",
                    weight=2.5,
                    opacity=0.75).add_to(map)
    map.save("map3.html")
Esempio n. 2
0
def req2(analizer,limiteinf,limite,verticei):
    grafo=analizer['connections']
    sc = scc.KosarajuSCC(grafo)
    componente_inicio=m.get(sc['idscc'],verticei)['value']
    iterator=it.newIterator(m.keySet(sc['idscc']))
    verticesfc=lt.newList(cmpfunction=compareroutes)
    while it.hasNext(iterator):
        proximo=it.next(iterator)
        c_proximo=m.get(sc['idscc'],proximo)['value']
        if c_proximo == componente_inicio: #Que el componente sea el mismo
            lt.addLast(verticesfc,proximo)
    adyacentes=gr.adjacents(grafo,verticei)
    iterator=it.newIterator(verticesfc)
    rutasposibles=[]
    while it.hasNext(iterator):
        proximo=it.next(iterator)
        if lt.isPresent(adyacentes,proximo):
            dfs3 = dfs.DepthFirstSearchSCC(grafo,proximo,verticesfc)
            if dfs.pathTowithLimiter(dfs3,verticei,grafo,limite) != None:
                rutachikita,tiempo=dfs.pathTowithLimiter(dfs3,verticei,grafo,limite)
                lt.removeLast(rutachikita)
                if limiteinf<tiempo<limite:
                    rutasposibles.append({"First":m.get(analizer['nameverteces'],lt.firstElement(rutachikita))['value'],"Last":m.get(analizer['nameverteces'],lt.lastElement(rutachikita))['value'],"Duracion":tiempo/60})
        
    return rutasposibles
def total_antes_de_una_fecha(analyzer, fecha):
    date = fecha_convertidor_consultas(fecha)
    a = om.keys(analyzer["index"], om.minKey(analyzer["index"]), date)
    lt.removeLast(a)
    total = 0
    it1 = lit.newIterator(a)
    while lit.hasNext(it1):
        n = lit.next(it1)
        b = om.get(analyzer["index"], n)
        c = me.getValue(b)
        total += lt.size(c)
    return total
Esempio n. 4
0
def buscar_estaciones_top_ingreso(graph, reference_table):
    """"Funcion para hallar los viajes que llegan a una estacion!"""
    estaciones = lt.newList()
    vertices = gr.vertices(graph)
    it_vertice = it.newIterator(vertices)
    while it.hasNext(it_vertice):
        vert = it.next(it_vertice)
        estacion = gr.indegree(graph, vert)
        nombre = conversor_id_nombre(vert, reference_table)
        lt.addLast(estaciones, (estacion, nombre))
    merge.mergesort(estaciones, lessFunction)
    final_top = []
    for i in range(3):
        top = lt.lastElement(estaciones)
        final_top.append(top)
        lt.removeLast(estaciones)
    return final_top
Esempio n. 5
0
def hallarTop(tabla, numero):
    taxis = m.keySet(tabla)
    puntos = m.valueSet(tabla)
    mrg.mergesort(puntos, lessfunction)
    listaOrd = lt.newList(datastructure="ARRAY_LIST")
    i = 0
    while i < numero:
        F = lt.lastElement(puntos)
        lt.addLast(listaOrd, F)
        lt.removeLast(puntos)
        i += 1
    listaTaxis = lt.newList(datastructure="ARRAY_LIST")
    itelistapuntos = it.newIterator(listaOrd)
    while it.hasNext(itelistapuntos):
        G = it.next(itelistapuntos)
        itetop = it.newIterator(taxis)
        while it.hasNext(itetop):
            H = it.next(itetop)
            I = m.get(tabla, H)
            J = me.getValue(I)
            if J == G:
                lt.addLast(listaTaxis, H)
    return listaTaxis
def getAccidentsBeforeDate(analyzer, date):
    existe_fecha = om.contains(analyzer['dateIndex'], date)
    if existe_fecha == False:
        return ('Esta fecha no existe dentro de la documentación.')
    else:
        first_date = om.minKey(analyzer['dateIndex'])
        fechas = om.keys(analyzer['dateIndex'], first_date, date)
        lt.removeLast(fechas)
        cant_fechas = lt.size(fechas)
        cant_accidentes = 0
        i = 1
        mayor = 0
        fecha_final = -10
        while i <= cant_fechas:
            llave = lt.getElement(fechas, i)
            arbol = om.get(analyzer['dateIndex'], llave)
            valor = lt.size(arbol['value']['lstaccidents'])
            cant_accidentes += valor
            if valor > mayor:
                mayor = valor
                fecha_final = llave
            i += 1
    return cant_accidentes, fecha_final
def estacionesCriticas(dataBase) -> dict:
    top3In = list.newList()
    top3Out = list.newList()
    bot3 = list.newList()

    analysis = Analysis.topViajes(dataBase)

    i = 0
    while i < 3:
        list.addLast(top3In, list.removeFirst(analysis[0]))
        list.addLast(top3Out, list.removeFirst(analysis[1]))
        list.addFirst(bot3, list.removeLast(analysis[2]))
        i += 1
    del analysis

    return (top3In, top3Out, bot3)
Esempio n. 8
0
def criticalStations(citibike):
    """
    RETO 4 | REQ 3
    Retorna:
        Las tres estaciones de donde salen más viajes.
        La tres estaciones de donde llegan más viajes.
        La tres estaciones menos usadas.
    """
    top_arrival = []
    top_departure = []
    least_used = []

    arrival_lt_sorted = lt.newList(datastructure='ARRAY_LIST',
                                   cmpfunction=compareValues)
    departure_lt_sorted = lt.newList(datastructure='ARRAY_LIST',
                                     cmpfunction=compareValues)
    total_trips_sorted = lt.newList(datastructure='ARRAY_LIST',
                                    cmpfunction=compareValues)

    stations_keys = m.keySet(citibike['Edges_Map'])

    iterator = it.newIterator(stations_keys)
    while it.hasNext(iterator):
        station = it.next(iterator)
        sta = m.get(citibike['Edges_Map'], station)

        lt.addLast(arrival_lt_sorted, sta)
        lt.addLast(departure_lt_sorted, sta)
        lt.addLast(total_trips_sorted, sta)

    mg.mergesort(arrival_lt_sorted, greaterValueArrival)
    mg.mergesort(departure_lt_sorted, greaterValueDeparture)
    mg.mergesort(total_trips_sorted, greaterTotalTrips)

    i = 0
    while i < 3:
        top_arr = lt.removeFirst(arrival_lt_sorted)
        top_arrival.append(top_arr)

        top_dep = lt.removeFirst(departure_lt_sorted)
        top_departure.append(top_dep)

        least = lt.removeLast(total_trips_sorted)
        least_used.append(least)
        i += 1

    return top_arrival, top_departure, least_used
Esempio n. 9
0
def req4Parte2(citibike, TiempoResistencia, vertice, tiempoRuta, listaRuta,
               listaFinal, IdEstacionI, listaArcos, nombreI):
    verticesAdy = gr.adjacents(citibike["graph"], vertice)
    if verticesAdy["size"] == 0:
        if int(tiempoRuta) <= int(
                TiempoResistencia) and vertice != IdEstacionI:
            o = m.get(citibike["namesF"], vertice)
            nombreO = en.getValue(o)
            nombreP = nombreO["nombre"]
            if (nombreI + " - " + nombreP + ": " + str(tiempoRuta) +
                    "s ") not in listaFinal:
                listaFinal.append(nombreI + " - " + nombreP + ": " +
                                  str(tiempoRuta) + "s ")
        y = lt.removeLast(listaRuta)
        longitud = len(listaArcos)
        if longitud != 0:
            x = listaArcos.pop(len(listaArcos) - 1)
            tiempoRuta -= int(x)
    elif (verticesAdy["size"] != 0):
        for j in range(0, (verticesAdy["size"] + 1)):
            vertice2 = lt.getElement(verticesAdy, j)
            valorArco2 = int(
                gr.getEdge(citibike["graph"], vertice,
                           vertice2)["weight"]["duracion"])
            tiempoRuta += valorArco2
            listaArcos.append(valorArco2)
            if listaRuta["size"] == 0:
                None
            elif (vertice2 in listaRuta
                  or int(tiempoRuta) > int(TiempoResistencia)):
                None
            elif int(tiempoRuta) <= int(TiempoResistencia):
                r = m.get(citibike["namesF"], vertice2)
                nombreE = en.getValue(r)
                nombreT = nombreE["nombre"]
                if (nombreI + " - " + nombreT + ": " + str(tiempoRuta) +
                        "s ") not in listaFinal:
                    listaFinal.append(nombreI + " - " + nombreT + ": " +
                                      str(tiempoRuta) + "s ")
                lt.addLast(listaRuta, vertice2)
                req4Parte2(citibike, TiempoResistencia, vertice2, tiempoRuta,
                           listaRuta, listaFinal, IdEstacionI, listaArcos,
                           nombreI)
    return listaFinal
Esempio n. 10
0
def pop(stack):
    """ Retorna el elemento  presente en el tope de la pila.

     Args:
        stack:  La pila de donde se retirara el elemento

    Returns:
        El elemento del tope de la pila

    Raises:
        Exception
    """
    try:
        if stack is not None and not lt.isEmpty(stack):
            return lt.removeLast(stack)
        else:
            raise Exception
    except Exception as exp:
        error.reraise(exp, 'TADStack->pop: ')
Esempio n. 11
0
def estacionesCriticas(analyzer):

    cuenta= 0
    estaciones= gr.vertices(analyzer["graph"])
    listaEntrada= lt.newList("ARRAY_LIST", comparestations)
    listaSalida= lt.newList("ARRAY_LIST", comparestations)
    listaSolitarias= lt.newList("ARRAY_LIST", comparestations)
    entradasConcurridas= lt.newList("ARRAY_LIST", compareSizes)
    salidasConcurridas= lt.newList("ARRAY_LIST", compareSizes)
    estacionesSolitarias= lt.newList("ARRAY_LIST", compareSizes)
    while cuenta<lt.size(estaciones):
        estacion= lt.getElement(estaciones, cuenta)
        entrada= gr.indegree(analyzer["graph"], estacion)        
        lt.addFirst(entradasConcurridas,entrada)
        salida= gr.outdegree(analyzer["graph"], estacion)
        lt.addFirst(salidasConcurridas,salida)
        bidireccional= gr.degree(analyzer["graph"], estacion)
        lt.addFirst(estacionesSolitarias,bidireccional)
        cuenta+= 1

    entradasOrg= sel.selectionSort(entradasConcurridas,lessequal)
    salidasOrg= sel.selectionSort(salidasConcurridas,lessequal)
    solitariasOrg= sel.selectionSort(estacionesSolitarias,lessequal)

    for conteo in range(0,3):
        if entrada == lt.getElement(entradasOrg, conteo):
            lt.insertElement(listaEntrada, estacion, conteo)
        if salida == lt.getElement(salidasOrg, conteo):
            lt.insertElement(listaSalida, estacion, conteo)
        if bidireccional == lt.getElement(solitariasOrg, conteo):
            lt.insertElement(listaSolitarias, estacion, conteo)
    if lt.size(listaEntrada) > 3:
        lt.removeLast(listaEntrada)
    if lt.size(listaSalida) > 3:
        lt.removeLast(listaSalida)
    if lt.size(listaSolitarias) > 3:
        lt.removeLast(listaSolitarias)

    return (listaEntrada, listaSalida, listaSolitarias)
def test_removeLast_array(altbooks, books):
    assert lt.size(altbooks) == 5
    lt.removeLast(altbooks)
    assert lt.size(altbooks) == 4
    book = lt.getElement(altbooks, 4)
    assert book == books[3]
Esempio n. 13
0
                distance += e.weight(edge)
                print(edge)
            print('La distancia es de ', distance, ' Km')
        else:
            print('No es posible establecer una conexion')

        print("\nTiempo [ms]: ", f"{result[1][0]:.3f}", "  ||  ",
              "Memoria [kB]: ", f"{result[1][1]:.3f}")
        vermap = input('Desea observar el camino grafica en el mapa?')
        if vermap == 'si':
            webbrowser.open('mapa.html')
    elif int(inputs[0]) == 5:
        result = controller.requerimiento4(analyzer)
        distance = 0
        while (not lt.isEmpty(result[0][0])):
            edge = lt.removeLast(result[0][0])
            distance += e.weight(edge)
            print(edge)
        print(
            'El numero de vertices asociados a la red de expansion minima es de: ',
            result[0][1][1])
        print('El costo del MST es de ', result[0][1][0], ' Km')
        print('El costo de la rama mas larga es de ', distance, ' Km')
        print("\nTiempo [ms]: ", f"{result[1][0]:.3f}", "  ||  ",
              "Memoria [kB]: ", f"{result[1][1]:.3f}")
        vermap = input(
            'Desea observar la red de expansion minima graficada en el mapa?')
        if vermap == 'si':
            webbrowser.open('mapa.html')
    elif int(inputs[0]) == 6:
        landingpoint = input("Ingresa el landing point: ")