recovair-abm: Agent-based airline network model for disruption recovery decision-making
Installing recovair-abm requires a supported version of Node and Rust.
You can install the project with npm. In the project directory, run:
$ npm installThis fully installs the project, including installing any dependencies and running the build.
If you have already installed the project and only want to run the build, run:
$ npm run buildThis command uses the cargo-cp-artifact utility to run the Rust build and copy the built library into ./index.node.
In the project directory, you can run:
Installs the project, including running npm run build.
Builds the Node addon (index.node) from source.
Additional cargo build arguments may be passed to npm build and npm build-* commands. For example, to enable a cargo feature:
npm run build -- --feature=beetle
Alias for npm build.
Same as npm build but, builds the module with the release profile. Release builds will compile slower, but run faster.
Runs the unit tests by calling cargo test. You can learn more about adding tests to your Rust code from the Rust book.
- You need to generate necessary scenario data. Gather the following files and place them into a new folder at
db/truth. You may alternatively download the data we used.ACFTREF.txt(Aircraft Reference File from the FAA)MASTER.txt(Aircraft Registration Master File from the FAA)T_MASTER_CORD.csv(Aviation Support Tables: Master Coordinate from the BTS)T_ONTIME_REPORTING.csv(On-Time: Reporting Carrier On-Time Performance from the BTS)T_T100D_MARKET_US_CARRIER_ONLY.csv(T-100 Domestic Market from the BTS)T_T100D_SEGMENT_US_CARRIER_ONLY.csv(T-100 Domestic Segment from the BTS)
- Initialize a test database at
db/generator/test.db. Indb/generator, runsqlite3 test.db < ../sqlite_schema.sql. - Run
db/generator/preprocess.pyto seed the test database. If necessary, create a virtual environment and install dependencies fromdb/generator/requirements.txt. It will take a moment to generate synthetic crew information and passenger demand. - Run
npm run build-releaseto compile the Rust part of the model. - Run
node test_jan28.jsand verify that it prints the keys of the object representing the final state of the simulation. The object itself is enormous, so to relieve the terminal, we don't print it out by default.