Find Pareto-optimal cruise trajectories to optimize energy consumption and travel time for any vehicle with state-dependent costs.
Project description
Smart Cruise
Find Pareto-optimal cruise trajectories to optimize energy consumption and travel time.
- Free software: MIT
- Documentation: https://balouf.github.io/smart-cruise/.
- Github: https://github.com/balouf/smart-cruise
Features
- Find Pareto-optimal cruise trajectories balancing energy consumption and travel time.
- Dynamic programming with multi-objective Pareto optimization.
- JIT-compiled core engine for fast computation.
- Customizable cost models for different scenarios.
- Trajectory visualization tools.
Theoretical Foundations
This package implements the multi-objective dynamic programming framework described in:
Bui-Xuan, Mathieu, Tighilt (2026). La croisière s'amuse. submitted to Algotel 2026.
Main model assumptions:
- Dominance preservation (H1): Any resource advantage at step d can be maintained through transitions
- Lipschitz continuity (H2): Small perturbations lead to bounded output changes
Complexity: O(n² log n) for 2 objectives with constant precision, vs. exponential for exact Pareto front
The pareto_max parameter (denoted S in the paper) controls the trade-off between computation time and approximation quality.
Model Applicability
This package implements a state-dependent multi-objective optimization model using dynamic programming to find Pareto-optimal trajectories. While the default parameters are tuned for ship / aircraft cruise optimization, the underlying model applies to any vehicle where:
- Cruise mode exists: A fixed trajectory is studied, which can be split in segments.
- A set of values (e.g. time, energy) must be optimized.
- The rest of the state description (e.g., height, speed, ...) has finite values.
- H1 and H2 apply.
The name Smart Cruise refers to optimizing any steady-state operation mode ("cruise") and is not restricted to, for instance, just aircraft flights.
Example Applications
| Domain | "Height" dimension | "Energy" dimension | State dependency |
|---|---|---|---|
| Aircraft | Flight level/altitude | Fuel remaining | Lighter aircraft = more efficient |
| UAV | Altitude | Battery charge | Altitude affects efficiency |
| AUV | Depth | Battery charge | Depth affects drag/buoyancy |
| Ground vehicle | Terrain elevation | Fuel/battery | Elevation changes cost energy |
| Ship | Sails | Fuel remaining | Weight affects hull resistance |
Scientific References
The model draws on established principles from various domains:
- Aircraft: The Breguet range equation captures state-dependent fuel consumption
- UAV optimization: Fuel-weight trajectory optimization demonstrates 25% fuel reduction through weight tracking
- Multi-rotor UAV: Energy-aware path planning shows power varies with flight state
- Fuel cell vehicles: Multi-dimensional DP for global energy optimization
- AUV trajectory: Energy-optimal MPC for underwater vehicle path planning
Quickstart
Install Smart Cruise:
$ pip install smart-cruise
Use Smart Cruise in a Python project:
>>> from smart_cruise import CostRandom, Cruise
>>> model = CostRandom(n_d=100, seed=42)
>>> cruise = Cruise(model)
>>> cruise.parameters.pareto_max = 5
>>> cruise.compute()
>>> w, t = cruise.trajectories.get_front()
>>> f"Weight optimal: {w[0]:.2f}, Time optimal: {t[-1]:.2f}"
'Weight optimal: 22979.35, Time optimal: 22734.91'
Credits
This package was created with Cookiecutter and the Package Helper 3 project template.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file smart_cruise-0.1.1.tar.gz.
File metadata
- Download URL: smart_cruise-0.1.1.tar.gz
- Upload date:
- Size: 385.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0417e20274340c7572d9977ba31127ee0c3c20623e1a38e15ff1568f2f37c6c3
|
|
| MD5 |
08276071c571c376b4aa8c71957e0530
|
|
| BLAKE2b-256 |
5f0b9ae30e6113bf17ca12178aed552bd95a0a9fb93fa83ef744e1e44924c296
|
File details
Details for the file smart_cruise-0.1.1-py3-none-any.whl.
File metadata
- Download URL: smart_cruise-0.1.1-py3-none-any.whl
- Upload date:
- Size: 11.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f431e8552aad6a06331dcf317482b2f1ee489463297b6514ed52d05e29addba
|
|
| MD5 |
08dbe5a2c372378e4231914c953dce07
|
|
| BLAKE2b-256 |
a148b49167f42797ce5c8f9370e3d661273b82bc29aeb989f25e6cc03d76b188
|