All notable changes to Flatland will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[4.2.2] 2025-09-26
- feature: offline evaluation. by @chenkins in flatland-association#272
- feature: add routing flexibility to intermediate waypoints. by @chenkins in flatland-association#271
- feat(policy runner): additional options and fixes. by @chenkins in flatland-association#276
- feat: Use GraphTransitionMap with RailEnv. refactor: Use Generic Type Hints for the Core / Envs Levels. Pull-up to core of several components. by @chenkins in flatland-association#257
- perf(trajectories): improve collecting during policy run. by @chenkins in flatland-association#283
- test: verify known flatland bugs from maze release 2 are fixed. by @chenkins in flatland-association#273
- ci: run checks workflow upon push to main. by @chenkins in flatland-association#288
- chore: update dependency post merge flatland baselines by @chenkins in flatland-association#289
- ci: fix condition run benchmarks on main. by @chenkins in flatland-association#290
- chore: Release Notes 4.2.2. by @chenkins in flatland-association#287
- ci: fix tests in publish workflows. by @chenkins in flatland-association#291
[4.2.1] 2025-09-03
- feature: Shortest Path Policy. by @chenkins in flatland-association#268
- feature: basic support for Multi-Objective Reinforcement Learning (MORL). by @chenkins in flatland-association#269
[4.2.0] 2025-08-29
- feature: Support version ranges in evaluator service. by @chenkins in flatland-association#261
- feature: Add observation perturbations. by @chenkins in flatland-association#255
- feature: Minor disruptions with faster recovery times at train stations. by @chenkins in flatland-association#263
[4.1.4] - 2025-08-16
- feature: add clone_from other env. by @chenkins in flatland-association#249
- feature: Trajectory rollout with rllib checkpoint. by @chenkins in flatland-association#253
- feature: Improve Trajectory API fork: load the latest snapshot and run from there instead of from beginning. by @chenkins in flatland-association#254
- Bump urllib3 from 2.4.0 to 2.5.0 by @dependabot[bot] in flatland-association#233
- Bump pillow from 11.2.1 to 11.3.0 by @dependabot[bot] in flatland-association#246
- refactor: malfunction generation as effects generator. by @chenkins in flatland-association#232 and flatland-association#258
- refactor:
Policy.actshould not require handle. by @chenkins in flatland-association#250 - Cache random state to generate cached random values instead of random values themselves. by @chenkins in flatland-association#256
[4.1.3] - 2025-06-20
- Enhance Trajectory Runner API: clone/fork trajectory and run policy from intermediate step. Add rewards and dones to Trajectory API and regression tests, add callback for observation and info_dict snapshoting. by @chenkins in flatland-association#222
- Add retries to tox notebooks env. by @chenkins in flatland-association#227
- 142 verify required and missing requirements. by @chenkins in flatland-association#225
- Bump torch from 2.7.0 to 2.7.1 by @dependabot in flatland-association#229
- Bump requests from 2.32.3 to 2.32.4 by @dependabot in flatland-association#231
- Bugfix action serialization in Trajectory API. by @chenkins in flatland-association#226
- Fix path type conversion trajectory API cli. by @chenkins in flatland-association#228
[4.1.2] - 2025-05-23
- Add 4.1.1 to list of versions to be profiled. by @chenkins in flatland-association#212
- 116 Add support for py 3.13 by @chenkins in flatland-association#121
- Fix passing observation builder to RailEnv in FlatlandRemoteClient. by @chenkins in flatland-association#215
- Refactor action preprocessing. by @chenkins in flatland-association#214
- Performance Tuning step function part III: TrainState/StateTransitionSignals data types and object lifecycle. by @chenkins in flatland-association#210
- Drop pkg_resources as it is deprecated and removed in Python 3.12. by @chenkins in flatland-association#221
[4.1.1] - 2025-05-16
- Add tqdm_kwargs to create_from_policy as well. by @chenkins in flatland-association#198
- Add regression DLA against saved trajectories. by @chenkins in flatland-association#208
- Fix is_cell_entry of SpeedCounter.setstate by @castagna-a in flatland-association#199
- Remove obsolete parameters in rewards function. Add math references. by @chenkins in flatland-association#201
- Improved offset for agent debug. by @chenkins in flatland-association#209
- 196-performance-step-function by @chenkins in flatland-association#203
- 86 Performance Speed-Up MotionCheck and Code/Documentation Cleanup. by @chenkins in flatland-association#87
[4.1.0] - 2025-03-31
- 134 Add Effects Generator. by @chenkins in flatland-association#156
- 158 Trajectory cli (runner, evaluator) improvements. by @chenkins in flatland-association#193
- Add configuration option for non-default URL for InteractiveAI events, context and historic API. by @chenkins in flatland-association#191
- Add graph_to_digraph.drawio.png required by graph demo notebook. by @chenkins in flatland-association#189
- 179 Simplify step function by @chenkins in flatland-association#182
[4.0.6] - 2025-03-21
- Update CHANGELOG.md by @chenkins in flatland-association#159
- 125/96 Episodes with malfunction for benchmarking and regression tests. 8 Policy abstraction. by @chenkins in flatland-association#131
- 135 Add Flatland callbacks. Refactor trajectories. by @chenkins in flatland-association#157
- 73 Get Pettingzoo example to work again. by @chenkins in flatland-association#102
- Bump jinja2 from 3.1.5 to 3.1.6 by @dependabot in flatland-association#155
- 172 Add check mutually exclusive cell occupation and fix step function edge cases malfunction by @chenkins in flatland-association#171
- 148 Simplify action preprocessing. by @chenkins in flatland-association#163
- 148 Fix action preprocessing. by @chenkins in flatland-association#183
- 140 Rail, Line and Timetable from File Generators. by @chenkins in flatland-association#141
- 111 Variable Speed Profiles. by @chenkins in flatland-association#136
- InteractiveAI Integration. by @chenkins in flatland-association#152
- fix: Add tox benchmark environment again. by @chenkins in flatland-association#167
- Fix benchmarks. by @chenkins in flatland-association#169
- Fix graph demo visualization. by @chenkins in flatland-association#170
- 161 Split unit tests and slow ml tests in tox for transparency and parallelism. by @chenkins in flatland-association#164
- Fix tox gh actions. by @chenkins in flatland-association#165
- Fix main gh wf. by @chenkins in flatland-association#187
- Move graph image to subfolder. by @chenkins in flatland-association#186
- Enable checks workflow on all prs. by @chenkins in flatland-association#160
[4.0.5] - 2025-03-10
- 78 Extract performance profiling cli. by @chenkins in [pr#88]
- 110 Over- and underpasses (aka. level-free diamond crossings). by @chenkins in [pr#120]
- 109 Multi-stop Schedules (w/o alternatives/routing flexibility). by @chenkins in [pr#124]
- fix: from attr import attr, attrs, attrib, Factory ImportError: cannot import name 'attrs' from 'attr' by @chenkins in [pr#127]
- Fix grammar and spelling in comments rail_env py by @SergeCroise in [pr#130]
- 118 Add test_lru_cache_problem.py. by @chenkins in [pr#119]
- 143 Retry for ml tests. by @chenkins in [pr#146]
- Enable running notebooks in main workflow by @chenkins in [pr#144]
- Use flatland-scenarios instead of data.flatland.cloud for trajectories. by @chenkins in flatland-association#153
[4.0.4] - 2025-02-18
- Grid to DiGraph Conversion and Graph Simplification [pr #90] and [pr flatland-book#6]
- Policy evaluation and training cli (rllib) [pr #85]
- extract ml dependencies (torch, gym, ray, etc.) to optional dependencies in
pyproject.toml, newrequirements-ml.txtand slimmerrequirements[-dev].txt, keep coregymfree. - accordingly, move corresponding code to new
flatland.mlmodule - accordingly, move corresponding tests to
tests.ml(tests becomes a Python module)
- extract ml dependencies (torch, gym, ray, etc.) to optional dependencies in
- Enable redis in ci and run
test_service.ipynbin ci [pr #65] - Run main workflow daily and allow for manual triggering. Update deprecated gh actions versions, see GitHub Blog [pr #83].
- Add
AWS_ENDPOINT_URLenv var to override default S3 endpoint URL inaicrowd_helpers.py[pr #112]. - Add episodes for benchmarking and regression tests [pr #105].
- Dump
results.json(evaluation state) alongresults.csv[pr #115]. - Dump evaluation state along results output path. Make test env folder and supported client versions configurable for evaluation service. [pr #115].
- Policy evaluation and training cli (rllib) [pr #85].
- Add flatland-rl apidocs back to flatland book again [pr flatland-book#7]
- Fix flapping test malfunctions [pr #103]
- Fix
README.mdindefinite article before a vowel sound [pr #95]
- Bump jinja2 from 3.1.4 to 3.1.5 [pr #106]
- Bump tornado from 6.4.1 to 6.4.2. [pr #93]
- Bump aiohttp from 3.10.10 to 3.10.11. [pr #94]
- Deployment flatland-book to GitHub Pages [pr flaland-book#4] and [pr flatland-book#5] and [pr #98]
- Use Python >= 3.10 (drop support for deprecated python 3.8 eol 2024-10-07, see https://devguide.python.org/versions/). Move ml dependencies from core dependencies to optional ml dependencies [pr #84].
- Remove images folder. Images not referenced in documentation any more. Remove skipped test (fails tested locally) [pr #82].
- Rendering folder is not used. Descriptions in txt file are also contained in
examples/misc/generate_video/video_generation.md[pr #81]. - Cleanup scripts folder to contain only scripts to be run with
make[pr #80]. - Remove
flatland.action_planmodule as obsolete [pr #79]
Fixed.
The rail generators (infrastructure) implementation is based on A*. The A* implementation has been improved in terms of calculation time. The main modification concerns the internal data structure which was widely used in the A* algorithm. The used ordered set is replaced by a heap that allows to fetch the nearest nodes in O(1) instead of O(n).
More details: flatland-association#68
- Removed dependency on an old version of
gymwhich in turn brought in an old version ofpygletthat caused issues on Windows.
- Dropped support for Python 3.7 because it's end of life.
- Improved performance by introducing an LRU cache.
- Drastically improved performance by improving
numpyusage. - Updated a lot dependencies.
- Cleaned the project structure.
- First release handled by the flatland association!
- Fixed a lot of bugs :)
- The tests actually pass now.