Skip to content

Commit 031a056

Browse files
committed
update README on memory issue in accessibility
- memory issue is possible to evaluate accessibility on a large network under the current implementation without virtual centroids and connectors - fix typos in README - add settings.csv (from Chicago_Sketch)to ASU network
1 parent 8dcdbef commit 031a056

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

README.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ $ brew install libomp
194194

195195
### Perform Multimodal Accessibility Evaluation
196196

197-
The current implemenation under v0.7.0a1 supprts accessibility evaluations for the following three modes. More modes will be added in the future to accommodate the full set of allowed uses for links as specified by GMNS. Note that you can restrict the allowed uses (modes) on each link by adding a field of "allowed_uses" to link.csv following the example [here](https://github.com/zephyr-data-specs/GMNS/blob/master/Small_Network_Examples/Cambridge_v090/link.csv). Othewise, links are open to all modes.
197+
The current implemenation under v0.7.0a1 supprts accessibility evaluation for the following three modes. More modes will be added in the future to accommodate the full set of allowed uses for links as specified by GMNS. Note that you can restrict the allowed uses (modes) on each link by adding a field of "allowed_uses" to link.csv following the example [here](https://github.com/zephyr-data-specs/GMNS/blob/master/Small_Network_Examples/Cambridge_v090/link.csv). Othewise, links are open to all modes.
198198

199199
1. passenger (i.e., auto)
200200
2. bike
@@ -245,7 +245,9 @@ print('accessibility matrices can be found in accessibility.csv '
245245
'and accessibility_aggregated.csv')
246246
```
247247

248-
Two formats of accessibility will be outputed: accessibility between each OD pair in terms of free flow travel time (accessibility.csv) and aggregated accessibility as to the number of accessible zones from each zone for each transportation mode specified in settings.yml given a budget time (accessibility_aggregated.csv). The following example is to evaluate accessibility only under the default mode (i.e. mode auto or agent type passenger).
248+
Two formats of accessibility will be outputed: accessibility between each OD pair in terms of free flow travel time (accessibility.csv) and aggregated accessibility as to the number of accessible zones from each zone for each transportation mode specified in settings.yml given a budget time (up to 240 minutes) (accessibility_aggregated.csv). The following example is to evaluate accessibility only under the default mode (i.e. mode auto or agent type passenger).
249+
250+
**Waring**: you may encounter memory issue to evaluate accessibility on a large network under the current implementation, which is not memory efficient for this functionality. It may be replaced with the implementation using virtual centroids and connectors in the future.
249251

250252
```python
251253
network = pg.read_network()
@@ -317,6 +319,6 @@ Coming soon.
317319

318320
The column generation scheme in Path4GMNS is an equivalent **single-processing implementation** as its [DTALite](https://github.com/jdlph/DTALite/tree/main/src_cpp) multiprocessing counterpart. **Note that the results (i.e., column pool and trajectory for an agent) from Path4GMNS and DTALite are comparable but likely not identical as the shortest paths are usually not unique and subjected to implementations**. This subtle difference should be gone and the link performances should be consistent if the iterations on both assignment and column generation are large enough. You can always compare the results (i.e., link_performance.csv) from Path4GMNS and DTALite given the same network and demand.
319321

320-
The whole package is implemented towards **high performance**. The core shortest-path engine is implemented in C++ (deque implementation of the modified label correcting algorithm) along with the equivalent Python implementations for demonstrations. To achieve the maximum efficiency, we use a fixed-length array as the deque (rather than the STL deque) and combine the scan eligible list (represented as deque) with the node presence statutes. Along with the minimum and fast argument interfacing between the underlying C++ path engine and the upper Python modules, its running time is comparable to the pure C++-based DTALite. If you have an extremely large network and/or have requirement on CPU time, we recommend using DTALite to fully utilze its parallel computing feature.
322+
The whole package is implemented towards **high performance**. The core shortest-path engine is implemented in C++ (deque implementation of the modified label correcting algorithm) along with the equivalent Python implementations for demonstrations. To achieve the maximum efficiency, we use a fixed-length array as the deque (rather than the STL deque) and combine the scan eligible list (represented as deque) with the node presence status. Along with the minimum and fast argument interfacing between the underlying C++ path engine and the upper Python modules, its running time is comparable to the pure C++-based DTALite. If you have an extremely large network and/or have requirement on CPU time, we recommend using DTALite to fully utilze its parallel computing feature.
321323

322-
An easy and smooth installation process by **low dependency** is one of our major design goals. The core Python modules in Path4GMNS only requires a handful of components from the Python standard library (e.g., csv, cytpes, and so on) with no any third-party libraries/packages. On the C++ side, the precompiled path engine as shared libraries are embedded to make this package portable across three major desktop environments (i.e., Windows, macOS, and Linux) and its source is implemented in C++11 with no dependency. Users can easily build the path engine from the source code towards the target system if it is not listed as one of the three.
324+
An easy and smooth installation process by **low dependency** is one of our major design goals. The core Python modules in Path4GMNS only require a handful of components from the Python standard library (e.g., csv, cytpes, and so on) with no any third-party libraries/packages. On the C++ side, the precompiled path engine as shared libraries are embedded to make this package portable across three major desktop environments (i.e., Windows, macOS, and Linux) and its source is implemented in C++11 with no dependency. Users can easily build the path engine from the source code towards the target system if it is not listed as one of the three.

data/ASU/settings.csv

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
[assignment],,assignment_mode,number_of_iterations,column_updating_iterations,signal_updating_iterations,signal_updating_output,remarks
2+
,,ue,40,40,-1,0,"assignment_mode can be ue, dta or odme"
3+
,,,,,,,
4+
[agent_type],agent_type,name,,VOT,flow_type,PCE,
5+
,p,passenger,,10,0,1,
6+
,,,,,,,
7+
[link_type],link_type,link_type_name,,agent_type_blocklist,type_code,traffic_flow_code,
8+
,1,Highway/Expressway,,,f,0,
9+
,2,Major arterial,,,a,0,
10+
,,,,,,,
11+
[demand_period],demand_period_id,demand_period,,time_period,,,
12+
,1,AM,,0700_0800,,,
13+
,,,,,,,
14+
[demand_file_list],file_sequence_no,file_name,,format_type,demand_period,agent_type,
15+
,1,demand.csv,,column,AM,p,
16+
,,,,,,,
17+
[capacity_scenario],,from_node_id,to_node_id,time_window,time_interval,travel_time_delta,capacity

0 commit comments

Comments
 (0)