<commit_before># Traffic Assignment frameworK (TAsK)

The TAsK software implements several algorithms for solving the deterministic static traffic 
 	assignment problem with fixed demands, and the non-additive traffic 
 	assignment problem. 

All code is implemented in the C++ programming language.
This is open-source software distributed under the MIT license.

The software was tested only on the Ubuntu (12.10, 13.10 and 14.04) operating system.

**Authors**
- <a href = http://www.des.auckland.ac.nz/people/o-perederieieva><NAME></a>
- <a href = https://github.com/Boshen><NAME></a> (A* star shortest path algorithm)
- <NAME> (bi-directional bi-objective label-setting algorithm)

**Contributors**

- <a href = http://www.lancaster.ac.uk/lums/people/all/matthias-ehrgott/><NAME></a>
- <a href = https://unidirectory.auckland.ac.nz/profile/a-raith><NAME></a>
- <a href = http://www.its.leeds.ac.uk/people/staff-profiles/judith-wang/><NAME></a>
- <a href = http://www.rsm.nl/people/marie-schmidt/><NAME></a>

The style sheet for documentation comes from https://github.com/Velron/doxygen-bootstrapped.

**Version** 1.0

**Copyright** MIT license

## How to cite
In a paper, please, cite the following reference:

> <NAME>, <NAME>, <NAME>, <NAME>, 
> A framework for and empirical study of algorithms for traffic assignment, 
> Computers & Operations Research, Volume 54, February 2015, Pages 90-107, 
> ISSN 0305-0548, http://dx.doi.org/10.1016/j.cor.2014.08.024.

In code documentation, include a reference to this website.

## Features
- 11 algorithms for additive traffic assignment that belong to link-, path- and bush-based
methods.
- 2 algorithms for non-additive traffic assignment (path equilibration and gradient projection).
- 2 equilibration strategies.
- 3 algorithms for finding a step size (bisection, Armijo-like rule and quadratic approximation).
- Various options for direction of descent.
- 3 flow update strategies for path-based algorithms.
- Non-additive shortest path algorithm based on bi-objective label-setting with 
speed-up techniques that exploit the traffic assignment structure.
- Plain text and KML output of computation results.

## Installation instructions

Requirements:
- C++ compiler (the software was tested with gcc 4.8.2).
- Boost library that can be downloaded from http://www.boost.org/.

Instructions:
- Download archive with source code.
- Unzip.
- Open terminal, go to the folder with source code and type: make.

By default extended floating point precision is used (long double type).
In order to use double type, comment line
CPPFLAGS += -DUSE_EXTENDED_PRECISION in Makefile and
recompile code if necessary by typing in terminal: make clean; make.

**Note:** If double type is used instead of long double, algorithms might fail to find highly precise
solutions.

## Documentation
API documentation can be found in vendor/Docs/index.html.

## Usage

In order to run the TAsK software one should create a text file with various run parameters first.

### Example data

The archive with source code includes the SiouxFalls data instance from 
http://www.bgu.ac.il/~bargera/tntp/. This instance can be used for
research purposes only.

### How to run

After compiling the source code, one can run it with one of the two included parameter files. 
Example parameter files are  
input.params for conventional traffic assignment
and inputNonAdd.params
for non-additive traffic assignment. Please, use these files as templates for creating
other files with parameters.

**Note:** If some of the fields are missing or invalid values are used, the program will
terminate with an error message or failed assertion.

**Warning:** All field names and possible values are case-sensitive.

In order to run code with input.params:
- Open terminal and go to the folder with source code.
- Type in terminal: ./ta input.params.

File input.params allows to solve the additive
traffic assignment problem with the Algorithm B based 
on quadratic approximation
for the SiouxFalls instance.

File inputNonAdd.params allows to solve the non-additive
traffic assignment problem with the path equilibration algorithm
based on Newton step
for the SiouxFalls instance.

### Parameter files<commit_msg>Updated link to data instances<commit_after># Traffic Assignment frameworK (TAsK)

The TAsK software implements several algorithms for solving the deterministic static traffic 
 	assignment problem with fixed demands, and the non-additive traffic 
 	assignment problem. 

