示例#1
0
def run(route, prd, **kwargs):
    """

    :type route: pyticas.ttypes.Route
    :type prd: pyticas.ttypes.Period
    :return:
    """

    critical_density = kwargs.get(
        'moe_critical_density',
        get_system_config_info().moe_critical_density)
    lane_capacity = kwargs.get('moe_lane_capacity',
                               get_system_config_info().moe_lane_capacity)

    # load_data total flow data
    tq_results = total_flow.run(route, prd)
    tq_results = moe_helper.add_virtual_rnodes(tq_results, route)

    # load_data density data
    ks_results = density.run(route, prd)
    ks_results = moe_helper.add_virtual_rnodes(ks_results, route)

    # copy results to save LVMT values
    lvmt_results = [res.clone() for res in ks_results]

    # calculate LVMT
    lvmt_data = _calculate_uvmt(tq_results, ks_results, prd.interval,
                                critical_density, lane_capacity, **kwargs)
    for ridx, res in enumerate(lvmt_results):
        res.data = lvmt_data[ridx]

    return lvmt_results
示例#2
0
def run(route, prd, **kwargs):
    """

    :type route: pyticas.ttypes.Route
    :type prd: pyticas.ttypes.Period
    :return:
    """

    critical_density = kwargs.get('critical_k', DEFAULT_CRITICAL_DENSITY)
    lane_capacity = kwargs.get('lan_capacity', DEFAULT_LANE_CAPACITY)

    # load_data total flow data
    tq_results = total_flow.run(route, prd)
    tq_results = moe_helper.add_virtual_rnodes(tq_results, route)

    # load_data density data
    ks_results = density.run(route, prd)
    ks_results = moe_helper.add_virtual_rnodes(ks_results, route)

    # copy results to save LVMT values
    lvmt_results = [res.clone() for res in ks_results]

    # calculate LVMT
    lvmt_data = _calculate_lvmt(tq_results, ks_results, prd.interval,
                                critical_density, lane_capacity, **kwargs)
    for ridx, res in enumerate(lvmt_results):
        res.data = lvmt_data[ridx]

    return lvmt_results
示例#3
0
def run(route, prd, **kwargs):
    """

    :type route: pyticas.ttypes.Route
    :type prd: pyticas.ttypes.Period
    :return:
    """
    # load_data speed data
    moe_congestion_threshold_speed = kwargs.pop("moe_congestion_threshold_speed",
                                                get_system_config_info().moe_congestion_threshold_speed)
    us = moe_helper.get_speed(route.get_stations(), prd, **kwargs)
    us_results = moe_helper.add_virtual_rnodes(us, route)

    us_data = [res.data for res in us_results]
    us_data = spatial_avg.imputation(us_data)

    # make empty whole_data for congested miles by copying speed whole_data and reseting data
    cmh_results = [res.clone() for res in us_results]
    for ridx, res in enumerate(cmh_results):
        cmh_results[ridx].data = [0] * len(prd.get_timeline())
        cmh_results[ridx].prd = prd

    # calculate CMH
    cm_data = _calculate_cmh(us_data, prd.interval, moe_congestion_threshold_speed, **kwargs)
    for ridx, res in enumerate(cmh_results):
        res.data = cm_data[ridx]

    return cmh_results
示例#4
0
def add_virtual_rnodes(results, route, **kwargs):
    """
    :type results: list[RNodeData]
    :type route: pyticas.ttypes.Route
    :rtype: list[RNodeData]
    """
    return moe_helper.add_virtual_rnodes(results, route, **kwargs)
示例#5
0
def run(route, prd, **kwargs):
    """

    :type route: pyticas.ttypes.Route
    :type prd: pyticas.ttypes.Period
    :return:
    """
    rnode_list = route.get_stations()

    # load_data vmt data
    vmt_results = vmt.run(route, prd)
    vmt_data = [res.data for res in vmt_results]

    # load_data speed data
    us_results = speed.run(route, prd)
    us_results = moe_helper.add_virtual_rnodes(us_results, route)
    us_data = [res.data for res in us_results]

    # copy results to save VMT values
    vht_results = [res.clone() for res in us_results]

    # calculate VMT
    vht_data = _calculate_vht(vmt_data, us_data, prd.interval, **kwargs)
    for ridx, res in enumerate(vht_results):
        res.data = vht_data[ridx]

    return vht_results
示例#6
0
def run(route, prd, **kwargs):
    """

    :type route: pyticas.ttypes.Route
    :type prd: pyticas.ttypes.Period
    :return:
    """
    # load_data speed data
    us = moe_helper.get_speed(route.get_stations(), prd, **kwargs)
    us_results = moe_helper.add_virtual_rnodes(us, route)

    us_data = [res.data for res in us_results]
    us_data = spatial_avg.imputation(us_data)

    # make empty whole_data for STT by copying speed whole_data and reseting data
    stt_results = [res.clone() for res in us_results]
    for ridx, res in enumerate(stt_results):
        stt_results[ridx].data = [0] * len(prd.get_timeline())
        stt_results[ridx].prd = prd

    # calculate STT
    cm_data = _calculate_stt(us_data, prd.interval, **kwargs)
    for ridx, res in enumerate(stt_results):
        res.data = cm_data[ridx]

    return stt_results
示例#7
0
def run(route, prd, **kwargs):
    """

    :type route: pyticas.ttypes.Route
    :type prd: pyticas.ttypes.Period
    :return:
    """

    # load_data total flow data
    tq_results = total_flow.run(route, prd)
    tq_results = moe_helper.add_virtual_rnodes(tq_results, route)
    tq_data = [res.data for res in tq_results]

    return tq_results, tq_data
