From 7c0bf1469b8727cf2a968ddea01eabff0e534eef Mon Sep 17 00:00:00 2001 From: Toru Seo <34780089+toruseo@users.noreply.github.com> Date: Wed, 20 Mar 2024 20:15:27 +0900 Subject: [PATCH] Add verifications for nodes and SF network --- .../workflows/run-verifications_random.yml | 3 +- .../run-verifications_sioux_falls.yml | 24 + tests/dat/README.md | 5 + tests/dat/siouxfalls_demand.csv | 1057 +++++++++++++++++ tests/dat/siouxfalls_demand_short.csv | 1057 +++++++++++++++++ tests/dat/siouxfalls_links.csv | 77 ++ tests/dat/siouxfalls_nodes.csv | 25 + tests/dat/tokyo_arterial_links.csv | 523 ++++++++ tests/dat/tokyo_arterial_nodes.csv | 221 ++++ tests/dat/uroboros_demand.csv | 3 + tests/dat/uroboros_links.csv | 13 + tests/dat/uroboros_nodes.csv | 9 + tests/test_verification_node.py | 407 +++++++ tests/test_verification_route_choice.py | 2 +- tests/test_verification_sioux_falls.py | 73 ++ 15 files changed, 3497 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/run-verifications_sioux_falls.yml create mode 100644 tests/dat/README.md create mode 100644 tests/dat/siouxfalls_demand.csv create mode 100644 tests/dat/siouxfalls_demand_short.csv create mode 100644 tests/dat/siouxfalls_links.csv create mode 100644 tests/dat/siouxfalls_nodes.csv create mode 100644 tests/dat/tokyo_arterial_links.csv create mode 100644 tests/dat/tokyo_arterial_nodes.csv create mode 100644 tests/dat/uroboros_demand.csv create mode 100644 tests/dat/uroboros_links.csv create mode 100644 tests/dat/uroboros_nodes.csv create mode 100644 tests/test_verification_node.py create mode 100644 tests/test_verification_sioux_falls.py diff --git a/.github/workflows/run-verifications_random.yml b/.github/workflows/run-verifications_random.yml index 3130629..c760fbc 100644 --- a/.github/workflows/run-verifications_random.yml +++ b/.github/workflows/run-verifications_random.yml @@ -1,4 +1,4 @@ -name: Run Python verifications (flaky due to random numbers) +name: Run Python verifications involves random route choice and node (flaky) on: push: @@ -22,3 +22,4 @@ jobs: run: pip install pytest pytest-rerunfailures setuptools - name: Run verifications with pytest run: pytest tests/test_verification_route_choice.py --durations=0 -v + run: pytest tests/test_verification_node.py --durations=0 -v diff --git a/.github/workflows/run-verifications_sioux_falls.yml b/.github/workflows/run-verifications_sioux_falls.yml new file mode 100644 index 0000000..7df5f83 --- /dev/null +++ b/.github/workflows/run-verifications_sioux_falls.yml @@ -0,0 +1,24 @@ +name: Run Python verifications in Sioux Falls network (flaky) + +on: + push: + pull_request: + workflow_dispatch: + schedule: + - cron: '0 6 * * 1' + +jobs: + run-verifications-random: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python 3.12 + uses: actions/setup-python@v5 + with: + python-version: "3.12" + - name: Install uxsim and dependencies + run: pip install . + - name: Install pytest other dependencies + run: pip install pytest pytest-rerunfailures setuptools + - name: Run verifications with pytest + run: pytest tests/test_verification_sioux_falls.py --durations=0 -v diff --git a/tests/dat/README.md b/tests/dat/README.md new file mode 100644 index 0000000..c9be3c0 --- /dev/null +++ b/tests/dat/README.md @@ -0,0 +1,5 @@ +Scenario data. + +Source: +siouxfalls_* are derived from Transportation Networks for Research https://github.com/bstabler/TransportationNetworks by Transportation Networks for Research Core Team. +tokyo_arterial_* are derived from OpenStreetMap https://www.openstreetmap.org/. \ No newline at end of file diff --git a/tests/dat/siouxfalls_demand.csv b/tests/dat/siouxfalls_demand.csv new file mode 100644 index 0000000..f1ca8ae --- /dev/null +++ b/tests/dat/siouxfalls_demand.csv @@ -0,0 +1,1057 @@ +orig,dest,start_t,end_t,q +1,2,0,4800,0.00165 +1,3,0,4800,0.00165 +1,4,0,4800,0.00835 +1,5,0,4800,0.00335 +1,6,0,4800,0.005 +1,7,0,4800,0.00835 +1,8,0,4800,0.01335 +1,9,0,4800,0.00835 +1,10,0,4800,0.02165 +1,11,0,4800,0.00835 +1,12,0,4800,0.00335 +1,13,0,4800,0.00835 +1,14,0,4800,0.005 +1,15,0,4800,0.00835 +1,16,0,4800,0.00835 +1,17,0,4800,0.00665 +1,18,0,4800,0.00165 +1,19,0,4800,0.005 +1,20,0,4800,0.005 +1,21,0,4800,0.00165 +1,22,0,4800,0.00665 +1,23,0,4800,0.005 +1,24,0,4800,0.00165 +2,1,0,4800,0.00165 +2,3,0,4800,0.00165 +2,4,0,4800,0.00335 +2,5,0,4800,0.00165 +2,6,0,4800,0.00665 +2,7,0,4800,0.00335 +2,8,0,4800,0.00665 +2,9,0,4800,0.00335 +2,10,0,4800,0.01 +2,11,0,4800,0.00335 +2,12,0,4800,0.00165 +2,13,0,4800,0.005 +2,14,0,4800,0.00165 +2,15,0,4800,0.00165 +2,16,0,4800,0.00665 +2,17,0,4800,0.00335 +2,19,0,4800,0.00165 +2,20,0,4800,0.00165 +2,22,0,4800,0.00165 +3,1,0,4800,0.00165 +3,2,0,4800,0.00165 +3,4,0,4800,0.00335 +3,5,0,4800,0.00165 +3,6,0,4800,0.005 +3,7,0,4800,0.00165 +3,8,0,4800,0.00335 +3,9,0,4800,0.00165 +3,10,0,4800,0.005 +3,11,0,4800,0.005 +3,12,0,4800,0.00335 +3,13,0,4800,0.00165 +3,14,0,4800,0.00165 +3,15,0,4800,0.00165 +3,16,0,4800,0.00335 +3,17,0,4800,0.00165 +3,22,0,4800,0.00165 +3,23,0,4800,0.00165 +4,1,0,4800,0.00835 +4,2,0,4800,0.00335 +4,3,0,4800,0.00335 +4,5,0,4800,0.00835 +4,6,0,4800,0.00665 +4,7,0,4800,0.00665 +4,8,0,4800,0.01165 +4,9,0,4800,0.01165 +4,10,0,4800,0.02 +4,11,0,4800,0.02335 +4,12,0,4800,0.01 +4,13,0,4800,0.01 +4,14,0,4800,0.00835 +4,15,0,4800,0.00835 +4,16,0,4800,0.01335 +4,17,0,4800,0.00835 +4,18,0,4800,0.00165 +4,19,0,4800,0.00335 +4,20,0,4800,0.005 +4,21,0,4800,0.00335 +4,22,0,4800,0.00665 +4,23,0,4800,0.00835 +4,24,0,4800,0.00335 +5,1,0,4800,0.00335 +5,2,0,4800,0.00165 +5,3,0,4800,0.00165 +5,4,0,4800,0.00835 +5,6,0,4800,0.00335 +5,7,0,4800,0.00335 +5,8,0,4800,0.00835 +5,9,0,4800,0.01335 +5,10,0,4800,0.01665 +5,11,0,4800,0.00835 +5,12,0,4800,0.00335 +5,13,0,4800,0.00335 +5,14,0,4800,0.00165 +5,15,0,4800,0.00335 +5,16,0,4800,0.00835 +5,17,0,4800,0.00335 +5,19,0,4800,0.00165 +5,20,0,4800,0.00165 +5,21,0,4800,0.00165 +5,22,0,4800,0.00335 +5,23,0,4800,0.00165 +6,1,0,4800,0.005 +6,2,0,4800,0.00665 +6,3,0,4800,0.005 +6,4,0,4800,0.00665 +6,5,0,4800,0.00335 +6,7,0,4800,0.00665 +6,8,0,4800,0.01335 +6,9,0,4800,0.00665 +6,10,0,4800,0.01335 +6,11,0,4800,0.00665 +6,12,0,4800,0.00335 +6,13,0,4800,0.00335 +6,14,0,4800,0.00165 +6,15,0,4800,0.00335 +6,16,0,4800,0.015 +6,17,0,4800,0.00835 +6,18,0,4800,0.00165 +6,19,0,4800,0.00335 +6,20,0,4800,0.005 +6,21,0,4800,0.00165 +6,22,0,4800,0.00335 +6,23,0,4800,0.00165 +6,24,0,4800,0.00165 +7,1,0,4800,0.00835 +7,2,0,4800,0.00335 +7,3,0,4800,0.00165 +7,4,0,4800,0.00665 +7,5,0,4800,0.00335 +7,6,0,4800,0.00665 +7,8,0,4800,0.01665 +7,9,0,4800,0.01 +7,10,0,4800,0.03165 +7,11,0,4800,0.00835 +7,12,0,4800,0.01165 +7,13,0,4800,0.00665 +7,14,0,4800,0.00335 +7,15,0,4800,0.00835 +7,16,0,4800,0.02335 +7,17,0,4800,0.01665 +7,18,0,4800,0.00335 +7,19,0,4800,0.00665 +7,20,0,4800,0.00835 +7,21,0,4800,0.00335 +7,22,0,4800,0.00835 +7,23,0,4800,0.00335 +7,24,0,4800,0.00165 +8,1,0,4800,0.01335 +8,2,0,4800,0.00665 +8,3,0,4800,0.00335 +8,4,0,4800,0.01165 +8,5,0,4800,0.00835 +8,6,0,4800,0.01335 +8,7,0,4800,0.01665 +8,9,0,4800,0.01335 +8,10,0,4800,0.02665 +8,11,0,4800,0.01335 +8,12,0,4800,0.01 +8,13,0,4800,0.01 +8,14,0,4800,0.00665 +8,15,0,4800,0.01 +8,16,0,4800,0.03665 +8,17,0,4800,0.02335 +8,18,0,4800,0.005 +8,19,0,4800,0.01165 +8,20,0,4800,0.015 +8,21,0,4800,0.00665 +8,22,0,4800,0.00835 +8,23,0,4800,0.005 +8,24,0,4800,0.00335 +9,1,0,4800,0.00835 +9,2,0,4800,0.00335 +9,3,0,4800,0.00165 +9,4,0,4800,0.01165 +9,5,0,4800,0.01335 +9,6,0,4800,0.00665 +9,7,0,4800,0.01 +9,8,0,4800,0.01335 +9,10,0,4800,0.04665 +9,11,0,4800,0.02335 +9,12,0,4800,0.01 +9,13,0,4800,0.01 +9,14,0,4800,0.01 +9,15,0,4800,0.015 +9,16,0,4800,0.02335 +9,17,0,4800,0.015 +9,18,0,4800,0.00335 +9,19,0,4800,0.00665 +9,20,0,4800,0.01 +9,21,0,4800,0.005 +9,22,0,4800,0.01165 +9,23,0,4800,0.00835 +9,24,0,4800,0.00335 +10,1,0,4800,0.02165 +10,2,0,4800,0.01 +10,3,0,4800,0.005 +10,4,0,4800,0.02 +10,5,0,4800,0.01665 +10,6,0,4800,0.01335 +10,7,0,4800,0.03165 +10,8,0,4800,0.02665 +10,9,0,4800,0.04665 +10,11,0,4800,0.06665 +10,12,0,4800,0.03335 +10,13,0,4800,0.03165 +10,14,0,4800,0.035 +10,15,0,4800,0.06665 +10,16,0,4800,0.07335 +10,17,0,4800,0.065 +10,18,0,4800,0.01165 +10,19,0,4800,0.03 +10,20,0,4800,0.04165 +10,21,0,4800,0.02 +10,22,0,4800,0.04335 +10,23,0,4800,0.03 +10,24,0,4800,0.01335 +11,1,0,4800,0.00835 +11,2,0,4800,0.00335 +11,3,0,4800,0.005 +11,4,0,4800,0.025 +11,5,0,4800,0.00835 +11,6,0,4800,0.00665 +11,7,0,4800,0.00835 +11,8,0,4800,0.01335 +11,9,0,4800,0.02335 +11,10,0,4800,0.065 +11,12,0,4800,0.02335 +11,13,0,4800,0.01665 +11,14,0,4800,0.02665 +11,15,0,4800,0.02335 +11,16,0,4800,0.02335 +11,17,0,4800,0.01665 +11,18,0,4800,0.00165 +11,19,0,4800,0.00665 +11,20,0,4800,0.01 +11,21,0,4800,0.00665 +11,22,0,4800,0.01835 +11,23,0,4800,0.02165 +11,24,0,4800,0.01 +12,1,0,4800,0.00335 +12,2,0,4800,0.00165 +12,3,0,4800,0.00335 +12,4,0,4800,0.01 +12,5,0,4800,0.00335 +12,6,0,4800,0.00335 +12,7,0,4800,0.01165 +12,8,0,4800,0.01 +12,9,0,4800,0.01 +12,10,0,4800,0.03335 +12,11,0,4800,0.02335 +12,13,0,4800,0.02165 +12,14,0,4800,0.01165 +12,15,0,4800,0.01165 +12,16,0,4800,0.01165 +12,17,0,4800,0.01 +12,18,0,4800,0.00335 +12,19,0,4800,0.005 +12,20,0,4800,0.00665 +12,21,0,4800,0.005 +12,22,0,4800,0.01165 +12,23,0,4800,0.01165 +12,24,0,4800,0.00835 +13,1,0,4800,0.00835 +13,2,0,4800,0.005 +13,3,0,4800,0.00165 +13,4,0,4800,0.01 +13,5,0,4800,0.00335 +13,6,0,4800,0.00335 +13,7,0,4800,0.00665 +13,8,0,4800,0.01 +13,9,0,4800,0.01 +13,10,0,4800,0.03165 +13,11,0,4800,0.01665 +13,12,0,4800,0.02165 +13,14,0,4800,0.01 +13,15,0,4800,0.01165 +13,16,0,4800,0.01 +13,17,0,4800,0.00835 +13,18,0,4800,0.00165 +13,19,0,4800,0.005 +13,20,0,4800,0.01 +13,21,0,4800,0.01 +13,22,0,4800,0.02165 +13,23,0,4800,0.01335 +13,24,0,4800,0.01335 +14,1,0,4800,0.005 +14,2,0,4800,0.00165 +14,3,0,4800,0.00165 +14,4,0,4800,0.00835 +14,5,0,4800,0.00165 +14,6,0,4800,0.00165 +14,7,0,4800,0.00335 +14,8,0,4800,0.00665 +14,9,0,4800,0.01 +14,10,0,4800,0.035 +14,11,0,4800,0.02665 +14,12,0,4800,0.01165 +14,13,0,4800,0.01 +14,15,0,4800,0.02165 +14,16,0,4800,0.01165 +14,17,0,4800,0.01165 +14,18,0,4800,0.00165 +14,19,0,4800,0.005 +14,20,0,4800,0.00835 +14,21,0,4800,0.00665 +14,22,0,4800,0.02 +14,23,0,4800,0.01835 +14,24,0,4800,0.00665 +15,1,0,4800,0.00835 +15,2,0,4800,0.00165 +15,3,0,4800,0.00165 +15,4,0,4800,0.00835 +15,5,0,4800,0.00335 +15,6,0,4800,0.00335 +15,7,0,4800,0.00835 +15,8,0,4800,0.01 +15,9,0,4800,0.01665 +15,10,0,4800,0.06665 +15,11,0,4800,0.02335 +15,12,0,4800,0.01165 +15,13,0,4800,0.01165 +15,14,0,4800,0.02165 +15,16,0,4800,0.02 +15,17,0,4800,0.025 +15,18,0,4800,0.00335 +15,19,0,4800,0.01335 +15,20,0,4800,0.01835 +15,21,0,4800,0.01335 +15,22,0,4800,0.04335 +15,23,0,4800,0.01665 +15,24,0,4800,0.00665 +16,1,0,4800,0.00835 +16,2,0,4800,0.00665 +16,3,0,4800,0.00335 +16,4,0,4800,0.01335 +16,5,0,4800,0.00835 +16,6,0,4800,0.015 +16,7,0,4800,0.02335 +16,8,0,4800,0.03665 +16,9,0,4800,0.02335 +16,10,0,4800,0.07335 +16,11,0,4800,0.02335 +16,12,0,4800,0.01165 +16,13,0,4800,0.01 +16,14,0,4800,0.01165 +16,15,0,4800,0.02 +16,17,0,4800,0.04665 +16,18,0,4800,0.00835 +16,19,0,4800,0.02165 +16,20,0,4800,0.02665 +16,21,0,4800,0.01 +16,22,0,4800,0.02 +16,23,0,4800,0.00835 +16,24,0,4800,0.005 +17,1,0,4800,0.00665 +17,2,0,4800,0.00335 +17,3,0,4800,0.00165 +17,4,0,4800,0.00835 +17,5,0,4800,0.00335 +17,6,0,4800,0.00835 +17,7,0,4800,0.01665 +17,8,0,4800,0.02335 +17,9,0,4800,0.015 +17,10,0,4800,0.065 +17,11,0,4800,0.01665 +17,12,0,4800,0.01 +17,13,0,4800,0.00835 +17,14,0,4800,0.01165 +17,15,0,4800,0.025 +17,16,0,4800,0.04665 +17,18,0,4800,0.01 +17,19,0,4800,0.02835 +17,20,0,4800,0.02835 +17,21,0,4800,0.01 +17,22,0,4800,0.02835 +17,23,0,4800,0.01 +17,24,0,4800,0.005 +18,1,0,4800,0.00165 +18,4,0,4800,0.00165 +18,6,0,4800,0.00165 +18,7,0,4800,0.00335 +18,8,0,4800,0.005 +18,9,0,4800,0.00335 +18,10,0,4800,0.01165 +18,11,0,4800,0.00335 +18,12,0,4800,0.00335 +18,13,0,4800,0.00165 +18,14,0,4800,0.00165 +18,15,0,4800,0.00335 +18,16,0,4800,0.00835 +18,17,0,4800,0.01 +18,19,0,4800,0.005 +18,20,0,4800,0.00665 +18,21,0,4800,0.00165 +18,22,0,4800,0.005 +18,23,0,4800,0.00165 +19,1,0,4800,0.005 +19,2,0,4800,0.00165 +19,4,0,4800,0.00335 +19,5,0,4800,0.00165 +19,6,0,4800,0.00335 +19,7,0,4800,0.00665 +19,8,0,4800,0.01165 +19,9,0,4800,0.00665 +19,10,0,4800,0.03 +19,11,0,4800,0.00665 +19,12,0,4800,0.005 +19,13,0,4800,0.005 +19,14,0,4800,0.005 +19,15,0,4800,0.01335 +19,16,0,4800,0.02165 +19,17,0,4800,0.02835 +19,18,0,4800,0.005 +19,20,0,4800,0.02 +19,21,0,4800,0.00665 +19,22,0,4800,0.02 +19,23,0,4800,0.005 +19,24,0,4800,0.00165 +20,1,0,4800,0.005 +20,2,0,4800,0.00165 +20,4,0,4800,0.005 +20,5,0,4800,0.00165 +20,6,0,4800,0.005 +20,7,0,4800,0.00835 +20,8,0,4800,0.015 +20,9,0,4800,0.01 +20,10,0,4800,0.04165 +20,11,0,4800,0.01 +20,12,0,4800,0.00835 +20,13,0,4800,0.01 +20,14,0,4800,0.00835 +20,15,0,4800,0.01835 +20,16,0,4800,0.02665 +20,17,0,4800,0.02835 +20,18,0,4800,0.00665 +20,19,0,4800,0.02 +20,21,0,4800,0.02 +20,22,0,4800,0.04 +20,23,0,4800,0.01165 +20,24,0,4800,0.00665 +21,1,0,4800,0.00165 +21,4,0,4800,0.00335 +21,5,0,4800,0.00165 +21,6,0,4800,0.00165 +21,7,0,4800,0.00335 +21,8,0,4800,0.00665 +21,9,0,4800,0.005 +21,10,0,4800,0.02 +21,11,0,4800,0.00665 +21,12,0,4800,0.005 +21,13,0,4800,0.01 +21,14,0,4800,0.00665 +21,15,0,4800,0.01335 +21,16,0,4800,0.01 +21,17,0,4800,0.01 +21,18,0,4800,0.00165 +21,19,0,4800,0.00665 +21,20,0,4800,0.02 +21,22,0,4800,0.03 +21,23,0,4800,0.01165 +21,24,0,4800,0.00835 +22,1,0,4800,0.00665 +22,2,0,4800,0.00165 +22,3,0,4800,0.00165 +22,4,0,4800,0.00665 +22,5,0,4800,0.00335 +22,6,0,4800,0.00335 +22,7,0,4800,0.00835 +22,8,0,4800,0.00835 +22,9,0,4800,0.01165 +22,10,0,4800,0.04335 +22,11,0,4800,0.01835 +22,12,0,4800,0.01165 +22,13,0,4800,0.02165 +22,14,0,4800,0.02 +22,15,0,4800,0.04335 +22,16,0,4800,0.02 +22,17,0,4800,0.02835 +22,18,0,4800,0.005 +22,19,0,4800,0.02 +22,20,0,4800,0.04 +22,21,0,4800,0.03 +22,23,0,4800,0.035 +22,24,0,4800,0.01835 +23,1,0,4800,0.005 +23,3,0,4800,0.00165 +23,4,0,4800,0.00835 +23,5,0,4800,0.00165 +23,6,0,4800,0.00165 +23,7,0,4800,0.00335 +23,8,0,4800,0.005 +23,9,0,4800,0.00835 +23,10,0,4800,0.03 +23,11,0,4800,0.02165 +23,12,0,4800,0.01165 +23,13,0,4800,0.01335 +23,14,0,4800,0.01835 +23,15,0,4800,0.01665 +23,16,0,4800,0.00835 +23,17,0,4800,0.01 +23,18,0,4800,0.00165 +23,19,0,4800,0.005 +23,20,0,4800,0.01165 +23,21,0,4800,0.01165 +23,22,0,4800,0.035 +23,24,0,4800,0.01165 +24,1,0,4800,0.00165 +24,4,0,4800,0.00335 +24,6,0,4800,0.00165 +24,7,0,4800,0.00165 +24,8,0,4800,0.00335 +24,9,0,4800,0.00335 +24,10,0,4800,0.01335 +24,11,0,4800,0.01 +24,12,0,4800,0.00835 +24,13,0,4800,0.01165 +24,14,0,4800,0.00665 +24,15,0,4800,0.00665 +24,16,0,4800,0.005 +24,17,0,4800,0.005 +24,19,0,4800,0.00165 +24,20,0,4800,0.00665 +24,21,0,4800,0.00835 +24,22,0,4800,0.01835 +24,23,0,4800,0.01165 +1,2,0,4800,0.0005 +1,3,0,4800,0.0005 +1,4,0,4800,0.0025 +1,5,0,4800,0.001 +1,6,0,4800,0.0015 +1,7,0,4800,0.0025 +1,8,0,4800,0.004 +1,9,0,4800,0.0025 +1,10,0,4800,0.0065 +1,11,0,4800,0.0025 +1,12,0,4800,0.001 +1,13,0,4800,0.0025 +1,14,0,4800,0.0015 +1,15,0,4800,0.0025 +1,16,0,4800,0.0025 +1,17,0,4800,0.002 +1,18,0,4800,0.0005 +1,19,0,4800,0.0015 +1,20,0,4800,0.0015 +1,21,0,4800,0.0005 +1,22,0,4800,0.002 +1,23,0,4800,0.0015 +1,24,0,4800,0.0005 +2,1,0,4800,0.0005 +2,3,0,4800,0.0005 +2,4,0,4800,0.001 +2,5,0,4800,0.0005 +2,6,0,4800,0.002 +2,7,0,4800,0.001 +2,8,0,4800,0.002 +2,9,0,4800,0.001 +2,10,0,4800,0.003 +2,11,0,4800,0.001 +2,12,0,4800,0.0005 +2,13,0,4800,0.0015 +2,14,0,4800,0.0005 +2,15,0,4800,0.0005 +2,16,0,4800,0.002 +2,17,0,4800,0.001 +2,19,0,4800,0.0005 +2,20,0,4800,0.0005 +2,22,0,4800,0.0005 +3,1,0,4800,0.0005 +3,2,0,4800,0.0005 +3,4,0,4800,0.001 +3,5,0,4800,0.0005 +3,6,0,4800,0.0015 +3,7,0,4800,0.0005 +3,8,0,4800,0.001 +3,9,0,4800,0.0005 +3,10,0,4800,0.0015 +3,11,0,4800,0.0015 +3,12,0,4800,0.001 +3,13,0,4800,0.0005 +3,14,0,4800,0.0005 +3,15,0,4800,0.0005 +3,16,0,4800,0.001 +3,17,0,4800,0.0005 +3,22,0,4800,0.0005 +3,23,0,4800,0.0005 +4,1,0,4800,0.0025 +4,2,0,4800,0.001 +4,3,0,4800,0.001 +4,5,0,4800,0.0025 +4,6,0,4800,0.002 +4,7,0,4800,0.002 +4,8,0,4800,0.0035 +4,9,0,4800,0.0035 +4,10,0,4800,0.006 +4,11,0,4800,0.007 +4,12,0,4800,0.003 +4,13,0,4800,0.003 +4,14,0,4800,0.0025 +4,15,0,4800,0.0025 +4,16,0,4800,0.004 +4,17,0,4800,0.0025 +4,18,0,4800,0.0005 +4,19,0,4800,0.001 +4,20,0,4800,0.0015 +4,21,0,4800,0.001 +4,22,0,4800,0.002 +4,23,0,4800,0.0025 +4,24,0,4800,0.001 +5,1,0,4800,0.001 +5,2,0,4800,0.0005 +5,3,0,4800,0.0005 +5,4,0,4800,0.0025 +5,6,0,4800,0.001 +5,7,0,4800,0.001 +5,8,0,4800,0.0025 +5,9,0,4800,0.004 +5,10,0,4800,0.005 +5,11,0,4800,0.0025 +5,12,0,4800,0.001 +5,13,0,4800,0.001 +5,14,0,4800,0.0005 +5,15,0,4800,0.001 +5,16,0,4800,0.0025 +5,17,0,4800,0.001 +5,19,0,4800,0.0005 +5,20,0,4800,0.0005 +5,21,0,4800,0.0005 +5,22,0,4800,0.001 +5,23,0,4800,0.0005 +6,1,0,4800,0.0015 +6,2,0,4800,0.002 +6,3,0,4800,0.0015 +6,4,0,4800,0.002 +6,5,0,4800,0.001 +6,7,0,4800,0.002 +6,8,0,4800,0.004 +6,9,0,4800,0.002 +6,10,0,4800,0.004 +6,11,0,4800,0.002 +6,12,0,4800,0.001 +6,13,0,4800,0.001 +6,14,0,4800,0.0005 +6,15,0,4800,0.001 +6,16,0,4800,0.0045 +6,17,0,4800,0.0025 +6,18,0,4800,0.0005 +6,19,0,4800,0.001 +6,20,0,4800,0.0015 +6,21,0,4800,0.0005 +6,22,0,4800,0.001 +6,23,0,4800,0.0005 +6,24,0,4800,0.0005 +7,1,0,4800,0.0025 +7,2,0,4800,0.001 +7,3,0,4800,0.0005 +7,4,0,4800,0.002 +7,5,0,4800,0.001 +7,6,0,4800,0.002 +7,8,0,4800,0.005 +7,9,0,4800,0.003 +7,10,0,4800,0.0095 +7,11,0,4800,0.0025 +7,12,0,4800,0.0035 +7,13,0,4800,0.002 +7,14,0,4800,0.001 +7,15,0,4800,0.0025 +7,16,0,4800,0.007 +7,17,0,4800,0.005 +7,18,0,4800,0.001 +7,19,0,4800,0.002 +7,20,0,4800,0.0025 +7,21,0,4800,0.001 +7,22,0,4800,0.0025 +7,23,0,4800,0.001 +7,24,0,4800,0.0005 +8,1,0,4800,0.004 +8,2,0,4800,0.002 +8,3,0,4800,0.001 +8,4,0,4800,0.0035 +8,5,0,4800,0.0025 +8,6,0,4800,0.004 +8,7,0,4800,0.005 +8,9,0,4800,0.004 +8,10,0,4800,0.008 +8,11,0,4800,0.004 +8,12,0,4800,0.003 +8,13,0,4800,0.003 +8,14,0,4800,0.002 +8,15,0,4800,0.003 +8,16,0,4800,0.011 +8,17,0,4800,0.007 +8,18,0,4800,0.0015 +8,19,0,4800,0.0035 +8,20,0,4800,0.0045 +8,21,0,4800,0.002 +8,22,0,4800,0.0025 +8,23,0,4800,0.0015 +8,24,0,4800,0.001 +9,1,0,4800,0.0025 +9,2,0,4800,0.001 +9,3,0,4800,0.0005 +9,4,0,4800,0.0035 +9,5,0,4800,0.004 +9,6,0,4800,0.002 +9,7,0,4800,0.003 +9,8,0,4800,0.004 +9,10,0,4800,0.014 +9,11,0,4800,0.007 +9,12,0,4800,0.003 +9,13,0,4800,0.003 +9,14,0,4800,0.003 +9,15,0,4800,0.0045 +9,16,0,4800,0.007 +9,17,0,4800,0.0045 +9,18,0,4800,0.001 +9,19,0,4800,0.002 +9,20,0,4800,0.003 +9,21,0,4800,0.0015 +9,22,0,4800,0.0035 +9,23,0,4800,0.0025 +9,24,0,4800,0.001 +10,1,0,4800,0.0065 +10,2,0,4800,0.003 +10,3,0,4800,0.0015 +10,4,0,4800,0.006 +10,5,0,4800,0.005 +10,6,0,4800,0.004 +10,7,0,4800,0.0095 +10,8,0,4800,0.008 +10,9,0,4800,0.014 +10,11,0,4800,0.02 +10,12,0,4800,0.01 +10,13,0,4800,0.0095 +10,14,0,4800,0.0105 +10,15,0,4800,0.02 +10,16,0,4800,0.022 +10,17,0,4800,0.0195 +10,18,0,4800,0.0035 +10,19,0,4800,0.009 +10,20,0,4800,0.0125 +10,21,0,4800,0.006 +10,22,0,4800,0.013 +10,23,0,4800,0.009 +10,24,0,4800,0.004 +11,1,0,4800,0.0025 +11,2,0,4800,0.001 +11,3,0,4800,0.0015 +11,4,0,4800,0.0075 +11,5,0,4800,0.0025 +11,6,0,4800,0.002 +11,7,0,4800,0.0025 +11,8,0,4800,0.004 +11,9,0,4800,0.007 +11,10,0,4800,0.0195 +11,12,0,4800,0.007 +11,13,0,4800,0.005 +11,14,0,4800,0.008 +11,15,0,4800,0.007 +11,16,0,4800,0.007 +11,17,0,4800,0.005 +11,18,0,4800,0.0005 +11,19,0,4800,0.002 +11,20,0,4800,0.003 +11,21,0,4800,0.002 +11,22,0,4800,0.0055 +11,23,0,4800,0.0065 +11,24,0,4800,0.003 +12,1,0,4800,0.001 +12,2,0,4800,0.0005 +12,3,0,4800,0.001 +12,4,0,4800,0.003 +12,5,0,4800,0.001 +12,6,0,4800,0.001 +12,7,0,4800,0.0035 +12,8,0,4800,0.003 +12,9,0,4800,0.003 +12,10,0,4800,0.01 +12,11,0,4800,0.007 +12,13,0,4800,0.0065 +12,14,0,4800,0.0035 +12,15,0,4800,0.0035 +12,16,0,4800,0.0035 +12,17,0,4800,0.003 +12,18,0,4800,0.001 +12,19,0,4800,0.0015 +12,20,0,4800,0.002 +12,21,0,4800,0.0015 +12,22,0,4800,0.0035 +12,23,0,4800,0.0035 +12,24,0,4800,0.0025 +13,1,0,4800,0.0025 +13,2,0,4800,0.0015 +13,3,0,4800,0.0005 +13,4,0,4800,0.003 +13,5,0,4800,0.001 +13,6,0,4800,0.001 +13,7,0,4800,0.002 +13,8,0,4800,0.003 +13,9,0,4800,0.003 +13,10,0,4800,0.0095 +13,11,0,4800,0.005 +13,12,0,4800,0.0065 +13,14,0,4800,0.003 +13,15,0,4800,0.0035 +13,16,0,4800,0.003 +13,17,0,4800,0.0025 +13,18,0,4800,0.0005 +13,19,0,4800,0.0015 +13,20,0,4800,0.003 +13,21,0,4800,0.003 +13,22,0,4800,0.0065 +13,23,0,4800,0.004 +13,24,0,4800,0.004 +14,1,0,4800,0.0015 +14,2,0,4800,0.0005 +14,3,0,4800,0.0005 +14,4,0,4800,0.0025 +14,5,0,4800,0.0005 +14,6,0,4800,0.0005 +14,7,0,4800,0.001 +14,8,0,4800,0.002 +14,9,0,4800,0.003 +14,10,0,4800,0.0105 +14,11,0,4800,0.008 +14,12,0,4800,0.0035 +14,13,0,4800,0.003 +14,15,0,4800,0.0065 +14,16,0,4800,0.0035 +14,17,0,4800,0.0035 +14,18,0,4800,0.0005 +14,19,0,4800,0.0015 +14,20,0,4800,0.0025 +14,21,0,4800,0.002 +14,22,0,4800,0.006 +14,23,0,4800,0.0055 +14,24,0,4800,0.002 +15,1,0,4800,0.0025 +15,2,0,4800,0.0005 +15,3,0,4800,0.0005 +15,4,0,4800,0.0025 +15,5,0,4800,0.001 +15,6,0,4800,0.001 +15,7,0,4800,0.0025 +15,8,0,4800,0.003 +15,9,0,4800,0.005 +15,10,0,4800,0.02 +15,11,0,4800,0.007 +15,12,0,4800,0.0035 +15,13,0,4800,0.0035 +15,14,0,4800,0.0065 +15,16,0,4800,0.006 +15,17,0,4800,0.0075 +15,18,0,4800,0.001 +15,19,0,4800,0.004 +15,20,0,4800,0.0055 +15,21,0,4800,0.004 +15,22,0,4800,0.013 +15,23,0,4800,0.005 +15,24,0,4800,0.002 +16,1,0,4800,0.0025 +16,2,0,4800,0.002 +16,3,0,4800,0.001 +16,4,0,4800,0.004 +16,5,0,4800,0.0025 +16,6,0,4800,0.0045 +16,7,0,4800,0.007 +16,8,0,4800,0.011 +16,9,0,4800,0.007 +16,10,0,4800,0.022 +16,11,0,4800,0.007 +16,12,0,4800,0.0035 +16,13,0,4800,0.003 +16,14,0,4800,0.0035 +16,15,0,4800,0.006 +16,17,0,4800,0.014 +16,18,0,4800,0.0025 +16,19,0,4800,0.0065 +16,20,0,4800,0.008 +16,21,0,4800,0.003 +16,22,0,4800,0.006 +16,23,0,4800,0.0025 +16,24,0,4800,0.0015 +17,1,0,4800,0.002 +17,2,0,4800,0.001 +17,3,0,4800,0.0005 +17,4,0,4800,0.0025 +17,5,0,4800,0.001 +17,6,0,4800,0.0025 +17,7,0,4800,0.005 +17,8,0,4800,0.007 +17,9,0,4800,0.0045 +17,10,0,4800,0.0195 +17,11,0,4800,0.005 +17,12,0,4800,0.003 +17,13,0,4800,0.0025 +17,14,0,4800,0.0035 +17,15,0,4800,0.0075 +17,16,0,4800,0.014 +17,18,0,4800,0.003 +17,19,0,4800,0.0085 +17,20,0,4800,0.0085 +17,21,0,4800,0.003 +17,22,0,4800,0.0085 +17,23,0,4800,0.003 +17,24,0,4800,0.0015 +18,1,0,4800,0.0005 +18,4,0,4800,0.0005 +18,6,0,4800,0.0005 +18,7,0,4800,0.001 +18,8,0,4800,0.0015 +18,9,0,4800,0.001 +18,10,0,4800,0.0035 +18,11,0,4800,0.001 +18,12,0,4800,0.001 +18,13,0,4800,0.0005 +18,14,0,4800,0.0005 +18,15,0,4800,0.001 +18,16,0,4800,0.0025 +18,17,0,4800,0.003 +18,19,0,4800,0.0015 +18,20,0,4800,0.002 +18,21,0,4800,0.0005 +18,22,0,4800,0.0015 +18,23,0,4800,0.0005 +19,1,0,4800,0.0015 +19,2,0,4800,0.0005 +19,4,0,4800,0.001 +19,5,0,4800,0.0005 +19,6,0,4800,0.001 +19,7,0,4800,0.002 +19,8,0,4800,0.0035 +19,9,0,4800,0.002 +19,10,0,4800,0.009 +19,11,0,4800,0.002 +19,12,0,4800,0.0015 +19,13,0,4800,0.0015 +19,14,0,4800,0.0015 +19,15,0,4800,0.004 +19,16,0,4800,0.0065 +19,17,0,4800,0.0085 +19,18,0,4800,0.0015 +19,20,0,4800,0.006 +19,21,0,4800,0.002 +19,22,0,4800,0.006 +19,23,0,4800,0.0015 +19,24,0,4800,0.0005 +20,1,0,4800,0.0015 +20,2,0,4800,0.0005 +20,4,0,4800,0.0015 +20,5,0,4800,0.0005 +20,6,0,4800,0.0015 +20,7,0,4800,0.0025 +20,8,0,4800,0.0045 +20,9,0,4800,0.003 +20,10,0,4800,0.0125 +20,11,0,4800,0.003 +20,12,0,4800,0.0025 +20,13,0,4800,0.003 +20,14,0,4800,0.0025 +20,15,0,4800,0.0055 +20,16,0,4800,0.008 +20,17,0,4800,0.0085 +20,18,0,4800,0.002 +20,19,0,4800,0.006 +20,21,0,4800,0.006 +20,22,0,4800,0.012 +20,23,0,4800,0.0035 +20,24,0,4800,0.002 +21,1,0,4800,0.0005 +21,4,0,4800,0.001 +21,5,0,4800,0.0005 +21,6,0,4800,0.0005 +21,7,0,4800,0.001 +21,8,0,4800,0.002 +21,9,0,4800,0.0015 +21,10,0,4800,0.006 +21,11,0,4800,0.002 +21,12,0,4800,0.0015 +21,13,0,4800,0.003 +21,14,0,4800,0.002 +21,15,0,4800,0.004 +21,16,0,4800,0.003 +21,17,0,4800,0.003 +21,18,0,4800,0.0005 +21,19,0,4800,0.002 +21,20,0,4800,0.006 +21,22,0,4800,0.009 +21,23,0,4800,0.0035 +21,24,0,4800,0.0025 +22,1,0,4800,0.002 +22,2,0,4800,0.0005 +22,3,0,4800,0.0005 +22,4,0,4800,0.002 +22,5,0,4800,0.001 +22,6,0,4800,0.001 +22,7,0,4800,0.0025 +22,8,0,4800,0.0025 +22,9,0,4800,0.0035 +22,10,0,4800,0.013 +22,11,0,4800,0.0055 +22,12,0,4800,0.0035 +22,13,0,4800,0.0065 +22,14,0,4800,0.006 +22,15,0,4800,0.013 +22,16,0,4800,0.006 +22,17,0,4800,0.0085 +22,18,0,4800,0.0015 +22,19,0,4800,0.006 +22,20,0,4800,0.012 +22,21,0,4800,0.009 +22,23,0,4800,0.0105 +22,24,0,4800,0.0055 +23,1,0,4800,0.0015 +23,3,0,4800,0.0005 +23,4,0,4800,0.0025 +23,5,0,4800,0.0005 +23,6,0,4800,0.0005 +23,7,0,4800,0.001 +23,8,0,4800,0.0015 +23,9,0,4800,0.0025 +23,10,0,4800,0.009 +23,11,0,4800,0.0065 +23,12,0,4800,0.0035 +23,13,0,4800,0.004 +23,14,0,4800,0.0055 +23,15,0,4800,0.005 +23,16,0,4800,0.0025 +23,17,0,4800,0.003 +23,18,0,4800,0.0005 +23,19,0,4800,0.0015 +23,20,0,4800,0.0035 +23,21,0,4800,0.0035 +23,22,0,4800,0.0105 +23,24,0,4800,0.0035 +24,1,0,4800,0.0005 +24,4,0,4800,0.001 +24,6,0,4800,0.0005 +24,7,0,4800,0.0005 +24,8,0,4800,0.001 +24,9,0,4800,0.001 +24,10,0,4800,0.004 +24,11,0,4800,0.003 +24,12,0,4800,0.0025 +24,13,0,4800,0.0035 +24,14,0,4800,0.002 +24,15,0,4800,0.002 +24,16,0,4800,0.0015 +24,17,0,4800,0.0015 +24,19,0,4800,0.0005 +24,20,0,4800,0.002 +24,21,0,4800,0.0025 +24,22,0,4800,0.0055 +24,23,0,4800,0.0035 diff --git a/tests/dat/siouxfalls_demand_short.csv b/tests/dat/siouxfalls_demand_short.csv new file mode 100644 index 0000000..f7cff13 --- /dev/null +++ b/tests/dat/siouxfalls_demand_short.csv @@ -0,0 +1,1057 @@ +orig,dest,start_t,end_t,q +1,2,0,2400,0.0033 +1,3,0,2400,0.0033 +1,4,0,2400,0.0167 +1,5,0,2400,0.0067 +1,6,0,2400,0.0100 +1,7,0,2400,0.0167 +1,8,0,2400,0.0267 +1,9,0,2400,0.0167 +1,10,0,2400,0.0433 +1,11,0,2400,0.0167 +1,12,0,2400,0.0067 +1,13,0,2400,0.0167 +1,14,0,2400,0.0100 +1,15,0,2400,0.0167 +1,16,0,2400,0.0167 +1,17,0,2400,0.0133 +1,18,0,2400,0.0033 +1,19,0,2400,0.0100 +1,20,0,2400,0.0100 +1,21,0,2400,0.0033 +1,22,0,2400,0.0133 +1,23,0,2400,0.0100 +1,24,0,2400,0.0033 +2,1,0,2400,0.0033 +2,3,0,2400,0.0033 +2,4,0,2400,0.0067 +2,5,0,2400,0.0033 +2,6,0,2400,0.0133 +2,7,0,2400,0.0067 +2,8,0,2400,0.0133 +2,9,0,2400,0.0067 +2,10,0,2400,0.0200 +2,11,0,2400,0.0067 +2,12,0,2400,0.0033 +2,13,0,2400,0.0100 +2,14,0,2400,0.0033 +2,15,0,2400,0.0033 +2,16,0,2400,0.0133 +2,17,0,2400,0.0067 +2,19,0,2400,0.0033 +2,20,0,2400,0.0033 +2,22,0,2400,0.0033 +3,1,0,2400,0.0033 +3,2,0,2400,0.0033 +3,4,0,2400,0.0067 +3,5,0,2400,0.0033 +3,6,0,2400,0.0100 +3,7,0,2400,0.0033 +3,8,0,2400,0.0067 +3,9,0,2400,0.0033 +3,10,0,2400,0.0100 +3,11,0,2400,0.0100 +3,12,0,2400,0.0067 +3,13,0,2400,0.0033 +3,14,0,2400,0.0033 +3,15,0,2400,0.0033 +3,16,0,2400,0.0067 +3,17,0,2400,0.0033 +3,22,0,2400,0.0033 +3,23,0,2400,0.0033 +4,1,0,2400,0.0167 +4,2,0,2400,0.0067 +4,3,0,2400,0.0067 +4,5,0,2400,0.0167 +4,6,0,2400,0.0133 +4,7,0,2400,0.0133 +4,8,0,2400,0.0233 +4,9,0,2400,0.0233 +4,10,0,2400,0.0400 +4,11,0,2400,0.0467 +4,12,0,2400,0.0200 +4,13,0,2400,0.0200 +4,14,0,2400,0.0167 +4,15,0,2400,0.0167 +4,16,0,2400,0.0267 +4,17,0,2400,0.0167 +4,18,0,2400,0.0033 +4,19,0,2400,0.0067 +4,20,0,2400,0.0100 +4,21,0,2400,0.0067 +4,22,0,2400,0.0133 +4,23,0,2400,0.0167 +4,24,0,2400,0.0067 +5,1,0,2400,0.0067 +5,2,0,2400,0.0033 +5,3,0,2400,0.0033 +5,4,0,2400,0.0167 +5,6,0,2400,0.0067 +5,7,0,2400,0.0067 +5,8,0,2400,0.0167 +5,9,0,2400,0.0267 +5,10,0,2400,0.0333 +5,11,0,2400,0.0167 +5,12,0,2400,0.0067 +5,13,0,2400,0.0067 +5,14,0,2400,0.0033 +5,15,0,2400,0.0067 +5,16,0,2400,0.0167 +5,17,0,2400,0.0067 +5,19,0,2400,0.0033 +5,20,0,2400,0.0033 +5,21,0,2400,0.0033 +5,22,0,2400,0.0067 +5,23,0,2400,0.0033 +6,1,0,2400,0.0100 +6,2,0,2400,0.0133 +6,3,0,2400,0.0100 +6,4,0,2400,0.0133 +6,5,0,2400,0.0067 +6,7,0,2400,0.0133 +6,8,0,2400,0.0267 +6,9,0,2400,0.0133 +6,10,0,2400,0.0267 +6,11,0,2400,0.0133 +6,12,0,2400,0.0067 +6,13,0,2400,0.0067 +6,14,0,2400,0.0033 +6,15,0,2400,0.0067 +6,16,0,2400,0.0300 +6,17,0,2400,0.0167 +6,18,0,2400,0.0033 +6,19,0,2400,0.0067 +6,20,0,2400,0.0100 +6,21,0,2400,0.0033 +6,22,0,2400,0.0067 +6,23,0,2400,0.0033 +6,24,0,2400,0.0033 +7,1,0,2400,0.0167 +7,2,0,2400,0.0067 +7,3,0,2400,0.0033 +7,4,0,2400,0.0133 +7,5,0,2400,0.0067 +7,6,0,2400,0.0133 +7,8,0,2400,0.0333 +7,9,0,2400,0.0200 +7,10,0,2400,0.0633 +7,11,0,2400,0.0167 +7,12,0,2400,0.0233 +7,13,0,2400,0.0133 +7,14,0,2400,0.0067 +7,15,0,2400,0.0167 +7,16,0,2400,0.0467 +7,17,0,2400,0.0333 +7,18,0,2400,0.0067 +7,19,0,2400,0.0133 +7,20,0,2400,0.0167 +7,21,0,2400,0.0067 +7,22,0,2400,0.0167 +7,23,0,2400,0.0067 +7,24,0,2400,0.0033 +8,1,0,2400,0.0267 +8,2,0,2400,0.0133 +8,3,0,2400,0.0067 +8,4,0,2400,0.0233 +8,5,0,2400,0.0167 +8,6,0,2400,0.0267 +8,7,0,2400,0.0333 +8,9,0,2400,0.0267 +8,10,0,2400,0.0533 +8,11,0,2400,0.0267 +8,12,0,2400,0.0200 +8,13,0,2400,0.0200 +8,14,0,2400,0.0133 +8,15,0,2400,0.0200 +8,16,0,2400,0.0733 +8,17,0,2400,0.0467 +8,18,0,2400,0.0100 +8,19,0,2400,0.0233 +8,20,0,2400,0.0300 +8,21,0,2400,0.0133 +8,22,0,2400,0.0167 +8,23,0,2400,0.0100 +8,24,0,2400,0.0067 +9,1,0,2400,0.0167 +9,2,0,2400,0.0067 +9,3,0,2400,0.0033 +9,4,0,2400,0.0233 +9,5,0,2400,0.0267 +9,6,0,2400,0.0133 +9,7,0,2400,0.0200 +9,8,0,2400,0.0267 +9,10,0,2400,0.0933 +9,11,0,2400,0.0467 +9,12,0,2400,0.0200 +9,13,0,2400,0.0200 +9,14,0,2400,0.0200 +9,15,0,2400,0.0300 +9,16,0,2400,0.0467 +9,17,0,2400,0.0300 +9,18,0,2400,0.0067 +9,19,0,2400,0.0133 +9,20,0,2400,0.0200 +9,21,0,2400,0.0100 +9,22,0,2400,0.0233 +9,23,0,2400,0.0167 +9,24,0,2400,0.0067 +10,1,0,2400,0.0433 +10,2,0,2400,0.0200 +10,3,0,2400,0.0100 +10,4,0,2400,0.0400 +10,5,0,2400,0.0333 +10,6,0,2400,0.0267 +10,7,0,2400,0.0633 +10,8,0,2400,0.0533 +10,9,0,2400,0.0933 +10,11,0,2400,0.1333 +10,12,0,2400,0.0667 +10,13,0,2400,0.0633 +10,14,0,2400,0.0700 +10,15,0,2400,0.1333 +10,16,0,2400,0.1467 +10,17,0,2400,0.1300 +10,18,0,2400,0.0233 +10,19,0,2400,0.0600 +10,20,0,2400,0.0833 +10,21,0,2400,0.0400 +10,22,0,2400,0.0867 +10,23,0,2400,0.0600 +10,24,0,2400,0.0267 +11,1,0,2400,0.0167 +11,2,0,2400,0.0067 +11,3,0,2400,0.0100 +11,4,0,2400,0.0500 +11,5,0,2400,0.0167 +11,6,0,2400,0.0133 +11,7,0,2400,0.0167 +11,8,0,2400,0.0267 +11,9,0,2400,0.0467 +11,10,0,2400,0.1300 +11,12,0,2400,0.0467 +11,13,0,2400,0.0333 +11,14,0,2400,0.0533 +11,15,0,2400,0.0467 +11,16,0,2400,0.0467 +11,17,0,2400,0.0333 +11,18,0,2400,0.0033 +11,19,0,2400,0.0133 +11,20,0,2400,0.0200 +11,21,0,2400,0.0133 +11,22,0,2400,0.0367 +11,23,0,2400,0.0433 +11,24,0,2400,0.0200 +12,1,0,2400,0.0067 +12,2,0,2400,0.0033 +12,3,0,2400,0.0067 +12,4,0,2400,0.0200 +12,5,0,2400,0.0067 +12,6,0,2400,0.0067 +12,7,0,2400,0.0233 +12,8,0,2400,0.0200 +12,9,0,2400,0.0200 +12,10,0,2400,0.0667 +12,11,0,2400,0.0467 +12,13,0,2400,0.0433 +12,14,0,2400,0.0233 +12,15,0,2400,0.0233 +12,16,0,2400,0.0233 +12,17,0,2400,0.0200 +12,18,0,2400,0.0067 +12,19,0,2400,0.0100 +12,20,0,2400,0.0133 +12,21,0,2400,0.0100 +12,22,0,2400,0.0233 +12,23,0,2400,0.0233 +12,24,0,2400,0.0167 +13,1,0,2400,0.0167 +13,2,0,2400,0.0100 +13,3,0,2400,0.0033 +13,4,0,2400,0.0200 +13,5,0,2400,0.0067 +13,6,0,2400,0.0067 +13,7,0,2400,0.0133 +13,8,0,2400,0.0200 +13,9,0,2400,0.0200 +13,10,0,2400,0.0633 +13,11,0,2400,0.0333 +13,12,0,2400,0.0433 +13,14,0,2400,0.0200 +13,15,0,2400,0.0233 +13,16,0,2400,0.0200 +13,17,0,2400,0.0167 +13,18,0,2400,0.0033 +13,19,0,2400,0.0100 +13,20,0,2400,0.0200 +13,21,0,2400,0.0200 +13,22,0,2400,0.0433 +13,23,0,2400,0.0267 +13,24,0,2400,0.0267 +14,1,0,2400,0.0100 +14,2,0,2400,0.0033 +14,3,0,2400,0.0033 +14,4,0,2400,0.0167 +14,5,0,2400,0.0033 +14,6,0,2400,0.0033 +14,7,0,2400,0.0067 +14,8,0,2400,0.0133 +14,9,0,2400,0.0200 +14,10,0,2400,0.0700 +14,11,0,2400,0.0533 +14,12,0,2400,0.0233 +14,13,0,2400,0.0200 +14,15,0,2400,0.0433 +14,16,0,2400,0.0233 +14,17,0,2400,0.0233 +14,18,0,2400,0.0033 +14,19,0,2400,0.0100 +14,20,0,2400,0.0167 +14,21,0,2400,0.0133 +14,22,0,2400,0.0400 +14,23,0,2400,0.0367 +14,24,0,2400,0.0133 +15,1,0,2400,0.0167 +15,2,0,2400,0.0033 +15,3,0,2400,0.0033 +15,4,0,2400,0.0167 +15,5,0,2400,0.0067 +15,6,0,2400,0.0067 +15,7,0,2400,0.0167 +15,8,0,2400,0.0200 +15,9,0,2400,0.0333 +15,10,0,2400,0.1333 +15,11,0,2400,0.0467 +15,12,0,2400,0.0233 +15,13,0,2400,0.0233 +15,14,0,2400,0.0433 +15,16,0,2400,0.0400 +15,17,0,2400,0.0500 +15,18,0,2400,0.0067 +15,19,0,2400,0.0267 +15,20,0,2400,0.0367 +15,21,0,2400,0.0267 +15,22,0,2400,0.0867 +15,23,0,2400,0.0333 +15,24,0,2400,0.0133 +16,1,0,2400,0.0167 +16,2,0,2400,0.0133 +16,3,0,2400,0.0067 +16,4,0,2400,0.0267 +16,5,0,2400,0.0167 +16,6,0,2400,0.0300 +16,7,0,2400,0.0467 +16,8,0,2400,0.0733 +16,9,0,2400,0.0467 +16,10,0,2400,0.1467 +16,11,0,2400,0.0467 +16,12,0,2400,0.0233 +16,13,0,2400,0.0200 +16,14,0,2400,0.0233 +16,15,0,2400,0.0400 +16,17,0,2400,0.0933 +16,18,0,2400,0.0167 +16,19,0,2400,0.0433 +16,20,0,2400,0.0533 +16,21,0,2400,0.0200 +16,22,0,2400,0.0400 +16,23,0,2400,0.0167 +16,24,0,2400,0.0100 +17,1,0,2400,0.0133 +17,2,0,2400,0.0067 +17,3,0,2400,0.0033 +17,4,0,2400,0.0167 +17,5,0,2400,0.0067 +17,6,0,2400,0.0167 +17,7,0,2400,0.0333 +17,8,0,2400,0.0467 +17,9,0,2400,0.0300 +17,10,0,2400,0.1300 +17,11,0,2400,0.0333 +17,12,0,2400,0.0200 +17,13,0,2400,0.0167 +17,14,0,2400,0.0233 +17,15,0,2400,0.0500 +17,16,0,2400,0.0933 +17,18,0,2400,0.0200 +17,19,0,2400,0.0567 +17,20,0,2400,0.0567 +17,21,0,2400,0.0200 +17,22,0,2400,0.0567 +17,23,0,2400,0.0200 +17,24,0,2400,0.0100 +18,1,0,2400,0.0033 +18,4,0,2400,0.0033 +18,6,0,2400,0.0033 +18,7,0,2400,0.0067 +18,8,0,2400,0.0100 +18,9,0,2400,0.0067 +18,10,0,2400,0.0233 +18,11,0,2400,0.0067 +18,12,0,2400,0.0067 +18,13,0,2400,0.0033 +18,14,0,2400,0.0033 +18,15,0,2400,0.0067 +18,16,0,2400,0.0167 +18,17,0,2400,0.0200 +18,19,0,2400,0.0100 +18,20,0,2400,0.0133 +18,21,0,2400,0.0033 +18,22,0,2400,0.0100 +18,23,0,2400,0.0033 +19,1,0,2400,0.0100 +19,2,0,2400,0.0033 +19,4,0,2400,0.0067 +19,5,0,2400,0.0033 +19,6,0,2400,0.0067 +19,7,0,2400,0.0133 +19,8,0,2400,0.0233 +19,9,0,2400,0.0133 +19,10,0,2400,0.0600 +19,11,0,2400,0.0133 +19,12,0,2400,0.0100 +19,13,0,2400,0.0100 +19,14,0,2400,0.0100 +19,15,0,2400,0.0267 +19,16,0,2400,0.0433 +19,17,0,2400,0.0567 +19,18,0,2400,0.0100 +19,20,0,2400,0.0400 +19,21,0,2400,0.0133 +19,22,0,2400,0.0400 +19,23,0,2400,0.0100 +19,24,0,2400,0.0033 +20,1,0,2400,0.0100 +20,2,0,2400,0.0033 +20,4,0,2400,0.0100 +20,5,0,2400,0.0033 +20,6,0,2400,0.0100 +20,7,0,2400,0.0167 +20,8,0,2400,0.0300 +20,9,0,2400,0.0200 +20,10,0,2400,0.0833 +20,11,0,2400,0.0200 +20,12,0,2400,0.0167 +20,13,0,2400,0.0200 +20,14,0,2400,0.0167 +20,15,0,2400,0.0367 +20,16,0,2400,0.0533 +20,17,0,2400,0.0567 +20,18,0,2400,0.0133 +20,19,0,2400,0.0400 +20,21,0,2400,0.0400 +20,22,0,2400,0.0800 +20,23,0,2400,0.0233 +20,24,0,2400,0.0133 +21,1,0,2400,0.0033 +21,4,0,2400,0.0067 +21,5,0,2400,0.0033 +21,6,0,2400,0.0033 +21,7,0,2400,0.0067 +21,8,0,2400,0.0133 +21,9,0,2400,0.0100 +21,10,0,2400,0.0400 +21,11,0,2400,0.0133 +21,12,0,2400,0.0100 +21,13,0,2400,0.0200 +21,14,0,2400,0.0133 +21,15,0,2400,0.0267 +21,16,0,2400,0.0200 +21,17,0,2400,0.0200 +21,18,0,2400,0.0033 +21,19,0,2400,0.0133 +21,20,0,2400,0.0400 +21,22,0,2400,0.0600 +21,23,0,2400,0.0233 +21,24,0,2400,0.0167 +22,1,0,2400,0.0133 +22,2,0,2400,0.0033 +22,3,0,2400,0.0033 +22,4,0,2400,0.0133 +22,5,0,2400,0.0067 +22,6,0,2400,0.0067 +22,7,0,2400,0.0167 +22,8,0,2400,0.0167 +22,9,0,2400,0.0233 +22,10,0,2400,0.0867 +22,11,0,2400,0.0367 +22,12,0,2400,0.0233 +22,13,0,2400,0.0433 +22,14,0,2400,0.0400 +22,15,0,2400,0.0867 +22,16,0,2400,0.0400 +22,17,0,2400,0.0567 +22,18,0,2400,0.0100 +22,19,0,2400,0.0400 +22,20,0,2400,0.0800 +22,21,0,2400,0.0600 +22,23,0,2400,0.0700 +22,24,0,2400,0.0367 +23,1,0,2400,0.0100 +23,3,0,2400,0.0033 +23,4,0,2400,0.0167 +23,5,0,2400,0.0033 +23,6,0,2400,0.0033 +23,7,0,2400,0.0067 +23,8,0,2400,0.0100 +23,9,0,2400,0.0167 +23,10,0,2400,0.0600 +23,11,0,2400,0.0433 +23,12,0,2400,0.0233 +23,13,0,2400,0.0267 +23,14,0,2400,0.0367 +23,15,0,2400,0.0333 +23,16,0,2400,0.0167 +23,17,0,2400,0.0200 +23,18,0,2400,0.0033 +23,19,0,2400,0.0100 +23,20,0,2400,0.0233 +23,21,0,2400,0.0233 +23,22,0,2400,0.0700 +23,24,0,2400,0.0233 +24,1,0,2400,0.0033 +24,4,0,2400,0.0067 +24,6,0,2400,0.0033 +24,7,0,2400,0.0033 +24,8,0,2400,0.0067 +24,9,0,2400,0.0067 +24,10,0,2400,0.0267 +24,11,0,2400,0.0200 +24,12,0,2400,0.0167 +24,13,0,2400,0.0233 +24,14,0,2400,0.0133 +24,15,0,2400,0.0133 +24,16,0,2400,0.0100 +24,17,0,2400,0.0100 +24,19,0,2400,0.0033 +24,20,0,2400,0.0133 +24,21,0,2400,0.0167 +24,22,0,2400,0.0367 +24,23,0,2400,0.0233 +1,2,0,2400,0.001 +1,3,0,2400,0.001 +1,4,0,2400,0.005 +1,5,0,2400,0.002 +1,6,0,2400,0.003 +1,7,0,2400,0.005 +1,8,0,2400,0.008 +1,9,0,2400,0.005 +1,10,0,2400,0.013 +1,11,0,2400,0.005 +1,12,0,2400,0.002 +1,13,0,2400,0.005 +1,14,0,2400,0.003 +1,15,0,2400,0.005 +1,16,0,2400,0.005 +1,17,0,2400,0.004 +1,18,0,2400,0.001 +1,19,0,2400,0.003 +1,20,0,2400,0.003 +1,21,0,2400,0.001 +1,22,0,2400,0.004 +1,23,0,2400,0.003 +1,24,0,2400,0.001 +2,1,0,2400,0.001 +2,3,0,2400,0.001 +2,4,0,2400,0.002 +2,5,0,2400,0.001 +2,6,0,2400,0.004 +2,7,0,2400,0.002 +2,8,0,2400,0.004 +2,9,0,2400,0.002 +2,10,0,2400,0.006 +2,11,0,2400,0.002 +2,12,0,2400,0.001 +2,13,0,2400,0.003 +2,14,0,2400,0.001 +2,15,0,2400,0.001 +2,16,0,2400,0.004 +2,17,0,2400,0.002 +2,19,0,2400,0.001 +2,20,0,2400,0.001 +2,22,0,2400,0.001 +3,1,0,2400,0.001 +3,2,0,2400,0.001 +3,4,0,2400,0.002 +3,5,0,2400,0.001 +3,6,0,2400,0.003 +3,7,0,2400,0.001 +3,8,0,2400,0.002 +3,9,0,2400,0.001 +3,10,0,2400,0.003 +3,11,0,2400,0.003 +3,12,0,2400,0.002 +3,13,0,2400,0.001 +3,14,0,2400,0.001 +3,15,0,2400,0.001 +3,16,0,2400,0.002 +3,17,0,2400,0.001 +3,22,0,2400,0.001 +3,23,0,2400,0.001 +4,1,0,2400,0.005 +4,2,0,2400,0.002 +4,3,0,2400,0.002 +4,5,0,2400,0.005 +4,6,0,2400,0.004 +4,7,0,2400,0.004 +4,8,0,2400,0.007 +4,9,0,2400,0.007 +4,10,0,2400,0.012 +4,11,0,2400,0.014 +4,12,0,2400,0.006 +4,13,0,2400,0.006 +4,14,0,2400,0.005 +4,15,0,2400,0.005 +4,16,0,2400,0.008 +4,17,0,2400,0.005 +4,18,0,2400,0.001 +4,19,0,2400,0.002 +4,20,0,2400,0.003 +4,21,0,2400,0.002 +4,22,0,2400,0.004 +4,23,0,2400,0.005 +4,24,0,2400,0.002 +5,1,0,2400,0.002 +5,2,0,2400,0.001 +5,3,0,2400,0.001 +5,4,0,2400,0.005 +5,6,0,2400,0.002 +5,7,0,2400,0.002 +5,8,0,2400,0.005 +5,9,0,2400,0.008 +5,10,0,2400,0.01 +5,11,0,2400,0.005 +5,12,0,2400,0.002 +5,13,0,2400,0.002 +5,14,0,2400,0.001 +5,15,0,2400,0.002 +5,16,0,2400,0.005 +5,17,0,2400,0.002 +5,19,0,2400,0.001 +5,20,0,2400,0.001 +5,21,0,2400,0.001 +5,22,0,2400,0.002 +5,23,0,2400,0.001 +6,1,0,2400,0.003 +6,2,0,2400,0.004 +6,3,0,2400,0.003 +6,4,0,2400,0.004 +6,5,0,2400,0.002 +6,7,0,2400,0.004 +6,8,0,2400,0.008 +6,9,0,2400,0.004 +6,10,0,2400,0.008 +6,11,0,2400,0.004 +6,12,0,2400,0.002 +6,13,0,2400,0.002 +6,14,0,2400,0.001 +6,15,0,2400,0.002 +6,16,0,2400,0.009 +6,17,0,2400,0.005 +6,18,0,2400,0.001 +6,19,0,2400,0.002 +6,20,0,2400,0.003 +6,21,0,2400,0.001 +6,22,0,2400,0.002 +6,23,0,2400,0.001 +6,24,0,2400,0.001 +7,1,0,2400,0.005 +7,2,0,2400,0.002 +7,3,0,2400,0.001 +7,4,0,2400,0.004 +7,5,0,2400,0.002 +7,6,0,2400,0.004 +7,8,0,2400,0.01 +7,9,0,2400,0.006 +7,10,0,2400,0.019 +7,11,0,2400,0.005 +7,12,0,2400,0.007 +7,13,0,2400,0.004 +7,14,0,2400,0.002 +7,15,0,2400,0.005 +7,16,0,2400,0.014 +7,17,0,2400,0.01 +7,18,0,2400,0.002 +7,19,0,2400,0.004 +7,20,0,2400,0.005 +7,21,0,2400,0.002 +7,22,0,2400,0.005 +7,23,0,2400,0.002 +7,24,0,2400,0.001 +8,1,0,2400,0.008 +8,2,0,2400,0.004 +8,3,0,2400,0.002 +8,4,0,2400,0.007 +8,5,0,2400,0.005 +8,6,0,2400,0.008 +8,7,0,2400,0.01 +8,9,0,2400,0.008 +8,10,0,2400,0.016 +8,11,0,2400,0.008 +8,12,0,2400,0.006 +8,13,0,2400,0.006 +8,14,0,2400,0.004 +8,15,0,2400,0.006 +8,16,0,2400,0.022 +8,17,0,2400,0.014 +8,18,0,2400,0.003 +8,19,0,2400,0.007 +8,20,0,2400,0.009 +8,21,0,2400,0.004 +8,22,0,2400,0.005 +8,23,0,2400,0.003 +8,24,0,2400,0.002 +9,1,0,2400,0.005 +9,2,0,2400,0.002 +9,3,0,2400,0.001 +9,4,0,2400,0.007 +9,5,0,2400,0.008 +9,6,0,2400,0.004 +9,7,0,2400,0.006 +9,8,0,2400,0.008 +9,10,0,2400,0.028 +9,11,0,2400,0.014 +9,12,0,2400,0.006 +9,13,0,2400,0.006 +9,14,0,2400,0.006 +9,15,0,2400,0.009 +9,16,0,2400,0.014 +9,17,0,2400,0.009 +9,18,0,2400,0.002 +9,19,0,2400,0.004 +9,20,0,2400,0.006 +9,21,0,2400,0.003 +9,22,0,2400,0.007 +9,23,0,2400,0.005 +9,24,0,2400,0.002 +10,1,0,2400,0.013 +10,2,0,2400,0.006 +10,3,0,2400,0.003 +10,4,0,2400,0.012 +10,5,0,2400,0.01 +10,6,0,2400,0.008 +10,7,0,2400,0.019 +10,8,0,2400,0.016 +10,9,0,2400,0.028 +10,11,0,2400,0.04 +10,12,0,2400,0.02 +10,13,0,2400,0.019 +10,14,0,2400,0.021 +10,15,0,2400,0.04 +10,16,0,2400,0.044 +10,17,0,2400,0.039 +10,18,0,2400,0.007 +10,19,0,2400,0.018 +10,20,0,2400,0.025 +10,21,0,2400,0.012 +10,22,0,2400,0.026 +10,23,0,2400,0.018 +10,24,0,2400,0.008 +11,1,0,2400,0.005 +11,2,0,2400,0.002 +11,3,0,2400,0.003 +11,4,0,2400,0.015 +11,5,0,2400,0.005 +11,6,0,2400,0.004 +11,7,0,2400,0.005 +11,8,0,2400,0.008 +11,9,0,2400,0.014 +11,10,0,2400,0.039 +11,12,0,2400,0.014 +11,13,0,2400,0.01 +11,14,0,2400,0.016 +11,15,0,2400,0.014 +11,16,0,2400,0.014 +11,17,0,2400,0.01 +11,18,0,2400,0.001 +11,19,0,2400,0.004 +11,20,0,2400,0.006 +11,21,0,2400,0.004 +11,22,0,2400,0.011 +11,23,0,2400,0.013 +11,24,0,2400,0.006 +12,1,0,2400,0.002 +12,2,0,2400,0.001 +12,3,0,2400,0.002 +12,4,0,2400,0.006 +12,5,0,2400,0.002 +12,6,0,2400,0.002 +12,7,0,2400,0.007 +12,8,0,2400,0.006 +12,9,0,2400,0.006 +12,10,0,2400,0.02 +12,11,0,2400,0.014 +12,13,0,2400,0.013 +12,14,0,2400,0.007 +12,15,0,2400,0.007 +12,16,0,2400,0.007 +12,17,0,2400,0.006 +12,18,0,2400,0.002 +12,19,0,2400,0.003 +12,20,0,2400,0.004 +12,21,0,2400,0.003 +12,22,0,2400,0.007 +12,23,0,2400,0.007 +12,24,0,2400,0.005 +13,1,0,2400,0.005 +13,2,0,2400,0.003 +13,3,0,2400,0.001 +13,4,0,2400,0.006 +13,5,0,2400,0.002 +13,6,0,2400,0.002 +13,7,0,2400,0.004 +13,8,0,2400,0.006 +13,9,0,2400,0.006 +13,10,0,2400,0.019 +13,11,0,2400,0.01 +13,12,0,2400,0.013 +13,14,0,2400,0.006 +13,15,0,2400,0.007 +13,16,0,2400,0.006 +13,17,0,2400,0.005 +13,18,0,2400,0.001 +13,19,0,2400,0.003 +13,20,0,2400,0.006 +13,21,0,2400,0.006 +13,22,0,2400,0.013 +13,23,0,2400,0.008 +13,24,0,2400,0.008 +14,1,0,2400,0.003 +14,2,0,2400,0.001 +14,3,0,2400,0.001 +14,4,0,2400,0.005 +14,5,0,2400,0.001 +14,6,0,2400,0.001 +14,7,0,2400,0.002 +14,8,0,2400,0.004 +14,9,0,2400,0.006 +14,10,0,2400,0.021 +14,11,0,2400,0.016 +14,12,0,2400,0.007 +14,13,0,2400,0.006 +14,15,0,2400,0.013 +14,16,0,2400,0.007 +14,17,0,2400,0.007 +14,18,0,2400,0.001 +14,19,0,2400,0.003 +14,20,0,2400,0.005 +14,21,0,2400,0.004 +14,22,0,2400,0.012 +14,23,0,2400,0.011 +14,24,0,2400,0.004 +15,1,0,2400,0.005 +15,2,0,2400,0.001 +15,3,0,2400,0.001 +15,4,0,2400,0.005 +15,5,0,2400,0.002 +15,6,0,2400,0.002 +15,7,0,2400,0.005 +15,8,0,2400,0.006 +15,9,0,2400,0.01 +15,10,0,2400,0.04 +15,11,0,2400,0.014 +15,12,0,2400,0.007 +15,13,0,2400,0.007 +15,14,0,2400,0.013 +15,16,0,2400,0.012 +15,17,0,2400,0.015 +15,18,0,2400,0.002 +15,19,0,2400,0.008 +15,20,0,2400,0.011 +15,21,0,2400,0.008 +15,22,0,2400,0.026 +15,23,0,2400,0.01 +15,24,0,2400,0.004 +16,1,0,2400,0.005 +16,2,0,2400,0.004 +16,3,0,2400,0.002 +16,4,0,2400,0.008 +16,5,0,2400,0.005 +16,6,0,2400,0.009 +16,7,0,2400,0.014 +16,8,0,2400,0.022 +16,9,0,2400,0.014 +16,10,0,2400,0.044 +16,11,0,2400,0.014 +16,12,0,2400,0.007 +16,13,0,2400,0.006 +16,14,0,2400,0.007 +16,15,0,2400,0.012 +16,17,0,2400,0.028 +16,18,0,2400,0.005 +16,19,0,2400,0.013 +16,20,0,2400,0.016 +16,21,0,2400,0.006 +16,22,0,2400,0.012 +16,23,0,2400,0.005 +16,24,0,2400,0.003 +17,1,0,2400,0.004 +17,2,0,2400,0.002 +17,3,0,2400,0.001 +17,4,0,2400,0.005 +17,5,0,2400,0.002 +17,6,0,2400,0.005 +17,7,0,2400,0.01 +17,8,0,2400,0.014 +17,9,0,2400,0.009 +17,10,0,2400,0.039 +17,11,0,2400,0.01 +17,12,0,2400,0.006 +17,13,0,2400,0.005 +17,14,0,2400,0.007 +17,15,0,2400,0.015 +17,16,0,2400,0.028 +17,18,0,2400,0.006 +17,19,0,2400,0.017 +17,20,0,2400,0.017 +17,21,0,2400,0.006 +17,22,0,2400,0.017 +17,23,0,2400,0.006 +17,24,0,2400,0.003 +18,1,0,2400,0.001 +18,4,0,2400,0.001 +18,6,0,2400,0.001 +18,7,0,2400,0.002 +18,8,0,2400,0.003 +18,9,0,2400,0.002 +18,10,0,2400,0.007 +18,11,0,2400,0.002 +18,12,0,2400,0.002 +18,13,0,2400,0.001 +18,14,0,2400,0.001 +18,15,0,2400,0.002 +18,16,0,2400,0.005 +18,17,0,2400,0.006 +18,19,0,2400,0.003 +18,20,0,2400,0.004 +18,21,0,2400,0.001 +18,22,0,2400,0.003 +18,23,0,2400,0.001 +19,1,0,2400,0.003 +19,2,0,2400,0.001 +19,4,0,2400,0.002 +19,5,0,2400,0.001 +19,6,0,2400,0.002 +19,7,0,2400,0.004 +19,8,0,2400,0.007 +19,9,0,2400,0.004 +19,10,0,2400,0.018 +19,11,0,2400,0.004 +19,12,0,2400,0.003 +19,13,0,2400,0.003 +19,14,0,2400,0.003 +19,15,0,2400,0.008 +19,16,0,2400,0.013 +19,17,0,2400,0.017 +19,18,0,2400,0.003 +19,20,0,2400,0.012 +19,21,0,2400,0.004 +19,22,0,2400,0.012 +19,23,0,2400,0.003 +19,24,0,2400,0.001 +20,1,0,2400,0.003 +20,2,0,2400,0.001 +20,4,0,2400,0.003 +20,5,0,2400,0.001 +20,6,0,2400,0.003 +20,7,0,2400,0.005 +20,8,0,2400,0.009 +20,9,0,2400,0.006 +20,10,0,2400,0.025 +20,11,0,2400,0.006 +20,12,0,2400,0.005 +20,13,0,2400,0.006 +20,14,0,2400,0.005 +20,15,0,2400,0.011 +20,16,0,2400,0.016 +20,17,0,2400,0.017 +20,18,0,2400,0.004 +20,19,0,2400,0.012 +20,21,0,2400,0.012 +20,22,0,2400,0.024 +20,23,0,2400,0.007 +20,24,0,2400,0.004 +21,1,0,2400,0.001 +21,4,0,2400,0.002 +21,5,0,2400,0.001 +21,6,0,2400,0.001 +21,7,0,2400,0.002 +21,8,0,2400,0.004 +21,9,0,2400,0.003 +21,10,0,2400,0.012 +21,11,0,2400,0.004 +21,12,0,2400,0.003 +21,13,0,2400,0.006 +21,14,0,2400,0.004 +21,15,0,2400,0.008 +21,16,0,2400,0.006 +21,17,0,2400,0.006 +21,18,0,2400,0.001 +21,19,0,2400,0.004 +21,20,0,2400,0.012 +21,22,0,2400,0.018 +21,23,0,2400,0.007 +21,24,0,2400,0.005 +22,1,0,2400,0.004 +22,2,0,2400,0.001 +22,3,0,2400,0.001 +22,4,0,2400,0.004 +22,5,0,2400,0.002 +22,6,0,2400,0.002 +22,7,0,2400,0.005 +22,8,0,2400,0.005 +22,9,0,2400,0.007 +22,10,0,2400,0.026 +22,11,0,2400,0.011 +22,12,0,2400,0.007 +22,13,0,2400,0.013 +22,14,0,2400,0.012 +22,15,0,2400,0.026 +22,16,0,2400,0.012 +22,17,0,2400,0.017 +22,18,0,2400,0.003 +22,19,0,2400,0.012 +22,20,0,2400,0.024 +22,21,0,2400,0.018 +22,23,0,2400,0.021 +22,24,0,2400,0.011 +23,1,0,2400,0.003 +23,3,0,2400,0.001 +23,4,0,2400,0.005 +23,5,0,2400,0.001 +23,6,0,2400,0.001 +23,7,0,2400,0.002 +23,8,0,2400,0.003 +23,9,0,2400,0.005 +23,10,0,2400,0.018 +23,11,0,2400,0.013 +23,12,0,2400,0.007 +23,13,0,2400,0.008 +23,14,0,2400,0.011 +23,15,0,2400,0.01 +23,16,0,2400,0.005 +23,17,0,2400,0.006 +23,18,0,2400,0.001 +23,19,0,2400,0.003 +23,20,0,2400,0.007 +23,21,0,2400,0.007 +23,22,0,2400,0.021 +23,24,0,2400,0.007 +24,1,0,2400,0.001 +24,4,0,2400,0.002 +24,6,0,2400,0.001 +24,7,0,2400,0.001 +24,8,0,2400,0.002 +24,9,0,2400,0.002 +24,10,0,2400,0.008 +24,11,0,2400,0.006 +24,12,0,2400,0.005 +24,13,0,2400,0.007 +24,14,0,2400,0.004 +24,15,0,2400,0.004 +24,16,0,2400,0.003 +24,17,0,2400,0.003 +24,19,0,2400,0.001 +24,20,0,2400,0.004 +24,21,0,2400,0.005 +24,22,0,2400,0.011 +24,23,0,2400,0.007 \ No newline at end of file diff --git a/tests/dat/siouxfalls_links.csv b/tests/dat/siouxfalls_links.csv new file mode 100644 index 0000000..00780b5 --- /dev/null +++ b/tests/dat/siouxfalls_links.csv @@ -0,0 +1,77 @@ +name,start,end,length,u,kappa,merge_priority +1-2,1,2,6000,18,0.2,6 +1-3,1,3,4000,15,0.2,5 +2-1,2,1,6000,18,0.2,6 +2-6,2,6,5000,3,0.2,1 +3-1,3,1,4000,15,0.2,5 +3-4,3,4,4000,12,0.2,4 +3-12,3,12,4000,15,0.2,5 +4-3,4,3,4000,12,0.2,4 +4-5,4,5,2000,12,0.2,4 +4-11,4,11,6000,3,0.2,1 +5-4,5,4,2000,12,0.2,4 +5-6,5,6,4000,3,0.2,1 +5-9,5,9,5000,9,0.2,3 +6-2,6,2,5000,3,0.2,1 +6-5,6,5,4000,3,0.2,1 +6-8,6,8,2000,3,0.2,1 +7-8,7,8,3000,6,0.2,2 +7-18,7,18,2000,15,0.2,5 +8-6,8,6,2000,3,0.2,1 +8-7,8,7,3000,6,0.2,2 +8-9,8,9,10000,6,0.2,2 +8-16,8,16,5000,6,0.2,2 +9-5,9,5,5000,9,0.2,3 +9-8,9,8,10000,6,0.2,2 +9-10,9,10,3000,9,0.2,3 +10-9,10,9,3000,9,0.2,3 +10-11,10,11,5000,9,0.2,3 +10-15,10,15,6000,9,0.2,3 +10-16,10,16,4000,3,0.2,1 +10-17,10,17,8000,3,0.2,1 +11-4,11,4,6000,3,0.2,1 +11-10,11,10,5000,9,0.2,3 +11-12,11,12,6000,3,0.2,1 +11-14,11,14,4000,3,0.2,1 +12-3,12,3,4000,15,0.2,5 +12-11,12,11,6000,3,0.2,1 +12-13,12,13,3000,18,0.2,6 +13-12,13,12,3000,18,0.2,6 +13-24,13,24,4000,6,0.2,2 +14-11,14,11,4000,3,0.2,1 +14-15,14,15,5000,6,0.2,2 +14-23,14,23,4000,3,0.2,1 +15-10,15,10,6000,9,0.2,3 +15-14,15,14,5000,6,0.2,2 +15-19,15,19,3000,9,0.2,3 +15-22,15,22,3000,6,0.2,2 +16-8,16,8,5000,6,0.2,2 +16-10,16,10,4000,3,0.2,1 +16-17,16,17,2000,6,0.2,2 +16-18,16,18,3000,12,0.2,4 +17-10,17,10,8000,3,0.2,1 +17-16,17,16,2000,6,0.2,2 +17-19,17,19,2000,3,0.2,1 +18-7,18,7,2000,15,0.2,5 +18-16,18,16,3000,12,0.2,4 +18-20,18,20,4000,15,0.2,5 +19-15,19,15,3000,9,0.2,3 +19-17,19,17,2000,3,0.2,1 +19-20,19,20,4000,6,0.2,2 +20-18,20,18,4000,15,0.2,5 +20-19,20,19,4000,6,0.2,2 +20-21,20,21,6000,6,0.2,2 +20-22,20,22,5000,6,0.2,2 +21-20,21,20,6000,6,0.2,2 +21-22,21,22,2000,6,0.2,2 +21-24,21,24,3000,3,0.2,1 +22-15,22,15,3000,6,0.2,2 +22-20,22,20,5000,6,0.2,2 +22-21,22,21,2000,6,0.2,2 +22-23,22,23,4000,6,0.2,2 +23-14,23,14,4000,3,0.2,1 +23-22,23,22,4000,6,0.2,2 +23-24,23,24,2000,6,0.2,2 +24-13,24,13,4000,6,0.2,2 +24-21,24,21,3000,3,0.2,1 +24-23,24,23,2000,6,0.2,2 \ No newline at end of file diff --git a/tests/dat/siouxfalls_nodes.csv b/tests/dat/siouxfalls_nodes.csv new file mode 100644 index 0000000..5e469ae --- /dev/null +++ b/tests/dat/siouxfalls_nodes.csv @@ -0,0 +1,25 @@ +name,x,y +1,-96.77041974,43.61282792 +2,-96.71125063,43.60581298 +3,-96.77430341,43.5729616 +4,-96.74716843,43.56365362 +5,-96.73156909,43.56403357 +6,-96.71164389,43.58758553 +7,-96.69342281,43.5638436 +8,-96.71138171,43.56232379 +9,-96.73124137,43.54859634 +10,-96.73143801,43.54527088 +11,-96.74684071,43.54413068 +12,-96.78013678,43.54394065 +13,-96.79337655,43.49070718 +14,-96.75103549,43.52930613 +15,-96.73150355,43.52940117 +16,-96.71138171,43.54674361 +17,-96.71138171,43.54128009 +18,-96.69407825,43.54674361 +19,-96.71131617,43.52959125 +20,-96.71118508,43.5153335 +21,-96.7309792,43.51048509 +22,-96.73124137,43.51485818 +23,-96.75090441,43.51485818 +24,-96.74920028,43.50316422 \ No newline at end of file diff --git a/tests/dat/tokyo_arterial_links.csv b/tests/dat/tokyo_arterial_links.csv new file mode 100644 index 0000000..66d3e4b --- /dev/null +++ b/tests/dat/tokyo_arterial_links.csv @@ -0,0 +1,523 @@ +name,start,end,length,u,kappa,merge_priority +0新大橋通り,10276762426,31254272,522.7896733,15,0.2,1 +1海岸通り,596213578,31295413,645.1560636,15,0.2,1 +2旧海岸通り,573283109,31295413,542.3123117,15,0.2,1 +3海岸通り,573283109,574291287,2578.500216,15,0.2,1 +4海岸通り,8957637474,31254272,992.5614454,15,0.2,1 +5海岸通り,8957637474,573283109,976.677243,15,0.2,1 +6新大橋通り,31254272,10276762426,522.7896733,15,0.2,1 +7旧海岸通り,31295413,573283109,542.3123117,15,0.2,1 +8海岸通り,31295413,8957637474,1053.27786,15,0.2,1 +9中央通り,31254272,31254310,567.5572969,15,0.2,1 +10昭和通り,31254310,7107369154,891.6092833,15,0.2,1 +11第一京浜,31254272,31295413,1974.372454,15,0.2,1 +12東京湾岸道路,31288817,31288837,576.3801456,15,0.2,1 +13第一京浜,31295413,31254272,1974.372454,15,0.2,1 +14第一京浜,31295413,8256710188,605.8941611,15,0.2,1 +15第一京浜,8256710188,31295413,605.8941611,15,0.2,1 +16第一京浜,31296925,510103596,2171.400388,15,0.2,1 +17海岸通り,574291287,255555978,760.9437483,15,0.2,1 +18東京湾岸道路,31300424,31300479,1072.679523,15,0.2,1 +19東京湾岸道路,31300495,9156526704,1316.715298,15,0.2,1 +20船堀街道,569066212,6187077964,632.3932337,15,0.2,1 +21船堀街道,569066212,31330112,1771.004297,15,0.2,1 +22職安通り,158030491,9905815562,1376.229856,15,0.2,1 +23靖国通り,733235039,472447039,894.2291667,15,0.2,1 +24桜田通り,31296991,2138849614,735.5046671,15,0.2,1 +25明治通り,196971409,7682112321,2476.553868,15,0.2,1 +26明治通り,196978962,196971409,1235.999661,15,0.2,1 +27駒沢通り,196978962,2179133115,2336.221447,15,0.2,1 +28内堀通り,266241394,243828110,1372.721548,15,0.2,1 +29晴海通り,266241394,4553782957,536.0825774,15,0.2,1 +30江戸通り,209141422,1840174603,749.5885312,15,0.2,1 +31永代通り,236104849,1130812169,314.0240914,15,0.2,1 +32昭和通り,1072641717,251723916,614.9308841,15,0.2,1 +33白山通り,243828110,410176070,576.3776436,15,0.2,1 +34山手通り,244091598,244091604,730.5468495,15,0.2,1 +35山手通り,244091604,1509490960,1469.643667,15,0.2,1 +36明治通り,251007839,600739736,1227.077313,15,0.2,1 +37清洲橋通り,251007839,6363932797,1646.132441,15,0.2,1 +38明治通り,251007839,1028560880,722.171498,15,0.2,1 +39山手通り,251329052,252053197,680.4450294,15,0.2,1 +40山手通り,252053197,261013765,2538.161486,15,0.2,1 +41新目白通り,252053197,1127764754,913.8666358,15,0.2,1 +42靖国通り,251723916,265888496,756.9308673,15,0.2,1 +43内堀通り,243828110,4553782957,1457.20007,15,0.2,1 +44桜田通り,8256710188,31296991,733.9161338,15,0.2,1 +45桜田通り,251860320,2179133115,572.3809993,15,0.2,1 +46北里通り,2179133115,251860320,572.3809993,15,0.2,1 +47駒沢通り,2179133115,196978962,2336.221447,15,0.2,1 +48桜田通り,2179133115,8256710188,1816.359597,15,0.2,1 +49明治通り,252052891,2238497066,629.4395134,15,0.2,1 +50早稲田通り,2238497066,1093626410,636.6491461,15,0.2,1 +51外苑東通り,1125943284,733235039,488.7925515,15,0.2,1 +52甲州街道,1125943284,473173557,1413.39437,15,0.2,1 +53明治通り,600739736,251007839,1227.077313,15,0.2,1 +54清砂大橋通り,252193724,1496284142,1708.243328,15,0.2,1 +55三ツ目通り,252409713,1691781457,653.6917263,15,0.2,1 +56新大橋通り,252409713,600739736,2035.406502,15,0.2,1 +57目黒通り,244091604,252677750,1102.614154,15,0.2,1 +58目黒通り,252677750,2179133115,1390.642185,15,0.2,1 +59環状三号線,252831982,499191199,604.4743896,15,0.2,1 +60外苑東通り,252831982,2138849614,2197.506905,15,0.2,1 +61,252835332,318826081,716.2381198,15,0.2,1 +62新目白通り,252052891,2234986299,705.1386854,15,0.2,1 +63水戸街道,253886315,369930024,1534.841724,15,0.2,1 +64明治通り,253886315,307385903,1136.843698,15,0.2,1 +65水戸街道,369930024,253886315,1534.841724,15,0.2,1 +66玉川通り(道玄坂上),252835332,196971409,597.6165396,15,0.2,1 +67外苑東通り,2138849614,252831982,2197.506905,15,0.2,1 +68祝田通り,2140926816,31296991,571.1224613,15,0.2,1 +69晴海通り,4553782957,31254310,1059.266002,15,0.2,1 +70内堀通り,266241394,255365995,1103.073095,15,0.2,1 +71青山通り,255367453,255365995,585.2509496,15,0.2,1 +72旧海岸通り,255555978,1871509528,2117.020387,15,0.2,1 +73山手通り,255555978,574282925,631.7667741,15,0.2,1 +74青山通り,196971409,1715753257,1441.956932,15,0.2,1 +75山手通り,256368874,1238545412,511.5775614,15,0.2,1 +76山手通り,7197679070,318826081,664.2539785,15,0.2,1 +77玉川通り,318826081,252835332,716.2381198,15,0.2,1 +78山手通り,318826081,258037420,519.3258554,15,0.2,1 +79山手通り,256389156,581779374,596.0600413,15,0.2,1 +80永代通り,1072641717,236104849,240.9465071,15,0.2,1 +81山手通り,258037420,318826081,519.3258554,15,0.2,1 +82国道246号,258041113,255367453,654.293797,15,0.2,1 +83中央通り,31254310,1072641717,1445.864787,15,0.2,1 +84千登世橋,260564972,4492465171,594.8037119,15,0.2,1 +85目白通り,260564972,252053197,2178.189671,15,0.2,1 +86明治通り,260564972,252052891,596.8864582,15,0.2,1 +87早稲田通り,260563125,2234986299,1483.526754,15,0.2,1 +88日比谷豊洲埠頭東雲町線,256676677,6110607118,734.8548921,15,0.2,1 +89晴海通り,6110607118,256676677,734.8548921,15,0.2,1 +90れいめい橋,6110607118,31254310,1550.819624,15,0.2,1 +91山手通り,574282925,574475054,1988.98024,15,0.2,1 +92山手通り,261013765,1928261996,518.0919823,15,0.2,1 +93川越街道,261020689,1928261996,2215.24372,15,0.2,1 +94川越街道,261021465,651618696,374.0434083,15,0.2,1 +95靖国通り,265888496,410176070,1225.87507,15,0.2,1 +96東京湾岸道路,31300479,31300424,1072.679523,15,0.2,1 +97内堀通り,255365995,266241394,1103.073095,15,0.2,1 +98東京湾岸道路,573267631,573267627,462.9189495,15,0.2,1 +99早稲田通り,277836361,260563125,845.9052851,15,0.2,1 +100大久保通り,277836361,1074739630,1066.360824,15,0.2,1 +101,1927429737,563669457,350.5671976,15,0.2,1 +102玉川通り,278276027,318826081,1531.713351,15,0.2,1 +103,278278477,256370366,584.2823477,15,0.2,1 +104環七通り,256370366,278278477,584.2823477,15,0.2,1 +105中山道,279159409,563669457,501.130487,15,0.2,1 +106山手通り,574475054,1958418798,526.8459881,15,0.2,1 +107東京丸子横浜線,1958418798,574475054,526.8459881,15,0.2,1 +108永代通り,2367334285,1798899738,1578.840909,15,0.2,1 +109,569987198,344380706,931.5379982,15,0.2,1 +110環状三号線,569987198,344188060,1172.724839,15,0.2,1 +111法恩寺橋,289946952,1688060923,2037.434303,15,0.2,1 +112三ツ目通り,289946952,369930024,1675.644647,15,0.2,1 +113甲州街道,5091218484,8302849491,1437.171681,15,0.2,1 +114明治通り,295403278,473173557,226.3945028,15,0.2,1 +115甲州街道(西新宿),295403278,295429192,1500.891828,15,0.2,1 +116外苑東通り,733235039,1125943284,488.7925515,15,0.2,1 +117甲州街道,295429192,5091218484,668.4456278,15,0.2,1 +118江戸通り,303799924,1691781723,820.9807658,15,0.2,1 +119明治通り,1688060923,253886315,2186.0474,15,0.2,1 +120尾竹橋通り,1612760617,1686031727,1710.846406,15,0.2,1 +121尾久橋通り,1612760617,1686031759,2086.144721,15,0.2,1 +122北本通り,670425202,2395868629,1455.930112,15,0.2,1 +123言問通り,306451287,1612760617,2233.340841,15,0.2,1 +124国道17号,306451287,1067419426,683.8750708,15,0.2,1 +125本郷通り,306451287,1919930647,1082.153651,15,0.2,1 +126言問通り,369930024,1840174603,526.8362941,15,0.2,1 +127江戸通り,369930024,209141422,1156.724788,15,0.2,1 +128曳舟川通り,307381456,1697722257,1067.754013,15,0.2,1 +129水戸街道,1697722257,307383523,514.812061,15,0.2,1 +130平和橋通り,307383523,699634067,2693.981152,15,0.2,1 +131平和橋通り,307383523,308014544,1458.776493,15,0.2,1 +132川の手通り,307385903,307385710,1221.79107,15,0.2,1 +133明治通り,307385903,253886315,1136.843698,15,0.2,1 +134尾竹橋通り,308013647,655106543,1601.095025,15,0.2,1 +135川の手通り,308014544,1989070052,756.3715219,15,0.2,1 +136平和橋通り,308014544,761925208,629.7766103,15,0.2,1 +137平和橋通り,308014544,307383523,1458.776493,15,0.2,1 +138山手通り,256389156,5091218484,1279.93818,15,0.2,1 +139川の手通り,307385710,307385903,1221.79107,15,0.2,1 +140環状三号線,343061961,344188060,365.140509,15,0.2,1 +141三ツ目通り,343061961,569037384,1167.394523,15,0.2,1 +142環状三号線,344188060,344380706,887.1033525,15,0.2,1 +143本郷通り,357071764,1919930647,617.3549412,15,0.2,1 +144昭和通り,360555811,251723916,742.2494188,15,0.2,1 +145靖国通り,265888496,360555811,508.2358473,15,0.2,1 +146昭和通り,265888496,460048218,873.2734523,15,0.2,1 +147靖国通り,360555811,303799924,904.7573386,15,0.2,1 +148昌平橋通り,265888496,357071764,715.6329234,15,0.2,1 +149白山通り,410176070,1436736443,596.2029562,15,0.2,1 +150靖国通り,410176070,265888496,1225.87507,15,0.2,1 +151靖国通り,420129860,733235039,3008.806883,15,0.2,1 +152環状六号線,31296925,1063921933,1359.698472,15,0.2,1 +153第一京浜,31296925,574282925,767.4075684,15,0.2,1 +154中山道,563669457,1928885694,906.8866607,15,0.2,1 +155中山道,563669457,1927429737,350.5671976,15,0.2,1 +156目黒通り,252677750,244091604,1102.614154,15,0.2,1 +157北本通り,670425202,676419595,674.6244509,15,0.2,1 +158王子金町市川線,448191555,773319399,522.6922105,15,0.2,1 +159尾久橋通り,8568495149,662437571,1298.276567,15,0.2,1 +160江北橋通り,8568495149,448191555,875.6411718,15,0.2,1 +161昭和通り,460048218,460049588,819.3004338,15,0.2,1 +162昭和通り,460049588,1612760617,1150.337042,15,0.2,1 +163昭和通り,1612760617,460050444,1432.023432,15,0.2,1 +164日光街道,460050444,380498860,1157.550404,15,0.2,1 +165明治通り,460050444,307385903,1684.311176,15,0.2,1 +166,251723916,236104849,750.3614953,15,0.2,1 +167江戸通り,251723916,303799924,1311.834012,15,0.2,1 +168明治通り,473173557,158030491,850.6444245,15,0.2,1 +169明治通り,473173557,295403278,226.3945028,15,0.2,1 +170余丁町通り,733235039,9771146711,673.9815051,15,0.2,1 +171環七通り,3304224261,1631022396,1190.826987,15,0.2,1 +172千住小松川葛西沖線,761925208,1989070052,785.4133654,15,0.2,1 +173東京丸子横浜線,1509490960,1958418798,516.4510635,15,0.2,1 +174山手通り,1509490960,574475054,441.2298696,15,0.2,1 +175東京丸子横浜線,1958418798,1509490960,516.4510635,15,0.2,1 +176環状六号線,1063921933,574475054,360.1807303,15,0.2,1 +177山手通り,563669457,1928261996,620.3883252,15,0.2,1 +178有明通り,31300424,573267631,958.1301104,15,0.2,1 +179東京湾岸道路,573267631,31300424,958.1301104,15,0.2,1 +180晴海通り,31300424,344380706,1168.717856,15,0.2,1 +181三ツ目通り,31300479,569037384,809.0395428,15,0.2,1 +182三ツ目通り,569037384,344188060,1009.936976,15,0.2,1 +183船堀街道,569064015,569066212,1886.811071,15,0.2,1 +184東京湾岸道路,569064015,3717275450,1501.81218,15,0.2,1 +185清砂大橋通り,569066212,252193724,1423.780566,15,0.2,1 +186晴海通り,256676677,569987198,1111.696263,15,0.2,1 +187国道246号,255367453,258041113,654.293797,15,0.2,1 +188新宿通り(鉄道弘済会館前),255365995,733235039,2436.202979,15,0.2,1 +189晴海通り,31254310,4553782957,1059.266002,15,0.2,1 +190東京湾岸道路,573267627,31288817,1603.617967,15,0.2,1 +191東京湾岸道路,573267628,573267631,503.9256249,15,0.2,1 +192山手通り,574282925,255555978,631.7667741,15,0.2,1 +193第一京浜,574282925,31296925,767.4075684,15,0.2,1 +194海岸通り,255555978,574291287,760.9437483,15,0.2,1 +195海岸通り,255555978,596213578,2401.733497,15,0.2,1 +196環状六号線,574475054,1063921933,360.1807303,15,0.2,1 +197青山通り,577527752,255367453,548.9042942,15,0.2,1 +198青山通り,255367453,252831982,1714.070896,15,0.2,1 +199山手通り,581779374,581805155,586.9844586,15,0.2,1 +200山手通り,581779374,256389156,596.0600413,15,0.2,1 +201税務署通り,581805155,9905815562,578.4645913,15,0.2,1 +202葛西橋通り,6187077964,596217601,1353.143765,15,0.2,1 +203橋場通り,307385903,369930024,1177.448893,15,0.2,1 +204明治通り,307385903,460050444,1684.311176,15,0.2,1 +205北本通り,2395868629,670425202,1455.930112,15,0.2,1 +206新大橋通り,236104849,31254310,1495.665344,15,0.2,1 +207旧海岸通り,596213578,255555978,2401.733497,15,0.2,1 +208葛西橋通り,596217601,1028560880,1743.474491,15,0.2,1 +209葛西橋通り,596217601,6187077964,1353.143765,15,0.2,1 +210,596226998,850515441,509.7165178,15,0.2,1 +211白山通り,1436736443,888744905,730.3731496,15,0.2,1 +212白山通り,1436736443,410176070,596.2029562,15,0.2,1 +213,859642674,850515441,668.5465211,15,0.2,1 +214明治通り,600739736,839516441,733.2314337,15,0.2,1 +215新大橋通り,600739736,252409713,2035.406502,15,0.2,1 +216環七通り,261020689,1755067697,1639.575332,15,0.2,1 +217山手通り,1928261996,252053197,3055.237116,15,0.2,1 +218環状六号線,1063921933,31296925,1359.698472,15,0.2,1 +219都電通り,655106543,772434812,1460.281361,15,0.2,1 +220尾竹橋通り,655106543,1686031727,871.5826915,15,0.2,1 +221江北バス通り,448191555,662437571,1114.715114,15,0.2,1 +222江北バス通り,662437571,448191555,1114.715114,15,0.2,1 +223北本通り,676419595,670425202,674.6244509,15,0.2,1 +224桜田通り,31296991,8256710188,733.9161338,15,0.2,1 +225,699634067,1640058403,864.0793788,15,0.2,1 +226平和橋通り,699634067,307383523,2693.981152,15,0.2,1 +227,1640058403,699634067,864.0793788,15,0.2,1 +228早稲田通り,251329052,1093626410,1901.811058,15,0.2,1 +229山手通り,251329052,581805155,1716.337025,15,0.2,1 +230水戸街道,307383523,1697722257,514.812061,15,0.2,1 +231川の手通り,308014544,2195382160,1153.245732,15,0.2,1 +232,750076162,1631022396,260.9911956,15,0.2,1 +233,750076166,1631022396,240.696129,15,0.2,1 +234,1631022396,750076162,260.9911956,15,0.2,1 +235,1631022396,750076166,240.696129,15,0.2,1 +236千住小松川葛西沖線,761925104,761925208,574.1405874,15,0.2,1 +237,761925179,410935472,535.7040744,15,0.2,1 +238平和橋通り,761925179,6380214225,547.0298567,15,0.2,1 +239,344380706,569987198,931.5379982,15,0.2,1 +240尾久橋通り,662437571,8568495149,1298.276567,15,0.2,1 +241尾久橋通り,772434827,8568495149,1329.071135,15,0.2,1 +242尾久橋通り,8568495149,772434812,727.1793204,15,0.2,1 +243王子金町市川線,773319399,448191555,522.6922105,15,0.2,1 +244王子金町市川線,773319399,670425202,1921.841855,15,0.2,1 +245江北橋通り,448191555,8568495149,875.6411718,15,0.2,1 +246中央通り,31254310,31254272,567.5572969,15,0.2,1 +247明治通り,839516441,1688060923,508.3781948,15,0.2,1 +248京葉道路,839516441,842640247,781.0646928,15,0.2,1 +249京葉道路,842640247,1691781457,1245.92451,15,0.2,1 +250日光街道,855624052,1347565349,582.744938,15,0.2,1 +251日光街道,410935472,2460090797,2221.599104,15,0.2,1 +252春日通り,888744905,1318884507,4216.711418,15,0.2,1 +253明治通り,1028560880,251007839,722.171498,15,0.2,1 +254葛西橋通り,1028560880,596217601,1743.474491,15,0.2,1 +255清砂大橋通り,1028560880,252193724,1424.515851,15,0.2,1 +256新大橋通り,236104849,252409713,3088.135825,15,0.2,1 +257明治通り,1057693038,1028560880,1399.038199,15,0.2,1 +258蔵前橋通り,460048218,1691781723,1365.881864,15,0.2,1 +259昭和通り,460048218,360555811,704.9407789,15,0.2,1 +260言問通り,1612760617,1840174603,1951.130652,15,0.2,1 +261言問通り,1612760617,306451287,2233.340841,15,0.2,1 +262目黒通り,244091604,256370366,3005.208855,15,0.2,1 +263永代通り,1072641717,4553782957,1653.086637,15,0.2,1 +264中央通り,1072641717,31254310,1445.864787,15,0.2,1 +265,1130812169,1072641717,351.6505932,15,0.2,1 +266山手通り,252053197,251329052,680.4450294,15,0.2,1 +267目白通り,252053197,260564972,2178.189671,15,0.2,1 +268目白通り,420129860,1074739630,1062.252464,15,0.2,1 +269明治通り,2238497066,252052891,629.4395134,15,0.2,1 +270早稲田通り,260563125,277836361,845.9052851,15,0.2,1 +271新目白通り,2234986299,260563125,1483.526754,15,0.2,1 +272早稲田通り,1093626410,2238497066,636.6491461,15,0.2,1 +273早稲田通り,1093626410,251329052,1901.811058,15,0.2,1 +274新目白通り,2234986299,252052891,705.1386854,15,0.2,1 +275諏訪通り,2238497066,2234986299,737.9789984,15,0.2,1 +276明治通り,2238497066,158030491,1064.985633,15,0.2,1 +277明治通り,158030491,473173557,850.6444245,15,0.2,1 +278飯田橋石神井新座線,4058182467,1074739630,198.4564194,15,0.2,1 +279永代通り,1106211430,2367334285,1597.692505,15,0.2,1 +280外苑東通り,1125943284,252053558,681.1444678,15,0.2,1 +281,1072641717,1130812169,351.6505932,15,0.2,1 +282春日通り,651618696,1939865226,1513.963278,15,0.2,1 +283環二通り,10276762426,6110607118,1080.253127,15,0.2,1 +284白山通り,1172514742,1067419426,1463.312357,15,0.2,1 +285白山通り,1172514742,513034551,2364.292132,15,0.2,1 +286日光街道,1182582151,460050444,580.1137217,15,0.2,1 +287川越街道,1928261996,261021465,951.561881,15,0.2,1 +288山手通り,1238545412,7197679070,850.6120531,15,0.2,1 +289山手通り,1238545420,244091598,514.8859591,15,0.2,1 +290都電通り,772434812,772434827,602.050187,15,0.2,1 +291尾久橋通り,772434812,1686031759,1379.525974,15,0.2,1 +292都電通り,772434827,1905718390,1224.411035,15,0.2,1 +293国道17号,1067419426,306451287,683.8750708,15,0.2,1 +294白山通り,1067419426,1172514742,1463.312357,15,0.2,1 +295中山道,1928885694,1755074361,397.7642523,15,0.2,1 +296六本木トンネル,499191199,1831717494,788.4070381,15,0.2,1 +297環状三号線,499191199,252831982,604.4743896,15,0.2,1 +298明治通り,513034551,676419595,1290.931133,15,0.2,1 +299山手通り,244091604,256368874,733.1960858,15,0.2,1 +300,1318884507,651618696,247.3186546,15,0.2,1 +301川越街道,1318884507,261021465,601.5901196,15,0.2,1 +302川越街道,261021465,1928261996,951.561881,15,0.2,1 +303日光街道,1347826230,410935472,501.813426,15,0.2,1 +304白山通り,1067419426,888744905,680.1487174,15,0.2,1 +305白山通り,888744905,1436736443,730.3731496,15,0.2,1 +306中山道,513034551,563669457,1954.16242,15,0.2,1 +307中山道,1928907410,513034551,947.9852565,15,0.2,1 +308春日通り,888744905,1919930647,816.2615003,15,0.2,1 +309白山通り,888744905,1067419426,680.1487174,15,0.2,1 +310甲州街道,473173557,1625445407,874.395457,15,0.2,1 +311山手通り,1505352805,258037420,535.8036919,15,0.2,1 +312山手通り,1509490960,244091604,1469.643667,15,0.2,1 +313靖国通り,1813859423,473173557,1037.870626,15,0.2,1 +314蔵前橋通り(平井駅入口),699634067,1688060940,2409.565534,15,0.2,1 +315新大橋通り,850515441,600739736,2511.332957,15,0.2,1 +316王子金町市川線,670425202,773319399,1921.841855,15,0.2,1 +317桜田通り,2138849614,266241394,2094.83096,15,0.2,1 +318甲州街道,1625445407,733235039,822.5861242,15,0.2,1 +319環七通り,1631022396,3304224261,1190.826987,15,0.2,1 +320(六本木六丁目),1645426532,1831717494,198.940277,15,0.2,1 +321(六本木六丁目),1645426611,1831717494,244.4189534,15,0.2,1 +322靖国通り,472447039,733235039,894.2291667,15,0.2,1 +323靖国通り,733235039,420129860,3008.806883,15,0.2,1 +324余丁町通り,158030491,9771146711,852.7994576,15,0.2,1 +325三ツ目通り,569037384,31300479,809.0395428,15,0.2,1 +326新大橋通り,600739736,859642674,1843.950182,15,0.2,1 +327明治通り,839516441,600739736,733.2314337,15,0.2,1 +328水戸街道,253886315,1697722257,2006.497369,15,0.2,1 +329明治通り,253886315,1688060923,2186.0474,15,0.2,1 +330蔵前橋通り(平井駅入口),1688060923,699634067,3315.583177,15,0.2,1 +331川の手通り,307385710,308014544,1837.83011,15,0.2,1 +332京葉道路,842640247,839516441,781.0646928,15,0.2,1 +333明治通,651618696,260564972,1392.820179,15,0.2,1 +334明治通り,651618696,513034551,1417.498906,15,0.2,1 +335明治通り,196971409,252835332,597.6165396,15,0.2,1 +336明治通,260564972,651618696,1392.820179,15,0.2,1 +337新目白通り,252052891,252053197,1999.650846,15,0.2,1 +338明治通り,252052891,260564972,596.8864582,15,0.2,1 +339明治通り,1686031704,1686031727,602.2954851,15,0.2,1 +340明治通り,1686031727,460050444,1960.141299,15,0.2,1 +341明治通り,1686031727,1686031759,514.8113803,15,0.2,1 +342明治通り,1686031759,676419595,3354.736106,15,0.2,1 +343明治通り,1686031759,1686031727,514.8113803,15,0.2,1 +344尾久橋通り,1686031759,772434827,777.7645179,15,0.2,1 +345都電通り,772434812,655106543,1460.281361,15,0.2,1 +346都電通り,772434827,772434812,602.050187,15,0.2,1 +347明治通り,676419595,513034551,1290.931133,15,0.2,1 +348昭和通り,460050444,1612760617,1432.023432,15,0.2,1 +349明治通り,460050444,1686031704,1369.943912,15,0.2,1 +350明治通り,676419595,1686031759,3354.736106,15,0.2,1 +351蔵前橋,289946952,1691781723,1573.4613,15,0.2,1 +352三ツ目通り,289946952,1691781457,577.0422332,15,0.2,1 +353法恩寺橋,1688060923,289946952,2037.434303,15,0.2,1 +354明治通り,1688060923,839516441,508.3781948,15,0.2,1 +355蔵前橋通り,1688060940,1688060923,1022.699739,15,0.2,1 +356江戸通り,303799924,251723916,1311.834012,15,0.2,1 +357京葉道路,1691781457,303799924,2104.410549,15,0.2,1 +358三ツ目通り,1691781457,252409713,653.6917263,15,0.2,1 +359京葉道路,1691781457,842640247,1245.92451,15,0.2,1 +360三ツ目通り,1691781457,289946952,577.0422332,15,0.2,1 +361江戸通り,1691781723,303799924,820.9807658,15,0.2,1 +362蔵前橋通り,1691781723,460048218,1365.881864,15,0.2,1 +363蔵前橋,1691781723,289946952,1573.4613,15,0.2,1 +364江戸通り,1691781723,209141422,988.6455483,15,0.2,1 +365内堀通り,4553782957,266241394,536.0825774,15,0.2,1 +366祝田通り,4553782957,2140926816,1848.066552,15,0.2,1 +367永代通り,236104849,1106211430,1651.287256,15,0.2,1 +368新大橋通り,252409713,236104849,3088.135825,15,0.2,1 +369曳舟川通り,1697722257,307381456,1067.754013,15,0.2,1 +370水戸街道,1697722257,253886315,2006.497369,15,0.2,1 +371青山通り,1715753257,196971409,1441.956932,15,0.2,1 +372青山通り,1715753257,252831982,1123.568394,15,0.2,1 +373玉川通り,318826081,196971409,1304.233264,15,0.2,1 +374外苑東通り,260563125,733235039,2217.236771,15,0.2,1 +375中央通り,265888496,251723916,756.9308673,15,0.2,1 +376中山道,1755067697,1755074361,201.2666699,15,0.2,1 +377中山道,1755074361,1755067697,201.2666699,15,0.2,1 +378環七通り,1755074361,261020689,1438.310539,15,0.2,1 +379環七通り,1917478316,1755074361,756.4379846,15,0.2,1 +380新目白通り,1127764754,252053197,913.8666358,15,0.2,1 +381,1760515818,31296991,790.3756416,15,0.2,1 +382環状三号線,1760515818,1831717494,1058.648858,15,0.2,1 +383目黒通り,256370366,244091604,3005.208855,15,0.2,1 +384三ツ目通り,2367334285,252409713,1906.510913,15,0.2,1 +385永代通り,1798899738,236104849,1672.06738,15,0.2,1 +386明治通り,1028560880,1057693042,1412.424526,15,0.2,1 +387永代通り,1028560880,2367334285,1990.566726,15,0.2,1 +388山手通り,581805155,581779374,586.9844586,15,0.2,1 +389山手通り,581805155,251329052,1716.337025,15,0.2,1 +390靖国通り,473173557,1676479071,721.1275552,15,0.2,1 +391御苑通り,472447039,473173557,643.0826545,15,0.2,1 +392御苑通り,473173557,472447039,643.0826545,15,0.2,1 +393外苑東通り,733235039,475369366,881.622774,15,0.2,1 +394新宿通り(鉄道弘済会館前),733235039,255365995,2436.202979,15,0.2,1 +395外苑東通り,252053558,252831982,1047.599424,15,0.2,1 +396青山通り,252831982,1715753257,1123.568394,15,0.2,1 +397外苑東通り,252831982,252053558,1047.599424,15,0.2,1 +398青山通り,252831982,577527752,1170.536004,15,0.2,1 +399青梅街道,581805155,1813859423,930.208854,15,0.2,1 +400有明通り,573267631,256676677,2210.424819,15,0.2,1 +401六本木トンネル,1831717494,499191199,788.4070381,15,0.2,1 +402新大橋通り,31254310,10276762426,649.731855,15,0.2,1 +403れいめい橋,31254310,256676677,2033.833143,15,0.2,1 +404新大橋通り,31254310,236104849,1495.665344,15,0.2,1 +405言問通り,1840174603,1612760617,1951.130652,15,0.2,1 +406三ツ目通り,369930024,289946952,1675.644647,15,0.2,1 +407旧海岸通り,1871509528,596213578,713.4354681,15,0.2,1 +408第一京浜,510103596,8256710188,401.6773756,15,0.2,1 +409環七通り,2395868629,1917478443,2285.606053,15,0.2,1 +410尾竹橋通り,655106543,308013647,1601.095025,15,0.2,1 +411都電通り,1905718399,772434827,1231.854848,15,0.2,1 +412尾久橋通り,1686031759,1612760617,2086.144721,15,0.2,1 +413靖国通り,420129860,410176070,678.0731111,15,0.2,1 +414,1917478443,1917478316,514.1964652,15,0.2,1 +415環七通り,1755067697,2395868629,3353.502513,15,0.2,1 +416目白通り,1074739630,420129860,1062.252464,15,0.2,1 +417本郷通り,1919930647,357071764,617.3549412,15,0.2,1 +418桜田通り,574475054,2179133115,1726.865315,15,0.2,1 +419中山道,563669457,1928907410,1097.929963,15,0.2,1 +420川越街道,1928261996,261020689,2215.24372,15,0.2,1 +421山手通り (Yamate-dori Avenue),1928261996,261013765,518.0919823,15,0.2,1 +422山手通り,261013765,563669457,1101.59697,15,0.2,1 +423山手通り,5091218484,256389156,1279.93818,15,0.2,1 +424中山道,1755074361,279159409,788.6081243,15,0.2,1 +425春日通り,1939865226,888744905,2954.410622,15,0.2,1 +426三ツ目通り,344188060,2367334285,995.2870409,15,0.2,1 +427清砂大橋通り,252193724,1028560880,1424.515851,15,0.2,1 +428桜田通り,2138849614,31296991,735.5046671,15,0.2,1 +429川の手通り,1989070052,308014544,756.3715219,15,0.2,1 +430千住小松川葛西沖線,1989070052,761925208,785.4133654,15,0.2,1 +431新目白通り,252053197,252052891,1999.650846,15,0.2,1 +432外苑東通り,475369366,260563125,1346.995025,15,0.2,1 +433日比谷通り,4553782957,1072641717,1653.086637,15,0.2,1 +434第一京浜,8256710188,510103596,401.6773756,15,0.2,1 +435桜田通り,8256710188,251860320,1382.38076,15,0.2,1 +436祝田通り,2140926816,266241394,1834.258616,15,0.2,1 +437,2163601792,266241394,303.2210603,15,0.2,1 +438桜田通り,2163601792,2138849614,1791.916531,15,0.2,1 +439桜田通り,266241394,2163601792,303.2210603,15,0.2,1 +440桜田通り,2179133115,1063921933,1368.628215,15,0.2,1 +441山手通り,318826081,1238545420,1414.18296,15,0.2,1 +442諏訪通り,2234986299,2238497066,737.9789984,15,0.2,1 +443三ツ目通り,2367334285,343061961,652.4440115,15,0.2,1 +444永代通り,2367334285,1028560880,1990.566726,15,0.2,1 +445三ツ目通り,252409713,2367334285,1906.510913,15,0.2,1 +446明治通り,513034551,651618696,1417.498906,15,0.2,1 +447目白通り,260563125,4058182467,1402.097391,15,0.2,1 +448青山通り,255365995,255367453,585.2509496,15,0.2,1 +449昭和通り(Showa-dori),1612760617,460049588,1150.337042,15,0.2,1 +450旧山手通り,318826081,3809337791,1491.845558,15,0.2,1 +451日光街道,2460090797,1182582151,554.6075752,15,0.2,1 +452日光街道,380498860,855624052,2127.588388,15,0.2,1 +453水戸街道,750076162,307383523,2511.111346,15,0.2,1 +454明治通り,158030491,2238497066,1064.985633,15,0.2,1 +455東京湾岸道路,3717260618,31330112,1191.289948,15,0.2,1 +456東京湾岸道路,31300479,3717260618,2932.448171,15,0.2,1 +457東京湾岸道路,31300479,31300495,1123.491851,15,0.2,1 +458東京湾岸道路,3717275450,9156526704,510.7052764,15,0.2,1 +459東京湾岸道路,3717275450,31300479,2929.273273,15,0.2,1 +460尾竹橋通り,1686031727,1612760617,1710.846406,15,0.2,1 +461飯田橋石神井新座線,1074739630,4058182467,198.4564194,15,0.2,1 +462江戸通り,209141422,1691781723,988.6455483,15,0.2,1 +463旧山手通り,3809337791,318826081,1491.845558,15,0.2,1 +464昭和通り,7107369154,1072641717,594.5784178,15,0.2,1 +465環状三号線,31296991,1760515818,790.3756416,15,0.2,1 +466尾竹橋通り,1686031727,655106543,871.5826915,15,0.2,1 +467晴海通り,344380706,256676677,1737.500326,15,0.2,1 +468大久保通り,1074739630,277836361,1066.360824,15,0.2,1 +469目白通り,4058182467,260563125,1402.097391,15,0.2,1 +470祝田通り,31296991,2140926816,571.1224613,15,0.2,1 +471環状三号線,1831717494,31296991,1826.373533,15,0.2,1 +472山手通り,258037420,1505352805,535.8036919,15,0.2,1 +473目白通り,4492465171,260563125,1338.77224,15,0.2,1 +474千登世橋,4492465171,260564972,594.8037119,15,0.2,1 +475本郷通り,1919930647,306451287,1082.153651,15,0.2,1 +476春日通り,1919930647,888744905,816.2615003,15,0.2,1 +477靖国通り,303799924,360555811,904.7573386,15,0.2,1 +478山手通り,1505352805,5091218484,1185.552433,15,0.2,1 +479山手通り,5091218484,1505352805,1185.552433,15,0.2,1 +480環二通り,6110607118,10276762426,1080.253127,15,0.2,1 +481東京湾岸道路,5315050637,6445475298,947.2884429,15,0.2,1 +482中央通り,251723916,1072641717,614.9308841,15,0.2,1 +483昌平橋通り,357071764,265888496,715.6329234,15,0.2,1 +484晴海通り,344380706,31300424,1168.717856,15,0.2,1 +485靖国通り,410176070,420129860,678.0731111,15,0.2,1 +486白山通り,410176070,243828110,576.3776436,15,0.2,1 +487目白通り,260563125,4492465171,1338.77224,15,0.2,1 +488水戸街道,307383523,1631022396,2632.692324,15,0.2,1 +489船堀街道,6187077964,569066212,632.3932337,15,0.2,1 +490清洲橋通り,6363932797,251007839,1646.132441,15,0.2,1 +491川の手通り,2195382160,307385710,718.289122,15,0.2,1 +492平和橋通り,6380214226,761925104,1513.43967,15,0.2,1 +493東京湾岸道路,6445475298,573267628,1198.103994,15,0.2,1 +494甲州街道(西新宿),5091218484,295403278,2022.45322,15,0.2,1 +495海岸通り,10276762426,8957637474,882.5744864,15,0.2,1 +496昭和通り,1130812169,31254310,1182.55559,15,0.2,1 +497第一京浜,510103596,31296925,2171.400388,15,0.2,1 +498白山通り,513034551,1172514742,2364.292132,15,0.2,1 +499平和橋通り,761925208,308014544,629.7766103,15,0.2,1 +500平和橋通り,761925208,761925179,1547.960213,15,0.2,1 +501明治通り,7682112321,295403278,699.2507211,15,0.2,1 +502芝新宿王子線,7682112321,473173557,686.7487967,15,0.2,1 +503明治通り,295403278,196971409,3171.845144,15,0.2,1 +504職安通り,9905815562,158030491,1376.229856,15,0.2,1 +505青梅街道(新都心歩道橋下交差点),1676479071,581805155,1270.327144,15,0.2,1 +506外苑東通り,252053558,1125943284,681.1444678,15,0.2,1 +507甲州街道,8302849493,5091218484,1442.468773,15,0.2,1 +508東京湾岸道路,31300495,31300479,1123.491851,15,0.2,1 +509有明通り,256676677,31300424,2517.38436,15,0.2,1 +510東京湾岸道路,9156526704,31300495,1316.715298,15,0.2,1 +511東京湾岸道路,9156526704,3717260618,501.8978028,15,0.2,1 +512目黒通り,2179133115,252677750,1390.642185,15,0.2,1 +513山手通り,574475054,574282925,1988.98024,15,0.2,1 +514余丁町通り,9771146711,733235039,673.9815051,15,0.2,1 +515昭和通り,460049588,460048218,819.3004338,15,0.2,1 +516余丁町通り,9771146711,158030491,852.7994576,15,0.2,1 +517税務署通り,9905815562,581805155,578.4645913,15,0.2,1 +518明治通り,196971409,196978962,1235.999661,15,0.2,1 +519新大橋通り,10276762426,31254310,649.731855,15,0.2,1 +520橋場通り,1840174603,369930024,526.8362941,15,0.2,1 +521京葉道路,303799924,1691781457,2104.410549,15,0.2,1 diff --git a/tests/dat/tokyo_arterial_nodes.csv b/tests/dat/tokyo_arterial_nodes.csv new file mode 100644 index 0000000..c40f9c2 --- /dev/null +++ b/tests/dat/tokyo_arterial_nodes.csv @@ -0,0 +1,221 @@ +name,x,y +31295413,139.7531423,35.6490458 +31254272,139.7624279,35.6664697 +7107369154,139.7725951,35.6766545 +31254310,139.7671822,35.6695695 +31288817,139.7763413,35.6264781 +31288837,139.7715322,35.623301 +31296925,139.7379356,35.6239047 +31296991,139.7478985,35.6542401 +574291287,139.7537576,35.621835 +31300424,139.8026223,35.6412878 +31300479,139.8127968,35.6446854 +31300495,139.8238498,35.646699 +9156526704,139.8369602,35.6479202 +31330112,139.8538615,35.6469046 +6187077964,139.8566399,35.6701964 +569066212,139.8536693,35.6646136 +158030491,139.7074388,35.6979039 +472447039,139.712539,35.6912518 +196971409,139.703018,35.6581259 +7682112321,139.7045388,35.6828447 +196978962,139.7112676,35.6489219 +2138849614,139.7428632,35.6596013 +243828110,139.7588247,35.6902926 +209141422,139.7960777,35.7087856 +236104849,139.7759094,35.681716 +244091598,139.7026141,35.6405178 +244091604,139.7070849,35.6347401 +1509490960,139.7182771,35.6252154 +251007839,139.8271241,35.6770912 +6363932797,139.8433799,35.6744981 +251329052,139.6860356,35.7135224 +261013765,139.7048418,35.7390793 +251723916,139.772977,35.6886229 +265888496,139.7703567,35.6957242 +4553782957,139.7585602,35.675723 +251860320,139.7342346,35.6429265 +252052891,139.7113669,35.7142907 +1093626410,139.705053,35.713358 +252053197,139.6916161,35.7174158 +252053558,139.7192359,35.6807747 +252193724,139.8395165,35.6661671 +1496284142,139.8563588,35.6633129 +252409713,139.8060512,35.6884339 +1691781457,139.8055055,35.694948 +252677750,139.7180962,35.635312 +252831982,139.724549,35.671746 +499191199,139.7247344,35.6657041 +252835332,139.6974,35.6560881 +253886315,139.8182983,35.7224111 +255365995,139.744051,35.6832343 +255367453,139.7401304,35.6788891 +255555978,139.7462576,35.6205491 +1871509528,139.7480487,35.6416434 +256368874,139.702527,35.6404832 +1238545412,139.6991017,35.644283 +256370366,139.6805319,35.6206665 +256389156,139.6822129,35.6888448 +581779374,139.6823421,35.694804 +256676677,139.7817844,35.6554124 +258037420,139.6888989,35.6603461 +318826081,139.6902769,35.655339 +258041113,139.7442252,35.6737859 +1072641717,139.7736341,35.6825088 +260563125,139.730943,35.7122883 +260564972,139.7132495,35.7199549 +261020689,139.6898538,35.7562387 +261021465,139.7145566,35.7365661 +266241394,139.7535465,35.6776207 +573267627,139.7904475,35.6341053 +2179133115,139.7317868,35.6377525 +277836361,139.7330997,35.7041088 +278276027,139.6774073,35.6470331 +278278477,139.6778866,35.6258762 +279159409,139.7082997,35.7544835 +563669457,139.7084844,35.7494756 +1798899738,139.7909091,35.6743275 +289946952,139.804973,35.7006938 +8302849491,139.6737893,35.6762087 +295403278,139.7041258,35.689825 +295429192,139.6903963,35.6837613 +1125943284,139.7203567,35.6874933 +303799924,139.7844614,35.6949632 +306451287,139.7587884,35.7153387 +307381456,139.8260882,35.7277845 +307383523,139.8376571,35.7385646 +308014544,139.8276733,35.7492007 +307385710,139.8117839,35.7399655 +307385903,139.8085107,35.7281942 +308013647,139.7899382,35.7557671 +1989070052,139.8282107,35.7567453 +761925208,139.8220008,35.7519365 +5091218484,139.6881045,35.677482 +343061961,139.8056839,35.6628485 +344188060,139.8040287,35.6595938 +344380706,139.7988897,35.6523629 +357071764,139.7660946,35.7014729 +360555811,139.7754381,35.6956255 +369930024,139.8037881,35.7174083 +380498860,139.7979776,35.7399061 +410176070,139.7581013,35.6960108 +410935472,139.8035402,35.7612107 +420129860,139.7513489,35.6953916 +574282925,139.7410931,35.6169103 +1927429737,139.7087392,35.752972 +448191555,139.7631409,35.7645183 +662437571,139.7702534,35.7731015 +460048218,139.7756474,35.7026718 +460049588,139.7765002,35.7108203 +460050444,139.7917792,35.73013 +733235039,139.7214239,35.6922633 +473173557,139.7063611,35.689466 +9771146711,139.7157145,35.6958449 +475369366,139.7261725,35.6996914 +510103596,139.7441031,35.6447244 +513034551,139.7269791,35.7431652 +569037384,139.8113595,35.6526471 +569064015,139.8569771,35.6460377 +3717275450,139.8419935,35.6470554 +569987198,139.7923183,35.6589654 +573267628,139.7896477,35.6345569 +573267631,139.7940442,35.6370196 +573283109,139.7582508,35.6472255 +574475054,139.7222718,35.6233417 +577527752,139.7349103,35.677192 +581805155,139.687971,35.6964685 +9905815562,139.6936875,35.6973538 +596213578,139.7550733,35.64289 +596217601,139.8431676,35.6714601 +596226998,139.8463607,35.6906809 +888744905,139.7535587,35.7084029 +600739736,139.8263851,35.6893397 +651618696,139.7166449,35.7334629 +655106543,139.7805506,35.742797 +670425202,139.7398932,35.757132 +676419595,139.7373168,35.7508971 +699634067,139.8544687,35.7175141 +2195382160,139.8169507,35.7449553 +750076162,139.8544748,35.7572122 +750076166,139.8546129,35.7575034 +761925104,139.8167837,35.7543335 +761925179,139.8087399,35.7599219 +6380214225,139.8035195,35.7615564 +772434812,139.769998,35.7528908 +772434827,139.7695891,35.7468842 +773319399,139.7583972,35.7623233 +839516441,139.8257028,35.6966402 +1688060923,139.825322,35.7017097 +842640247,139.8179316,35.6958562 +850515441,139.8514568,35.6907851 +855624052,139.8031251,35.7605499 +1347565349,139.8036223,35.7663561 +2460090797,139.7977914,35.7397514 +859642674,139.8447715,35.6907381 +1318884507,139.7188594,35.7323617 +1028560880,139.8257947,35.6699929 +1057693038,139.8240832,35.6561076 +1063921933,139.7245255,35.6261513 +1840174603,139.7987783,35.7157781 +1067419426,139.7519574,35.7150132 +1074739630,139.7436746,35.7027362 +2238497066,139.7090796,35.7084266 +1106211430,139.7907821,35.6745412 +1127764754,139.6841377,35.7226683 +1130812169,139.7742542,35.6790474 +1939865226,139.7297853,35.7259437 +1172514742,139.7450406,35.7279084 +1182582151,139.7949391,35.734995 +1958418798,139.7181564,35.6200523 +7197679070,139.6919675,35.6489152 +1238545420,139.6991511,35.6443281 +1905718390,139.7579262,35.7506118 +1347826230,139.8037231,35.7662255 +1436736443,139.7554388,35.7013453 +1625445407,139.7148405,35.6873314 +1505352805,139.687993,35.665627 +1688060940,139.8355059,35.7026476 +1612760617,139.7801922,35.7217151 +1631022396,139.8534637,35.7596183 +3304224261,139.8578107,35.7485318 +1640058403,139.8615659,35.7224429 +1645426532,139.7290574,35.6616237 +1645426611,139.7284879,35.6614502 +1676479071,139.7002858,35.693351 +1686031704,139.7795001,35.7362044 +1686031727,139.7736206,35.7375111 +1686031759,139.7687413,35.7391529 +1691781723,139.7892657,35.7016205 +1697722257,139.8336946,35.735278 +1715753257,139.7143382,35.6670577 +1755067697,139.7054195,35.7613894 +1755074361,139.7035113,35.7607494 +1760515818,139.7401203,35.6556433 +1057693042,139.8242507,35.6559533 +2367334285,139.8058988,35.6693694 +1813859423,139.6967199,35.6933085 +1831717494,139.7308057,35.6606744 +8256710188,139.747471,35.6469134 +1917478443,139.7157639,35.7641135 +1905718399,139.7578953,35.7507574 +1917478316,139.7108171,35.7627103 +1928261996,139.7078388,35.7433054 +1928885694,139.7066961,35.7583664 +1928907410,139.7194499,35.7489253 +2140926816,139.7491638,35.6598094 +2163601792,139.751893,35.675079 +10276762426,139.7664375,35.663115 +2234986299,139.716401,35.7093531 +2395868629,139.7374015,35.7714765 +3809337791,139.7024136,35.6466637 +3717260618,139.8419716,35.6476445 +4058182467,139.7424806,35.7043214 +4492465171,139.7184121,35.7170008 +1919930647,139.7608399,35.7047134 +5315050637,139.7710177,35.6239276 +6445475298,139.7791299,35.6288192 +6110607118,139.7744501,35.6558698 +6380214226,139.8035598,35.7616941 +8957637474,139.7602971,35.6567755 +8302849493,139.67372,35.676406 +8568495149,139.7707166,35.760127 diff --git a/tests/dat/uroboros_demand.csv b/tests/dat/uroboros_demand.csv new file mode 100644 index 0000000..46db14c --- /dev/null +++ b/tests/dat/uroboros_demand.csv @@ -0,0 +1,3 @@ +orig,dest,start_t,end_t,q, +W_in,S_in,0,4800,0.5, +E_in,N_in,1200,4800,0.5, \ No newline at end of file diff --git a/tests/dat/uroboros_links.csv b/tests/dat/uroboros_links.csv new file mode 100644 index 0000000..a8b271b --- /dev/null +++ b/tests/dat/uroboros_links.csv @@ -0,0 +1,13 @@ +name,start,end,length,u,kappa,merge_priority, +NE,N,E,1000,20,0.2,0.5, +ES,E,S,1000,20,0.2,0.5, +SW,S,W,1000,20,0.2,0.5, +WN,W,N,1000,20,0.2,0.5, +N_in,N_in,N,500,20,0.2,1, +N_out,N,N_in,500,20,0.2,1, +E_in,E_in,E,500,20,0.2,1, +E_out,E,E_in,500,20,0.2,1, +S_in,S_in,S,500,20,0.2,1, +S_out,S,S_in,500,20,0.2,1, +W_in,W_in,W,500,20,0.2,1, +W_out,W,W_in,500,20,0.2,1, diff --git a/tests/dat/uroboros_nodes.csv b/tests/dat/uroboros_nodes.csv new file mode 100644 index 0000000..446ca2e --- /dev/null +++ b/tests/dat/uroboros_nodes.csv @@ -0,0 +1,9 @@ +name,x,y, +N,0,1, +E,1,0, +S,0,-1, +W,-1,0, +N_in,0,1.5, +E_in,1.5,0, +S_in,0,-1.5, +W_in,-1.5,0, \ No newline at end of file diff --git a/tests/test_verification_node.py b/tests/test_verification_node.py new file mode 100644 index 0000000..6138565 --- /dev/null +++ b/tests/test_verification_node.py @@ -0,0 +1,407 @@ +""" +This script verifies whether UXsim outputs reasonable solutions for merging/diverging/intersection nodes in various configurations. +Note that it uses random numbers for node traffic behavior, so the results may vary slightly between runs. +""" + +import pytest +from uxsim import * +import pandas as pd + +def equal_tolerance(val, check, rel_tol=0.1, abs_tol=0.0): + if check == 0 and abs_tol == 0: + abs_tol = 0.1 + return abs(val - check) <= abs(check*rel_tol) + abs_tol + +@pytest.mark.flaky(reruns=5) +def test_merge_fair_nocongestion(): + tt1s = [] + tt2s = [] + tt3s = [] + vol1s = [] + vol2s = [] + vol3s = [] + for i in range(1): + W = World( + name="", + deltan=5, + tmax=1200, + print_mode=0, save_mode=1, show_mode=0, + random_seed=None + ) + + W.addNode("orig1", 0, 0) + W.addNode("orig2", 0, 2) + W.addNode("merge", 1, 1) + W.addNode("dest", 2, 1) + W.addLink("link1", "orig1", "merge", length=1000, free_flow_speed=20, jam_density=0.2, merge_priority=1) + W.addLink("link2", "orig2", "merge", length=1000, free_flow_speed=20, jam_density=0.2, merge_priority=1) + W.addLink("link3", "merge", "dest", length=1000, free_flow_speed=20, jam_density=0.2) + W.adddemand("orig1", "dest", 0, 1000, 0.3) + W.adddemand("orig2", "dest", 0, 1000, 0.3) + + W.exec_simulation() + + W.analyzer.print_simple_stats() + + df = W.analyzer.link_to_pandas() + tt1 = df[df["link"]=="link1"]["average_travel_time"].values[0] + tt2 = df[df["link"]=="link2"]["average_travel_time"].values[0] + tt3 = df[df["link"]=="link3"]["average_travel_time"].values[0] + + vol1 = df[df["link"]=="link1"]["traffic_volume"].values[0] + vol2 = df[df["link"]=="link2"]["traffic_volume"].values[0] + vol3 = df[df["link"]=="link3"]["traffic_volume"].values[0] + + tt1s.append(tt1) + tt2s.append(tt2) + tt3s.append(tt3) + vol1s.append(vol1) + vol2s.append(vol2) + vol3s.append(vol3) + + assert equal_tolerance(np.average(tt1s), 50) + assert equal_tolerance(np.average(tt2s), 50) + assert equal_tolerance(np.average(tt3s), 50) + assert equal_tolerance(np.average(vol1s), 300) + assert equal_tolerance(np.average(vol2s), 300) + assert equal_tolerance(np.average(vol3s), 600) + +@pytest.mark.flaky(reruns=5) +def test_merge_fair_congestion(): + tt1s = [] + tt2s = [] + tt3s = [] + vol1s = [] + vol2s = [] + vol3s = [] + for i in range(10): + W = World( + name="", + deltan=5, + tmax=2000, + print_mode=0, save_mode=1, show_mode=0, + random_seed=None + ) + + W.addNode("orig1", 0, 0) + W.addNode("orig2", 0, 2) + W.addNode("merge", 1, 1) + W.addNode("dest", 2, 1) + W.addLink("link1", "orig1", "merge", length=1000, free_flow_speed=20, jam_density=0.2, merge_priority=1) + W.addLink("link2", "orig2", "merge", length=1000, free_flow_speed=20, jam_density=0.2, merge_priority=1) + W.addLink("link3", "merge", "dest", length=1000, free_flow_speed=20, jam_density=0.2) + W.adddemand("orig1", "dest", 0, 1000, 0.5) + W.adddemand("orig2", "dest", 0, 1000, 0.5) + + W.exec_simulation() + + W.analyzer.print_simple_stats() + + df = W.analyzer.link_to_pandas() + tt1 = df[df["link"]=="link1"]["average_travel_time"].values[0] + tt2 = df[df["link"]=="link2"]["average_travel_time"].values[0] + tt3 = df[df["link"]=="link3"]["average_travel_time"].values[0] + + vol1 = df[df["link"]=="link1"]["traffic_volume"].values[0] + vol2 = df[df["link"]=="link2"]["traffic_volume"].values[0] + vol3 = df[df["link"]=="link3"]["traffic_volume"].values[0] + + tt1s.append(tt1) + tt2s.append(tt2) + tt3s.append(tt3) + vol1s.append(vol1) + vol2s.append(vol2) + vol3s.append(vol3) + + print(f"{np.average(tt1s) = }\n{np.average(tt2s) = }\n{np.average(tt3s) = }\n{np.average(vol1s) = }\n{np.average(vol2s) = }\n{np.average(vol3s) = }") + + assert equal_tolerance(np.average(tt1s), np.average(tt2s)) + assert equal_tolerance(np.average(tt3s), 50, rel_tol=0.2) + assert equal_tolerance(np.average(vol1s), 500) + assert equal_tolerance(np.average(vol2s), 500) + assert equal_tolerance(np.average(vol3s), 1000) + +@pytest.mark.flaky(reruns=5) +def test_merge_unfair(): + tt1s = [] + tt2s = [] + tt3s = [] + vol1s = [] + vol2s = [] + vol3s = [] + for i in range(10): + W = World( + name="", + deltan=5, + tmax=2000, + print_mode=0, save_mode=1, show_mode=0, + random_seed=None + ) + + W.addNode("orig1", 0, 0) + W.addNode("orig2", 0, 2) + W.addNode("merge", 1, 1) + W.addNode("dest", 2, 1) + W.addLink("link1", "orig1", "merge", length=1000, free_flow_speed=20, jam_density=0.2, merge_priority=1) + W.addLink("link2", "orig2", "merge", length=1000, free_flow_speed=20, jam_density=0.2, merge_priority=1.5) + W.addLink("link3", "merge", "dest", length=1000, free_flow_speed=20, jam_density=0.2) + W.adddemand("orig1", "dest", 0, 1000, 0.5) + W.adddemand("orig2", "dest", 0, 1000, 0.5) + + W.exec_simulation() + + W.analyzer.print_simple_stats() + + df = W.analyzer.link_to_pandas() + tt1 = df[df["link"]=="link1"]["average_travel_time"].values[0] + tt2 = df[df["link"]=="link2"]["average_travel_time"].values[0] + tt3 = df[df["link"]=="link3"]["average_travel_time"].values[0] + + vol1 = df[df["link"]=="link1"]["traffic_volume"].values[0] + vol2 = df[df["link"]=="link2"]["traffic_volume"].values[0] + vol3 = df[df["link"]=="link3"]["traffic_volume"].values[0] + + tt1s.append(tt1) + tt2s.append(tt2) + tt3s.append(tt3) + vol1s.append(vol1) + vol2s.append(vol2) + vol3s.append(vol3) + + print(f"{np.average(tt1s) = }\n{np.average(tt2s) = }\n{np.average(tt3s) = }\n{np.average(vol1s) = }\n{np.average(vol2s) = }\n{np.average(vol3s) = }") + + assert np.average(tt1s) > np.average(tt2s) + assert equal_tolerance(np.average(tt3s), 50, rel_tol=0.2) + assert equal_tolerance(np.average(vol1s), 500) + assert equal_tolerance(np.average(vol2s), 500) + assert equal_tolerance(np.average(vol3s), 1000) + +@pytest.mark.flaky(reruns=5) +def test_merge_veryunfair(): + tt1s = [] + tt2s = [] + tt3s = [] + vol1s = [] + vol2s = [] + vol3s = [] + for i in range(10): + W = World( + name="", + deltan=5, + tmax=2000, + print_mode=0, save_mode=1, show_mode=0, + random_seed=None + ) + + W.addNode("orig1", 0, 0) + W.addNode("orig2", 0, 2) + W.addNode("merge", 1, 1) + W.addNode("dest", 2, 1) + W.addLink("link1", "orig1", "merge", length=1000, free_flow_speed=20, jam_density=0.2, merge_priority=1) + W.addLink("link2", "orig2", "merge", length=1000, free_flow_speed=20, jam_density=0.2, merge_priority=100) + W.addLink("link3", "merge", "dest", length=1000, free_flow_speed=20, jam_density=0.2) + W.adddemand("orig1", "dest", 0, 1000, 0.5) + W.adddemand("orig2", "dest", 0, 1000, 0.5) + + W.exec_simulation() + + W.analyzer.print_simple_stats() + + df = W.analyzer.link_to_pandas() + tt1 = df[df["link"]=="link1"]["average_travel_time"].values[0] + tt2 = df[df["link"]=="link2"]["average_travel_time"].values[0] + tt3 = df[df["link"]=="link3"]["average_travel_time"].values[0] + + vol1 = df[df["link"]=="link1"]["traffic_volume"].values[0] + vol2 = df[df["link"]=="link2"]["traffic_volume"].values[0] + vol3 = df[df["link"]=="link3"]["traffic_volume"].values[0] + + tt1s.append(tt1) + tt2s.append(tt2) + tt3s.append(tt3) + vol1s.append(vol1) + vol2s.append(vol2) + vol3s.append(vol3) + + print(f"{np.average(tt1s) = }\n{np.average(tt2s) = }\n{np.average(tt3s) = }\n{np.average(vol1s) = }\n{np.average(vol2s) = }\n{np.average(vol3s) = }") + + assert np.average(tt1s) > np.average(tt2s) + assert equal_tolerance(np.average(tt2s), 50, rel_tol=0.2) + assert equal_tolerance(np.average(tt3s), 50, rel_tol=0.2) + assert equal_tolerance(np.average(vol1s), 500) + assert equal_tolerance(np.average(vol2s), 500) + assert equal_tolerance(np.average(vol3s), 1000) + +@pytest.mark.flaky(reruns=5) +def test_diverge_nocongestion(): + tt1s = [] + tt2s = [] + tt3s = [] + vol1s = [] + vol2s = [] + vol3s = [] + for i in range(1): + W = World( + name="", + deltan=5, + tmax=2000, + print_mode=0, save_mode=1, show_mode=0, + random_seed=None + ) + + W.addNode("orig", 0, 0) + W.addNode("merge", 1, 0) + W.addNode("dest1", 2, 1) + W.addNode("dest2", 2, -1) + W.addLink("link1", "orig", "merge", length=1000, free_flow_speed=20, jam_density=0.2) + W.addLink("link2", "merge", "dest1", length=1000, free_flow_speed=20, jam_density=0.2) + W.addLink("link3", "merge", "dest2", length=1000, free_flow_speed=20, jam_density=0.2) + W.adddemand("orig", "dest1", 0, 1000, 0.3) + W.adddemand("orig", "dest2", 0, 1000, 0.3) + + W.exec_simulation() + + W.analyzer.print_simple_stats() + + df = W.analyzer.link_to_pandas() + tt1 = df[df["link"]=="link1"]["average_travel_time"].values[0] + tt2 = df[df["link"]=="link2"]["average_travel_time"].values[0] + tt3 = df[df["link"]=="link3"]["average_travel_time"].values[0] + + vol1 = df[df["link"]=="link1"]["traffic_volume"].values[0] + vol2 = df[df["link"]=="link2"]["traffic_volume"].values[0] + vol3 = df[df["link"]=="link3"]["traffic_volume"].values[0] + + tt1s.append(tt1) + tt2s.append(tt2) + tt3s.append(tt3) + vol1s.append(vol1) + vol2s.append(vol2) + vol3s.append(vol3) + + print(f"{np.average(tt1s) = }\n{np.average(tt2s) = }\n{np.average(tt3s) = }\n{np.average(vol1s) = }\n{np.average(vol2s) = }\n{np.average(vol3s) = }") + + assert equal_tolerance(np.average(tt1s), 50, rel_tol=0.2) + assert equal_tolerance(np.average(tt2s), 50, rel_tol=0.2) + assert equal_tolerance(np.average(tt3s), 50, rel_tol=0.2) + assert equal_tolerance(np.average(vol1s), 600) + assert equal_tolerance(np.average(vol2s), 300) + assert equal_tolerance(np.average(vol3s), 300) + +@pytest.mark.flaky(reruns=5) +def test_diverge_lesscapacity_nocongestion(): + tt1s = [] + tt2s = [] + tt3s = [] + vol1s = [] + vol2s = [] + vol3s = [] + for i in range(10): + W = World( + name="", + deltan=5, + tmax=2000, + print_mode=0, save_mode=1, show_mode=1, + random_seed=None + ) + + W.addNode("orig", 0, 0) + W.addNode("merge", 1, 0) + W.addNode("dest1", 2, 1) + W.addNode("dest2", 2, -1) + W.addLink("link1", "orig", "merge", length=1000, free_flow_speed=20, jam_density=0.2) + W.addLink("link2", "merge", "dest1", length=1000, free_flow_speed=20, jam_density=0.2, capacity_in=0.2) + W.addLink("link3", "merge", "dest2", length=1000, free_flow_speed=20, jam_density=0.2) + W.adddemand("orig", "dest1", 0, 1000, 0.2) + W.adddemand("orig", "dest2", 0, 1000, 0.3) + + W.exec_simulation() + + W.analyzer.print_simple_stats() + # W.analyzer.time_space_diagram_traj_links(["link1", "link3"]) + # W.analyzer.time_space_diagram_traj_links(["link1", "link2"]) + + df = W.analyzer.link_to_pandas() + tt1 = df[df["link"]=="link1"]["average_travel_time"].values[0] + tt2 = df[df["link"]=="link2"]["average_travel_time"].values[0] + tt3 = df[df["link"]=="link3"]["average_travel_time"].values[0] + + vol1 = df[df["link"]=="link1"]["traffic_volume"].values[0] + vol2 = df[df["link"]=="link2"]["traffic_volume"].values[0] + vol3 = df[df["link"]=="link3"]["traffic_volume"].values[0] + + tt1s.append(tt1) + tt2s.append(tt2) + tt3s.append(tt3) + vol1s.append(vol1) + vol2s.append(vol2) + vol3s.append(vol3) + + print(f"{np.average(tt1s) = }\n{np.average(tt2s) = }\n{np.average(tt3s) = }\n{np.average(vol1s) = }\n{np.average(vol2s) = }\n{np.average(vol3s) = }") + + assert equal_tolerance(np.average(tt1s), 50, rel_tol=0.2) + assert equal_tolerance(np.average(tt2s), 50, rel_tol=0.2) + assert equal_tolerance(np.average(tt3s), 50, rel_tol=0.2) + assert equal_tolerance(np.average(vol1s), 500) + assert equal_tolerance(np.average(vol2s), 200) + assert equal_tolerance(np.average(vol3s), 300) + +@pytest.mark.flaky(reruns=5) +def test_diverge_lesscapacity_congestion(): + tt1s = [] + tt2s = [] + tt3s = [] + vol1s = [] + vol2s = [] + vol3s = [] + for i in range(10): + W = World( + name="", + deltan=5, + tmax=2000, + print_mode=0, save_mode=1, show_mode=1, + random_seed=None + ) + + W.addNode("orig", 0, 0) + W.addNode("merge", 1, 0) + W.addNode("dest1", 2, 1) + W.addNode("dest2", 2, -1) + W.addLink("link1", "orig", "merge", length=1000, free_flow_speed=20, jam_density=0.2) + W.addLink("link2", "merge", "dest1", length=1000, free_flow_speed=20, jam_density=0.2, capacity_in=0.2) + W.addLink("link3", "merge", "dest2", length=1000, free_flow_speed=20, jam_density=0.2) + W.adddemand("orig", "dest1", 0, 1000, 0.3) + W.adddemand("orig", "dest2", 0, 1000, 0.2) + + W.exec_simulation() + + W.analyzer.print_simple_stats() + # W.analyzer.time_space_diagram_traj_links(["link1", "link3"]) + # W.analyzer.time_space_diagram_traj_links(["link1", "link2"]) + + df = W.analyzer.link_to_pandas() + tt1 = df[df["link"]=="link1"]["average_travel_time"].values[0] + tt2 = df[df["link"]=="link2"]["average_travel_time"].values[0] + tt3 = df[df["link"]=="link3"]["average_travel_time"].values[0] + + vol1 = df[df["link"]=="link1"]["traffic_volume"].values[0] + vol2 = df[df["link"]=="link2"]["traffic_volume"].values[0] + vol3 = df[df["link"]=="link3"]["traffic_volume"].values[0] + + tt1s.append(tt1) + tt2s.append(tt2) + tt3s.append(tt3) + vol1s.append(vol1) + vol2s.append(vol2) + vol3s.append(vol3) + + print(f"{np.average(tt1s) = }\n{np.average(tt2s) = }\n{np.average(tt3s) = }\n{np.average(vol1s) = }\n{np.average(vol2s) = }\n{np.average(vol3s) = }") + + assert equal_tolerance(np.average(tt1s), 333, rel_tol=0.2) + assert equal_tolerance(np.average(tt2s), 50, rel_tol=0.2) + assert equal_tolerance(np.average(tt3s), 50, rel_tol=0.2) + assert equal_tolerance(np.average(vol1s), 500) + assert equal_tolerance(np.average(vol2s), 300) + assert equal_tolerance(np.average(vol3s), 200) + +#TODO: add tests later, check flow values \ No newline at end of file diff --git a/tests/test_verification_route_choice.py b/tests/test_verification_route_choice.py index 703beb8..02feeac 100644 --- a/tests/test_verification_route_choice.py +++ b/tests/test_verification_route_choice.py @@ -374,7 +374,7 @@ def test_4route_congestion_avoidance(): vol4s = [] ttas = [] - for i in range(10): + for i in range(20): W = World( name="", deltan=5, diff --git a/tests/test_verification_sioux_falls.py b/tests/test_verification_sioux_falls.py new file mode 100644 index 0000000..3c9073d --- /dev/null +++ b/tests/test_verification_sioux_falls.py @@ -0,0 +1,73 @@ +""" +This script verifies whether UXsim outputs reasonable solutions for Sioux Falls network, checking the overall behavior. +Note that it uses random numbers for node and route choice behavior, so the results may vary slightly between runs. +""" + +import pytest +from uxsim import * +import pandas as pd + +def equal_tolerance(val, check, rel_tol=0.1, abs_tol=0.0): + if check == 0 and abs_tol == 0: + abs_tol = 0.1 + return abs(val - check) <= abs(check*rel_tol) + abs_tol + +@pytest.mark.flaky(reruns=5) +def test_sioux_falls(): + total_trips_list = [] + completed_trips_list = [] + total_travel_time_list = [] + average_travel_time_list = [] + average_delay_list = [] + link_traffic_volume_mean_list = [] + link_traffic_volume_std_list = [] + + for i in range(5): + W = World( + name="", + deltan=5, + tmax=7200, + print_mode=0, save_mode=0, show_mode=1, + random_seed=None + ) + + W.load_scenario_from_csv("dat/siouxfalls_nodes.csv", "dat/siouxfalls_links.csv", "dat/siouxfalls_demand.csv") + + W.exec_simulation() + + W.analyzer.print_simple_stats() + + df = W.analyzer.basic_to_pandas() + total_trips_list.append(df["total_trips"].values[0]) + completed_trips_list.append(df["completed_trips"].values[0]) + total_travel_time_list.append(df["total_travel_time"].values[0]) + average_travel_time_list.append(df["average_travel_time"].values[0]) + average_delay_list.append(df["average_delay"].values[0]) + + df2 = W.analyzer.link_to_pandas() + link_traffic_volume_mean_list.append(df2["traffic_volume"].mean()) + link_traffic_volume_std_list.append(df2["traffic_volume"].std()) + + # print(i) + # for t in list(range(0,W.TMAX,int(W.TMAX/6))): + # W.analyzer.network(t, detailed=0, network_font_size=0, figsize=(4,4)) + + print(f"{np.average(total_trips_list) = }\n{np.average(completed_trips_list) = }\n{np.average(total_travel_time_list) = }\n{np.average(average_travel_time_list) = }\n{np.average(average_delay_list) = }\n{np.average(link_traffic_volume_mean_list) = }\n{np.average(link_traffic_volume_std_list) = }") + print() + print(f"{np.std(total_trips_list) = }\n{np.std(completed_trips_list) = }\n{np.std(total_travel_time_list) = }\n{np.std(average_travel_time_list) = }\n{np.std(average_delay_list) = }\n{np.std(link_traffic_volume_mean_list) = }\n{np.std(link_traffic_volume_std_list) = }") + + assert equal_tolerance(np.average(total_trips_list), 34690.0) + assert equal_tolerance(np.average(completed_trips_list), 33247.0) + assert equal_tolerance(np.average(total_travel_time_list), 58423065.0) + assert equal_tolerance(np.average(average_travel_time_list), 1757.2519806618154) + assert equal_tolerance(np.average(average_delay_list), 386.9874140444886) + assert equal_tolerance(np.average(link_traffic_volume_mean_list), 1185.8552631578946, rel_tol=0.2) + assert equal_tolerance(np.average(link_traffic_volume_std_list), 750.477574487115, rel_tol=0.2) + + # assert equal_tolerance(np.std(total_trips_list), 0.0, rel_tol=1) + # assert equal_tolerance(np.std(completed_trips_list), 65.46754921333164, rel_tol=1) + # assert equal_tolerance(np.std(total_travel_time_list), 138625.4193862006, rel_tol=1) + # assert equal_tolerance(np.std(average_travel_time_list), 6.016662655879493, rel_tol=1) + # assert equal_tolerance(np.std(average_delay_list), 7.43415746253196, rel_tol=1) + # assert equal_tolerance(np.std(link_traffic_volume_mean_list), 8.806259578063365, rel_tol=1) + # assert equal_tolerance(np.std(link_traffic_volume_std_list), 10.943099195703097, rel_tol=1) \ No newline at end of file