Skip to main content

Tool for modeling and optimization of advanced locomotive powertrains for freight rail decarbonization.

Project description

ALTRIOS

Altrios Logo

homepage rust-tests py-tests wheels Python Documentation GitHub

Model Framework Schematic

The Advanced Locomotive Technology and Rail Infrastructure Optimization System (ALTRIOS) is a unique, fully integrated, open-source software tool to evaluate strategies for deploying advanced locomotive technologies and associated infrastructure for cost-effective decarbonization. ALTRIOS simulates freight-demand driven train scheduling, mainline meet-pass planning, locomotive dynamics, train dynamics, energy conversion efficiencies, and energy storage dynamics of line-haul train operations. Because new locomotives represent a significant long-term capital investment and new technologies must be thoroughly demonstrated before deployment, this tool provides guidance on the risk/reward tradeoffs of different technology rollout strategies. An open, integrated simulation tool is invaluable for identifying future research needs and making decisions on technology development, routes, and train selection. ALTRIOS was developed as part of a collaborative effort by a team comprising The National Renewable Energy Laboratory (NREL), University of Texas (UT), Southwest Research Institute (SwRI), and BNSF Railway.

Much of the core code in ALTRIOS is written in the Rust Programming Language to ensure excellent computational performance and robustness, but we've built ALTRIOS with the intent of users interacting with the code through our feature-rich Python interface.

Installation

If you are an ALTRIOS developer, see Developer Documentation. Otherwise, read on.

Python Setup

  1. Python installation options:
  2. Setup a python environment. ALTRIOS can work with Python 3.9, or 3.10, but we recommend 3.10 for better performance and user experience. Create a python environment for ALTRIOS with either of two methods:
    • Option 1 -- Python Venv
      1. Navigate to the ALTRIOS folder you just cloned or any folder you'd like for using ALTRIOS. Remember the folder you use!

      2. Assuming you have Python 3.10 installed, run

        • (path to your python3.10 e.g. ~/AppData/Local/Programs/Python/Python310/python.exe) -m venv altrios-venv in Windows
        • python3.10 -m venv altrios-venv in Mac/Unix/Linux in your terminal enviroment (we recommend PowerShell in Windows, which comes pre-installed).

        This tells Python 3.10 to use the venv module to create a virtual environment (which will be ignored by git if named altrios-venv) in the ALTRIOS/altrios-venv/.

      3. Activate the environment you just created to install packages or anytime you're running ALTRIOS:

        • Mac and Linux: source altrios-venv/bin/activate
        • Windows: altrios-venv/Scripts/activate.bat in a windows command prompt or power shell or source altrios-venv/Scripts/activate in git bash terminal
        • When the environment is activated, your terminal session will have a decorator that looks like (altrios-venv).
    • Option 2 -- Anaconda:
      1. Open an Anaconda prompt (in Windows, we recommend Anaconda Powershell Prompt) and run the command conda create -n altrios python=3.10 to create an Anaconda environment named altrios.
      2. Activate the environment to install packages or anytime you're running ALTRIOS: run conda activate altrios.

ALTRIOS Setup

With your Python environment activated, run pip install altrios.

Congratulations, you've completed installation! Whenever you need to use ALTRIOS, be sure to activate your python environment created above.

How to run ALTRIOS

With your activated Python environment with ALTRIOS fully installed, you can download the demo scripts to the current working directory inside of a demos/ folder with:

import altrios as alt  
alt.copy_demo_files()

You can run the Simulation Manager through a multi-week simulation of train operations in by running python sim_manager_demo.py in demos/. This will create a plots/ subfolder in which the plots will be saved. To run interactively, fire up a Python IDE (e.g. VS Code, Spyder), and run the file. If you're in VS Code, you can run the file as a virtual jupyter notebook because of the "cells" that are marked with the # %% annotation. You can click on line 2, for example, and hit <Shift> + <Enter> to run the current cell in an interactive terminal (which will take several seconds to launch) and advance to the next cell. Alternatively, you can hit <Ctrl> + <Shift> + p to enable interactive commands and type "run current cell". There are several other python files in the demos/ folder to demonstrate various capabilities of ALTRIOS.

If you plan to modify the data used in the demo files, copy the data files to your local directory and load them from there, e.g.

res = alt.ReversibleEnergyStorage.from_file(
   alt.resources_root() / "powertrains/reversible_energy_storages/Kokam_NMC_75Ah_flx_drive.yaml"
)

would become

res = alt.ReversibleEnergyStorage.from_file(
   "./custom_battery.yaml"
)

Nearly every code object in ALTRIOS can be read from or written to common data formats. For more details, see the SerdeAPI trait documentation. All of the functions in the SerdeAPI are available through the python interface.

Acknowledgements

  The ALTRIOS Team would like to thank ARPA-E for financially supporting the research through the LOCOMOTIVES program and Dr. Robert Ledoux for his vision and support. We would also like to thank the ARPA-E team for their support and guidance: Dr. Apoorv Agarwal, Mirjana Marden, Alexis Amos, and Catherine Good. We would also like to thank BNSF for their cost share financial support, guidance, and deep understanding of the rail industry’s needs. Additionally, we would like to thank Jinghu Hu for his contributions to the core ALTRIOS code. We would like to thank Chris Hennessy at SwRI for his support. Thank you to Michael Cleveland for his help with developing and kicking off this project.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

altrios-0.3.0.tar.gz (3.1 MB view details)

Uploaded Source

