Esempio n. 1
0
def test_mode_shift_multiple_tours():
    plan = Plan('a')
    plan.add(Activity(1, 'home', 'a', start_time=mtdt(0), end_time=mtdt(60)))
    plan.add(Leg(1, mode='car', start_time=mtdt(60), end_time=mtdt(90)))
    plan.add(Activity(2, 'work', 'b', start_time=mtdt(90), end_time=mtdt(500)))
    plan.add(Leg(2, mode='car', start_time=mtdt(500), end_time=mtdt(400)))
    plan.add(Activity(3, 'shop', 'b', start_time=mtdt(400),
                      end_time=mtdt(450)))
    plan.add(Leg(3, mode='car', start_time=mtdt(450), end_time=mtdt(600)))
    plan.add(Activity(4, 'work', 'b', start_time=mtdt(600),
                      end_time=mtdt(660)))
    plan.add(Leg(4, mode='car', start_time=mtdt(660), end_time=mtdt(800)))
    plan.add(Activity(5, 'home', 'a', start_time=mtdt(830),
                      end_time=mtdt(860)))
    plan.add(Leg(5, mode='walk', start_time=mtdt(860), end_time=mtdt(900)))
    plan.add(
        Activity(6, 'other', 'a', start_time=mtdt(900), end_time=mtdt(920)))
    plan.add(Leg(6, mode='walk', start_time=mtdt(920), end_time=mtdt(950)))
    plan.add(
        Activity(7,
                 'home',
                 'a',
                 start_time=mtdt(950),
                 end_time=mtdt(24 * 60 - 1)))

    plan.mode_shift(5, 'pt')

    assert [leg.mode
            for leg in plan.legs] == ['pt', 'pt', 'pt', 'pt', 'walk', 'walk']
Esempio n. 2
0
def test_leg_duration():
    plan = Plan('a')
    plan.add(
        Activity(seq=1,
                 act='home',
                 area='a',
                 start_time=mtdt(0),
                 end_time=mtdt(60)))
    plan.add(
        Leg(seq=1,
            mode='car',
            start_area='a',
            end_area='b',
            start_time=mtdt(60),
            end_time=mtdt(90)))
    plan.add(
        Activity(seq=2,
                 act='work',
                 area='b',
                 start_time=mtdt(90),
                 end_time=mtdt(120)))
    plan.add(
        Leg(seq=2,
            mode='car',
            start_area='b',
            end_area='a',
            start_time=mtdt(120),
            end_time=mtdt(180)))

    plan.add(
        Activity(seq=3,
                 act='home',
                 area='a',
                 start_time=mtdt(180),
                 end_time=mtdt(24 * 60 - 1)))

    plan.mode_shift(3,
                    'rail',
                    mode_speed={
                        'car': 37,
                        'bus': 10,
                        'walk': 4,
                        'cycle': 14,
                        'pt': 23,
                        'rail': 37
                    },
                    update_duration=True)

    assert [act.duration for act in plan] == [
        timedelta(seconds=3603),
        timedelta(seconds=1800),
        timedelta(seconds=1800),
        timedelta(seconds=3600),
        timedelta(seconds=75597)
    ]
Esempio n. 3
0
def test_mode_shift_single_tour():
    plan = Plan('a')
    plan.add(Activity(1, 'home', 'a', start_time=mtdt(0), end_time=mtdt(60)))
    plan.add(Leg(1, mode='car', start_time=mtdt(60), end_time=mtdt(90)))
    plan.add(Activity(2, 'shop', 'b', start_time=mtdt(90), end_time=mtdt(500)))
    plan.add(Leg(2, mode='car', start_time=mtdt(500), end_time=mtdt(400)))
    plan.add(
        Activity(3,
                 'home',
                 'a',
                 start_time=mtdt(400),
                 end_time=mtdt(24 * 60 - 1)))

    plan.mode_shift(1, 'pt')

    assert [leg.mode for leg in plan.legs] == ['pt', 'pt']
Esempio n. 4
0
def test_mode_shift_two_tours_third_leg():
    plan = Plan('a')
    plan.add(Activity(1, 'home', 'a', start_time=mtdt(0), end_time=mtdt(60)))
    plan.add(Leg(1, mode='car', start_time=mtdt(60), end_time=mtdt(90)))
    plan.add(Activity(2, 'shop', 'b', start_time=mtdt(90), end_time=mtdt(500)))
    plan.add(Leg(2, mode='car', start_time=mtdt(500), end_time=mtdt(400)))
    plan.add(Activity(3, 'home', 'a', start_time=mtdt(400),
                      end_time=mtdt(860)))
    plan.add(Leg(3, mode='car', start_time=mtdt(860), end_time=mtdt(900)))
    plan.add(Activity(4, 'work', 'a', start_time=mtdt(920),
                      end_time=mtdt(930)))
    plan.add(Leg(4, mode='car', start_time=mtdt(930), end_time=mtdt(1000)))
    plan.add(
        Activity(5,
                 'home',
                 'a',
                 start_time=mtdt(1000),
                 end_time=mtdt(24 * 60 - 1)))

    plan.mode_shift(5, 'pt')

    assert [leg.mode for leg in plan.legs] == ['car', 'car', 'pt', 'pt']