All code is implemented in the C++ programming language.
This is open-source software distributed under the MIT license.

The software was tested only on the Ubuntu (12.10, 13.10 and 14.04) operating system.

**Authors**
- <a href = http://www.des.auckland.ac.nz/people/o-perederieieva><NAME></a>
- <a href = https://github.com/Boshen><NAME></a> (A* star shortest path algorithm)
- <NAME> (bi-directional bi-objective label-setting algorithm)

**Contributors**

- <a href = http://www.lancaster.ac.uk/lums/people/all/matthias-ehrgott/><NAME></a>
- <a href = https://unidirectory.auckland.ac.nz/profile/a-raith><NAME></a>
- <a href = http://www.its.leeds.ac.uk/people/staff-profiles/judith-wang/><NAME></a>
- <a href = http://www.rsm.nl/people/marie-schmidt/><NAME></a>

The style sheet for documentation comes from https://github.com/Velron/doxygen-bootstrapped.

**Version** 1.0

**Copyright** MIT license

## How to cite
In a paper, please, cite the following reference:

> <NAME>, <NAME>, <NAME>, <NAME>, 
> A framework for and empirical study of algorithms for traffic assignment, 
> Computers & Operations Research, Volume 54, February 2015, Pages 90-107, 
> ISSN 0305-0548, http://dx.doi.org/10.1016/j.cor.2014.08.024.

In code documentation, include a reference to this website.

## Features
- 11 algorithms for additive traffic assignment that belong to link-, path- and bush-based
methods.
- 2 algorithms for non-additive traffic assignment (path equilibration and gradient projection).
- 2 equilibration strategies.
- 3 algorithms for finding a step size (bisection, Armijo-like rule and quadratic approximation).
- Various options for direction of descent.
- 3 flow update strategies for path-based algorithms.
- Non-additive shortest path algorithm based on bi-objective label-setting with 
speed-up techniques that exploit the traffic assignment structure.
- Plain text and KML output of computation results.

## Installation instructions

Requirements:
- C++ compiler (the software was tested with gcc 4.8.2).
- Boost library that can be downloaded from http://www.boost.org/.

Instructions:
- Download archive with source code.
- Unzip.
- Open terminal, go to the folder with source code and type: make.

By default extended floating point precision is used (long double type).
In order to use double type, comment line
CPPFLAGS += -DUSE_EXTENDED_PRECISION in Makefile and
recompile code if necessary by typing in terminal: make clean; make.

**Note:** If double type is used instead of long double, algorithms might fail to find highly precise
solutions.

## Documentation
API documentation can be found in vendor/Docs/index.html.

## Usage

In order to run the TAsK software one should create a text file with various run parameters first.

### Example data

The archive with source code includes the SiouxFalls data instance from 
https://github.com/bstabler/TransportationNetworks. This instance can be used for
research purposes only.

### How to run

After compiling the source code, one can run it with one of the two included parameter files. 
Example parameter files are  
input.params for conventional traffic assignment
and inputNonAdd.params
for non-additive traffic assignment. Please, use these files as templates for creating
other files with parameters.

**Note:** If some of the fields are missing or invalid values are used, the program will
terminate with an error message or failed assertion.

**Warning:** All field names and possible values are case-sensitive.

In order to run code with input.params:
- Open terminal and go to the folder with source code.
- Type in terminal: ./ta input.params.

File input.params allows to solve the additive
traffic assignment problem with the Algorithm B based 
on quadratic approximation
for the SiouxFalls instance.

File inputNonAdd.params allows to solve the non-additive
traffic assignment problem with the path equilibration algorithm
based on Newton step
for the SiouxFalls instance.

### Parameter files
{'fraction_non_alphanumeric': 0.08441405328931856, 'fraction_numerical': 0.013440226361707145, 'mean_word_length': 4.341939546599496, 'pattern_counts': {'":': 0, '<': 49, '<?xml version=': 0, '>': 57, 'https://': 7, 'lorem ipsum': 0, 'www.': 11, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6140876', 'n_tokens_mistral': 2450, 'n_tokens_neox': 2270, 'n_words': 1045}