Built Distributions

altrios-0.3.0-cp311-cp311-win_amd64.whl (18.1 MB view details)

Uploaded CPython 3.11Windows x86-64

altrios-0.3.0-cp311-cp311-manylinux_2_39_x86_64.whl (20.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.39+ x86-64

altrios-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (20.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

altrios-0.3.0-cp311-cp311-macosx_10_12_universal2.whl (33.7 MB view details)

Uploaded CPython 3.11macOS 10.12+ universal2 (ARM64, x86-64)

altrios-0.3.0-cp310-cp310-win_amd64.whl (18.1 MB view details)

Uploaded CPython 3.10Windows x86-64

altrios-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (20.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

altrios-0.3.0-cp310-cp310-macosx_10_12_universal2.whl (33.7 MB view details)

Uploaded CPython 3.10macOS 10.12+ universal2 (ARM64, x86-64)

File details

Details for the file altrios-0.3.0.tar.gz.

File metadata

  • Download URL: altrios-0.3.0.tar.gz
  • Upload date:
  • Size: 3.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for altrios-0.3.0.tar.gz
Algorithm Hash digest
SHA256 20d45506fee6568ae24962240a338db15c258632f391fa491344e23a71c447f1
MD5 2223c2775e53a84bdb5803df5ea18768
BLAKE2b-256 3563c2378e91c5fdc8fd056394e13920e272e02cc1011ae410a9b56c468f7612

See more details on using hashes here.

Provenance

The following attestation bundles were made for altrios-0.3.0.tar.gz:

Publisher: wheels.yaml on NREL/altrios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file altrios-0.3.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: altrios-0.3.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 18.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for altrios-0.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0f76518fec85c0cdf68ef066aa89a1a4fc091218417037e828d869e3389540de
MD5 4e67b2929e4953d0001da472d2245d42
BLAKE2b-256 d2b8edb9514b3add6c809ee6edaac37af6f9777a1e59bf33e2824d468e9adee6

See more details on using hashes here.

Provenance

The following attestation bundles were made for altrios-0.3.0-cp311-cp311-win_amd64.whl:

Publisher: wheels.yaml on NREL/altrios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file altrios-0.3.0-cp311-cp311-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for altrios-0.3.0-cp311-cp311-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 024e42804b7d74340213d5d0254852def0dd3c01a6feaa0bfb9a9152dd62826c
MD5 884acbecd617d6aada208fb1d4a37418
BLAKE2b-256 4a2f0a374b4bd34e3cb75db479a118406b03b970d2e05cabd710ab944371661f

See more details on using hashes here.

Provenance

The following attestation bundles were made for altrios-0.3.0-cp311-cp311-manylinux_2_39_x86_64.whl:

Publisher: wheels.yaml on NREL/altrios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file altrios-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for altrios-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9a9f35f2b476465242fba28122ab8ec10a48aaf99616f492bdb8256c8a3f45c3
MD5 473bba35bdb8a2a36ee71864dd565b8c
BLAKE2b-256 f94a365ce5bfe4cf9c90bc6482e5842367b287b11255c090d97493f306fbe7fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for altrios-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: wheels.yaml on NREL/altrios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file altrios-0.3.0-cp311-cp311-macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for altrios-0.3.0-cp311-cp311-macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 50a70e875a4fefab02cebbe0a375ebc82fa6b71a37597e5523b1cfa45325e73a
MD5 ff5a35afb0ce61cf44a5f4ff05768ae4
BLAKE2b-256 1948b6f364e1359033c092956aab1e1f7ef42fd7d588e714a26997c8a7a0d445

See more details on using hashes here.

Provenance

The following attestation bundles were made for altrios-0.3.0-cp311-cp311-macosx_10_12_universal2.whl:

Publisher: wheels.yaml on NREL/altrios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file altrios-0.3.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: altrios-0.3.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 18.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for altrios-0.3.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d49fab9e29cf2d4c90497627b8c3c3c07844489faf9274752152c22da7079643
MD5 f2f4860e3b61f0fe74a92fd06efe43f3
BLAKE2b-256 e742e248dde1f2921e580d898177a62bfa28818f02cc47d92c39ff75a71ff615

See more details on using hashes here.

Provenance

The following attestation bundles were made for altrios-0.3.0-cp310-cp310-win_amd64.whl:

Publisher: wheels.yaml on NREL/altrios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file altrios-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for altrios-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2633188848777257e0e9ce4c795beb1d145cb71ee3ef54b088f26acee433993a
MD5 d3a7cf0d1a54d8a89b914fea120fdc19
BLAKE2b-256 a7719bd7c9594b3b11744816bfc75a0222f0e9d7b7e57466616b880cd5119e54

See more details on using hashes here.

Provenance

The following attestation bundles were made for altrios-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: wheels.yaml on NREL/altrios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file altrios-0.3.0-cp310-cp310-macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for altrios-0.3.0-cp310-cp310-macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 76a8e46ac0df5ac12132365a453d19e762ae5ba5dd4dfb1ea82044087255eaa1
MD5 eb45482cd8eed1843b3fc45c3f25d1e8
BLAKE2b-256 3d319271da46b3cb4d647a9b24905333e6ab2b3f0094e9874f38208a644b0691

See more details on using hashes here.

Provenance

The following attestation bundles were made for altrios-0.3.0-cp310-cp310-macosx_10_12_universal2.whl:

Publisher: wheels.yaml on NREL/altrios

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page