def run(route, prd, **kwargs):
    """

    :type route: pyticas.ttypes.Route
    :type prd: pyticas.ttypes.Period
    :return:
    """

    # load_data total flow data
    ks_results = density.run(route, prd)
    ks_results = moe_helper.add_virtual_rnodes(ks_results, route)
    ks_data = [res.data for res in ks_results]

    return ks_results, ks_data
示例#9
0
def run(route, prd, **kwargs):
    """

    :type route: pyticas.ttypes.Route
    :type prd: pyticas.ttypes.Period
    :return:
    """
    rnode_list = route.get_stations()

    # load_data total flow data
    tq = moe_helper.get_total_flow(rnode_list, prd, **kwargs)
    tq_results = moe_helper.add_virtual_rnodes(tq, route)
    lane_data = [res.lanes for res in tq_results]

    return lane_data
def run(route, prd, **kwargs):
    """

    :type route: pyticas.ttypes.Route
    :type prd: pyticas.ttypes.Period
    :return:
    """
    rnode_list = route.get_stations()

    # load_data total flow data
    us = moe_helper.get_speed(rnode_list, prd, **kwargs)
    us_results = moe_helper.add_virtual_rnodes(us, route)
    us_data = [res.data for res in us_results]
    us_data = spatial_avg.imputation(us_data)

    return us, us_results, us_data
示例#11
0
def run(route, prd, **kwargs):
    """

    :type route: pyticas.ttypes.Route
    :type prd: pyticas.ttypes.Period
    :return:
    """
    ext_hour = kwargs.get('ext_hour', DEFAULT_END_HOUR_EXTENSION)
    now = datetime.datetime.now()
    ext_prd = prd.clone().extend_end_hour(ext_hour)

    if ext_prd.end_date > datetime.datetime.now():
        ext_prd.end_date = now

    n_origin_data = len(prd.get_timeline())

    # load_data speed data (load_data more data than given period)
    us = moe_helper.get_speed(route.get_stations(), ext_prd, **kwargs)
    us_results = moe_helper.add_virtual_rnodes(us, route)

    us_data = [res.data for res in us_results]
    us_data = spatial_avg.imputation(us_data)

    # make empty whole_data for travel time by copying speed whole_data and reseting data
    tt_results = [res.clone() for res in us_results]
    for idx, res in enumerate(tt_results):
        tt_results[idx].traffic_type = TrafficType.travel_time

    for ridx, res in enumerate(tt_results):
        tt_results[ridx].data = [-1] * n_origin_data
        tt_results[ridx].prd = prd

    # calculate travel time by increasing time index
    for tidx in range(n_origin_data):
        partial_data = [pd[tidx:] for pd in us_data]
        tts = _calculate_tt(partial_data, prd.interval, **kwargs)
        for ridx, tt_data in enumerate(tt_results):
            tt_results[ridx].data[tidx] = tts[ridx]

    return tt_results
示例#12
0
def run(route, prd, **kwargs):
    """

    :type route: pyticas.ttypes.Route
    :type prd: pyticas.ttypes.Period
    :return:
    """
    rnode_list = route.get_stations()

    # load_data total flow data
    tq = moe_helper.get_total_flow(rnode_list, prd, **kwargs)
    tq_results = moe_helper.add_virtual_rnodes(tq, route)
    tq_data = [res.data for res in tq_results]

    # copy whole_data to save VMT values
    n_data = len(prd.get_timeline())
    vmt_results = [res.clone() for res in tq_results]

    # calculate VMT
    vmt_data = _calculate_vmt(tq_data, prd.interval, **kwargs)
    for ridx, res in enumerate(vmt_results):
        res.data = vmt_data[ridx]

    return vmt_results
示例#13
0
def run(route, prd, **kwargs):
    """

    :type route: pyticas.ttypes.Route
    :type prd: pyticas.ttypes.Period
    :return:
    """

    # load_data vmt data
    vmt_results = vmt.run(route, prd)

    # load_data speed data
    us_results = speed.run(route, prd)
    us_results = moe_helper.add_virtual_rnodes(us_results, route)

    # copy whole_data to save VMT values
    dvh_results = [res.clone() for res in vmt_results]

    # calculate VHT
    dvh_data = _calculate_dvh(vmt_results, us_results, prd.interval, **kwargs)
    for ridx, res in enumerate(dvh_results):
        res.data = dvh_data[ridx]

    return dvh_results
示例#14
0

if __name__ == '__main__':
    import os
    from pyticas.infra import Infra
    from pyticas import route
    from pyticas import period
    from pyticas.moe import writer

    data_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../../../../data'))
    Infra.initialize(data_path)
    infra = Infra.load_infra()
    r = route.load_route_by_name('Route I-494 WB')
    prd1 = period.create_period_from_string('2016-05-17 06:00:00', '2016-05-17 09:00:00', 300)
    prd2 = period.create_period_from_string('2016-05-18 06:00:00', '2016-05-18 09:00:00', 300)

    res1 = run(r, prd1)
    res2 = run(r, prd2)
    res = [res1, res2]

    writer.write_cm(os.path.join(infra.get_path('moe', create=True), 'cm.xlsx'), r, res)

    from pyticas.moe.mods import speed

    ures1 = speed.run(r, prd1)
    ures2 = speed.run(r, prd2)
    ures1 = moe_helper.add_virtual_rnodes(ures1, r)
    ures2 = moe_helper.add_virtual_rnodes(ures2, r)
    ures = [ures1, ures2]
    writer.write(os.path.join(infra.get_path('moe', create=True), 'u.xlsx'), r, ures)