Skip to content

Commit a1b3791

Browse files
committed
update README
- set memory_blocks to 1 as multiprocessing is not implemented; - consolidate output on total gap and relative gap into to reduce flushing.
1 parent 2be00cd commit a1b3791

File tree

5 files changed

+20
-18
lines changed

5 files changed

+20
-18
lines changed

README.md

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Path4GMNS
22
[![platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-red)](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-red)
3-
[![Downloads](https://pepy.tech/badge/path4gmns)](https://pepy.tech/project/path4gmns) [![GitHub release](https://img.shields.io/badge/release-v0.9.1-brightgreen)](https://img.shields.io/badge/release-v0.8.2-brightgreen)
3+
[![Downloads](https://pepy.tech/badge/path4gmns)](https://pepy.tech/project/path4gmns) [![GitHub release](https://img.shields.io/badge/release-v0.9.2-brightgreen)](https://img.shields.io/badge/release-v0.8.2-brightgreen) ![Read the Docs](https://img.shields.io/readthedocs/path4gmns)
44

55
Path4GMNS is an open-source, cross-platform, lightweight, and fast Python path engine for networks encoded in [GMNS](https://github.com/zephyr-data-specs/GMNS). Besides finding static shortest paths for simple analyses, its main functionality is to provide an efficient and flexible framework for column-based (path-based) modeling and applications in transportation (e.g., activity-based demand modeling). Path4GMNS supports, in short,
66

@@ -20,23 +20,23 @@ Path4GMNS also serves as an API to the C++-based [DTALite](https://github.com/jd
2020
![Architecture](/docs/source/imgs/architecture.png)
2121

2222
## Installation
23-
Path4GMNS has been published on [PyPI](https://pypi.org/project/path4gmns/0.9.1/), and can be installed using
23+
Path4GMNS has been published on [PyPI](https://pypi.org/project/path4gmns/0.9.2/), and can be installed using
2424
```
2525
$ pip install path4gmns
2626
```
27-
If you need a specific version of Path4GMNS, say, 0.9.1,
27+
If you need a specific version of Path4GMNS, say, 0.9.2,
2828
```
29-
$ pip install path4gmns==0.9.1
29+
$ pip install path4gmns==0.9.2
3030
```
3131

32-
v0.9.1 improves the performance with the fully optimized C++ routing engine and enhances the mesoscopic traffic simulation module, where the routing decisions now are coming from UE rather than shortest paths. Please **update to or install the latest version** and **discard all old versions**.
32+
v0.9.2 improves the performance with faster and better UE convergency along with bug fix on loading columns. Please **update to or install the latest version** and **discard all old versions**.
3333

3434
### Dependency
35-
The Python modules are written in **Python 3.x**, which is the minimum requirement to explore the most of Path4GMNS. Some of its functions require further run-time support, which we will go through along with the corresponding [use cases](https://path4gmns.readthedocs.io/en/latest/).
35+
The Python modules are written in **Python 3.x**, which is the minimum requirement to explore the most of Path4GMNS. Some of its functions require further run-time support, which we will go through along with the corresponding **[Use Cases](https://path4gmns.readthedocs.io/en/latest/)**.
3636

3737
## Quick Start
3838

39-
We highly recommend that you go through [this tutorial](https://github.com/jdlph/Path4GMNS/tree/dev/tests/tutorial.ipynb) written in Jupyter notebook with step-by-step demonstration using the latest version, no matter you are one of the existing users or new to Path4GMNS.
39+
We highly recommend that you go through this **[Tutorial](https://github.com/jdlph/Path4GMNS/tree/dev/tests/tutorial.ipynb)** written in Jupyter notebook with step-by-step demonstration using the latest version, no matter you are one of the existing users or new to Path4GMNS. Its documentation is available on **[readthedocs](https://path4gmns.readthedocs.io/en/latest/)**.
4040

4141
## Implementation Notes
4242

@@ -51,7 +51,7 @@ An easy and smooth installation process by **low dependency** is one of our majo
5151

5252
In order to resolve this issue, we have deprecated node sum and introduced a side-by-side column comparison in Path4GMNS only. As columns between an OD pair are largely different in number of nodes, this comparison can be very efficiently. Slight improvements are actually observed in both running time and convergence gap over the original implementation.
5353

54-
DTALite uses arrays rather than STL containers to store columns. These arrays are fixed in size (1,000), which prevents a fast filtering using the number of nodes as described above. For two (long) columns only different in the last few nodes, this side-by-side comparison has to be continued until the very end and ruins the performance. Thus, we decide **NOT TO ADOPT** this updated implementation to DTALite but do expect it in the future release after [refactoring](https://github.com/jdlph/DTALite#refactoring).
54+
DTALite uses arrays rather than STL containers to store columns. These arrays are fixed in size (1,000), which prevents a fast filtering using the number of nodes as described above. For two (long) columns only different in the last few nodes, this side-by-side comparison has to be continued until the very end and ruins the performance. Thus, we decide **NOT TO ADOPT** this updated implementation to DTALite and leave it to **[TransOMS](https://github.com/jdlph/TransOMS)**.
5555

5656
### Major Updates
5757
1. Read and output node and link geometries (v0.6.0)
@@ -87,6 +87,9 @@ DTALite uses arrays rather than STL containers to store columns. These arrays ar
8787
31. Introduce the simulation module along with a simple traffic simulator using the point queue model and shortest paths (v0.9.0)
8888
32. Fully optimize the C++ routing engine (v0.9.1)
8989
33. Use the UE result as routing decisions for simulation (v0.9.1)
90+
34. Optimize the column generation module with faster and better UE convergency (v0.9.2)
91+
35. Resolve the potential issue on traversing the last through node in path engine (v0.9.2)
92+
36. Fix the bug on loading columns where link path and node paths are not in the proper order (v0.9.2)
9093

9194
Detailed update information can be found in [Releases](https://github.com/jdlph/Path4GMNS/releases).
9295

docs/source/installation.rst

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22
Installation
33
============
44

5-
Path4GMNS has been published on `PyPI <https://pypi.org/project/path4gmns/0.9.1/>`_, and can be installed using
5+
Path4GMNS has been published on `PyPI <https://pypi.org/project/path4gmns/0.9.2/>`_, and can be installed using
66

77
.. code-block:: bash
88
99
$ pip install path4gmns
1010
11-
If you need a specific version of Path4GMNS, say, 0.9.1,
11+
If you need a specific version of Path4GMNS, say, 0.9.2,
1212

1313
.. code-block:: bash
1414
15-
$ pip install path4gmns==0.9.1
15+
$ pip install path4gmns==0.9.2
1616
1717
1818
Dependency
@@ -55,7 +55,7 @@ As CMAKE_BUILD_TYPE will be IGNORED for IDE (Integrated Development Environment)
5555
# from the root directory of PATH4GMNS
5656
$ python setup.py sdist bdist_wheel
5757
$ cd dist
58-
# or python -m pip install path4gmns-0.9.1.tar.gz
59-
$ python -m pip instal pypath4gmns-0.9.1-py3-none-any.whl
58+
# or python -m pip install path4gmns-0.9.2.tar.gz
59+
$ python -m pip instal pypath4gmns-0.9.2-py3-none-any.whl
6060
61-
Here, 0.8.7 is the version number. Replace it with the one specified in setup.py.
61+
Here, 0.9.2 is the version number. Replace it with the one specified in setup.py.

path4gmns/classes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1347,7 +1347,7 @@ def __init__(self):
13471347
self.network = None
13481348
self.spnetworks = []
13491349
self.accessnetwork = None
1350-
self.memory_blocks = 4
1350+
self.memory_blocks = 1
13511351
self.map_atstr_id = {}
13521352
self.map_dpstr_id = {}
13531353
self.map_name_atstr = {}

path4gmns/colgen.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,7 @@ def _update_column_gradient_cost_and_flow(column_pool, links, agent_types, iter_
119119
rel_gap = total_gap / max(total_travel_time, SMALL_DIVISOR)
120120

121121
print(f'current iteration number in column update: {iter_num}\n'
122-
f'total gap: {total_gap:.2f}\n'
123-
f'relative gap: {rel_gap:.4%}')
122+
f'total gap: {total_gap:.2f}; relative gap: {rel_gap:.4%}')
124123

125124

126125
def _backtrace_shortest_path_tree(centroid,

tests/demo.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,4 +281,4 @@ def demo_mode(mode):
281281

282282
if __name__=="__main__":
283283

284-
demo_mode(10)
284+
demo_mode(3)

0 commit comments

Comments
 (0)