AmbieGen
AmbieGen is a flexible and modular framework for automated scenario-based testing of autonomous robotic systems. It leverages evolutionary search algorithms to generate and evolve test scenarios that expose weaknesses and critical failures in the system under test.
Built on top of the pymoo multi-objective optimization library, AmbieGen provides a foundation for customizable and extensible test generation workflows, enabling researchers and developers to plug in their own test generators, search operators, and fitness functions with minimal effort.
🔍 Key Advantages
-
Modular Architecture
Every component—from the system under test to the test case generator and mutation operators—is fully modular, making it easy to integrate new algorithms or extend existing ones. -
Flexible Configuration
Users can configure their own test generators, mutation and crossover strategies, evaluation metrics, and search techniques, tailoring the framework to their specific application domain. -
Based on Pymoo
The framework is built onpymoo, a widely-used library for evolutionary optimization, enabling fast integration of multi-objective and advanced search strategies.
🚀 Features
-
Behavior-based scenario generation
Generate complex scenarios by composing high-level agent behaviors (e.g., lane changing, obstacle avoidance, adversarial behavior). -
Evaluation of autonomous decision-making
Automatically identify edge cases and failure-inducing situations by analyzing agent behavior across test runs. -
Support for multiple domains
Test case generation currently supports:- Autonomous mobile robots
- Lane Keeping Assist Systems (LKAS) in autonomous vehicles
-
Custom Search Operators
Easily implement your own mutation, crossover, or sampling strategies to guide the search more effectively. -
Extensible Evaluation
Plug in your own scoring and fitness evaluation logic, such as safety violations, control errors, or collision metrics.
📖 Citation
If you use AmbieGen in your research, please cite the following paper:
@article{HUMENIUK2023102990,
title = {AmbieGen: A search-based framework for autonomous systems testingImage 1},
journal = {Science of Computer Programming},
volume = {230},
pages = {102990},
year = {2023},
issn = {0167-6423},
doi = {https://doi.org/10.1016/j.scico.2023.102990},
url = {https://www.sciencedirect.com/science/article/pii/S0167642323000722},
author = {Dmytro Humeniuk and Foutse Khomh and Giuliano Antoniol},
keywords = {Evolutionary search, Autonomous systems, Self driving cars, Autonomous robots, Neural network testing},
}
Getting Started
📚 Documentation Full documentation is available at: https://ambiegen.readthedocs.io/en/latest/
Installation
Clone the repository and install dependencies:
git clone git@github.com:swat-lab-optimization/ambiegen.git
cd ambiegen
conda create -n ambiegen python=3.10
conda activate ambiegen
pip install -r requirements.txt
Usage
Generating Tests
Run the following to command to generate tests based on the default configuration:
python generate_tests.py --module-name "ambiegen.testers.uav_tester" --class-name "UAVTester" --runs 3 --config-path "tester_config.yaml"
Comparing Outputs
Use the compare.py script to compare results:
python compare.py --stats_path "path-to-alg1-stats" "path-to-alg2-stats" --stats_names "alg1" "alg2" --plot_name "my_experiment"
Metadata
Release files for ambiegen 0.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ambiegen-0.0.5.tar.gz | 75.9 kB | Without provenance | Details for ambiegen-0.0.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ambiegen-0.0.5-py3-none-any.whl | Python 3 | none | any | Details for ambiegen-0.0.5-py3-none-any.whl |
Total release size: 155.3 kB
Release files / ambiegen-0.0.5.tar.gz
| Download URL | ambiegen-0.0.5.tar.gz |
|---|---|
| Size | 75.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9b939651b36ffe6004d0a1cfb18d65866e27f17dc0f82db0de9720352613bdc6
|
|
BLAKE2b-256 checksum How to use checksums |
8168dd979d38cecf7a934e7506117b586c254b7d837d6ce07a71c9346906783c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.18
|
Release files / ambiegen-0.0.5-py3-none-any.whl
| Download URL | ambiegen-0.0.5-py3-none-any.whl |
|---|---|
| Size | 79.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ce5a09b7a87c152625d8d0bffbcf3b0a11a64254d46699d9461d67053ed620c2
|
|
BLAKE2b-256 checksum How to use checksums |
9bbc2a85f75835de7f946a9fc060911d6773ac819359bf19ed35ead0db63d9a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.18
|
Security for ambiegen 0.0.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.