Esempio n. 1
0
def way_later(request, journey, asap_journey):
    """
    to check if a journey is way later than the asap journey
    we check for each journey the difference between the requested datetime and the arrival datetime
    (the other way around for non clockwise)

    requested dt
    *
                   |=============>
                          asap

                                           |=============>
                                                 journey

    -------------------------------
             asap pseudo duration

    ------------------------------------------------------
                       journey pseudo duration

    """
    requested_dt = request['datetime']
    is_clockwise = request.get('clockwise', True)

    pseudo_asap_duration = get_pseudo_duration(asap_journey, requested_dt, is_clockwise)
    pseudo_journey_duration = get_pseudo_duration(journey, requested_dt, is_clockwise)

    max_value = pseudo_asap_duration * request['_night_bus_filter_max_factor'] + request['_night_bus_filter_base_factor']
    return pseudo_journey_duration > max_value
Esempio n. 2
0
def way_later(journey, asap_journey, original_request):
    """
    to check if a journey is way later than the asap journey
    we check for each journey the difference between the requested datetime and the arrival datetime
    (the other way around for non clockwise)

    requested dt
    *
                   |=============>
                          asap

                                           |=============>
                                                 journey

    -------------------------------
             asap pseudo duration

    ------------------------------------------------------
                       journey pseudo duration

    """
    requested_dt = original_request['datetime']
    is_clockwise = original_request.get('clockwise', True)

    pseudo_asap_duration = get_pseudo_duration(asap_journey, requested_dt, is_clockwise)
    pseudo_journey_duration = get_pseudo_duration(journey, requested_dt, is_clockwise)

    max_factor = 3  #TODO get it in instance
    base_factor = 60*60  #TODO get it in instance, for the moment 1h

    max_value = pseudo_asap_duration * max_factor + base_factor
    return pseudo_journey_duration > max_value
Esempio n. 3
0
 def combinations_sorter(v):
     # Hoping to find We sort the solution by the sum of journeys' pseudo duration
     return np.sum(
         (
             get_pseudo_duration(jrny, requested_dt, is_clockwise)
             for jrny in np.array(candidates_pool)[np.where(selection_matrix[v, :])]
         )
     )
Esempio n. 4
0
def way_later(request, journey1, journey2):
    """to check if a journey is way later than another journey

    First, this rule doesn't apply if journey1 has a strictly better
    mode than journey2.

    Then, we check for each journey the difference between the
    requested datetime and the arrival datetime (the other way around
    for non clockwise)

    requested dt
    *
                   |=============>
                          journey2

                                           |=============>
                                                 journey1

    -------------------------------
             journey2 pseudo duration

    ------------------------------------------------------
                       journey1 pseudo duration

    """
    if _get_mode_weight(journey1) < _get_mode_weight(journey2):
        return False

    requested_dt = request['datetime']
    is_clockwise = request.get('clockwise', True)

    pseudo_j2_duration = get_pseudo_duration(journey2, requested_dt,
                                             is_clockwise)
    pseudo_j1_duration = get_pseudo_duration(journey1, requested_dt,
                                             is_clockwise)

    max_value = pseudo_j2_duration * request[
        '_night_bus_filter_max_factor'] + request[
            '_night_bus_filter_base_factor']
    return pseudo_j1_duration > max_value