aeromaps.models.air_transport.aircraft_fleet_and_operations.fleet.fleet_model¶
fleet_model¶
Module for modeling aircraft fleet composition and renewal over time.
This module provides data structures and models for representing aircraft fleets, including individual aircraft, subcategories (e.g., narrow-body, wide-body), and categories (e.g., short-range, medium-range, long-range). It supports fleet evolution modeling using S-shaped logistic functions for aircraft market share transitions, and computes energy consumption, emissions (NOx, soot), and operating costs based on fleet composition.
The module uses YAML configuration files to define aircraft inventories and fleet structures, allowing flexible customization of fleet scenarios.
AircraftParameters
dataclass
¶
AircraftParameters(entry_into_service_year=None, consumption_evolution=None, nox_evolution=None, soot_evolution=None, doc_non_energy_evolution=None, cruise_altitude=None, hybridization_factor=0.0, ask_year=None, nrc_cost=None, rc_cost=None, oew=None, full_name=None)
Parameters defining an aircraft's characteristics and performance.
Attributes:
| Name | Type | Description |
|---|---|---|
entry_into_service_year |
Optional[float]
|
Year when the aircraft enters service [yr]. |
consumption_evolution |
Optional[float]
|
Relative change in energy consumption compared to reference aircraft [%]. |
nox_evolution |
Optional[float]
|
Relative change in NOx emissions compared to reference aircraft [%]. |
soot_evolution |
Optional[float]
|
Relative change in soot emissions compared to reference aircraft [%]. |
doc_non_energy_evolution |
Optional[float]
|
Relative change in non-energy direct operating costs compared to reference aircraft [%]. |
cruise_altitude |
Optional[float]
|
Typical cruise altitude of the aircraft [m]. |
hybridization_factor |
float
|
Degree of hybridization for hybrid-electric aircraft, from 0 (conventional) to 1 (fully electric) [-]. |
ask_year |
Optional[float]
|
Average number of Available Seat Kilometers produced per aircraft per year [ASK/yr]. |
nrc_cost |
Optional[float]
|
Non-recurring costs (development costs) [€]. |
rc_cost |
Optional[float]
|
Recurring costs (manufacturing cost per unit) [€]. |
oew |
Optional[float]
|
Operational Empty Weight of the aircraft [t]. |
full_name |
Optional[str]
|
Full qualified name including category and subcategory path. |
ReferenceAircraftParameters
dataclass
¶
ReferenceAircraftParameters(energy_per_ask=None, emission_index_nox=None, emission_index_soot=None, doc_non_energy_base=None, entry_into_service_year=None, cruise_altitude=None, hybridization_factor=0.0, ask_year=None, nrc_cost=None, rc_cost=None, oew=None, full_name=None)
Parameters defining a reference aircraft used as baseline for comparisons.
Reference aircraft serve as the baseline against which new aircraft performance improvements are measured. Each subcategory has an "old" and a "recent" reference.
Attributes:
| Name | Type | Description |
|---|---|---|
energy_per_ask |
Optional[float]
|
Energy consumption per Available Seat Kilometer [MJ/ASK]. |
emission_index_nox |
Optional[float]
|
NOx emission index per ASK [kg/ASK]. |
emission_index_soot |
Optional[float]
|
Soot emission index per ASK [kg/ASK]. |
doc_non_energy_base |
Optional[float]
|
Base non-energy direct operating cost per ASK [€/ASK]. |
entry_into_service_year |
Optional[float]
|
Year when the reference aircraft entered service [yr]. |
cruise_altitude |
Optional[float]
|
Typical cruise altitude of the aircraft [m]. |
hybridization_factor |
float
|
Degree of hybridization, from 0 (conventional) to 1 (fully electric) [-]. |
ask_year |
Optional[float]
|
Average number of Available Seat Kilometers produced per aircraft per year [ASK/yr]. |
nrc_cost |
Optional[float]
|
Non-recurring costs (development costs) [€]. |
rc_cost |
Optional[float]
|
Recurring costs (manufacturing cost per unit) [€]. |
oew |
Optional[float]
|
Operational Empty Weight of the aircraft [t]. |
full_name |
Optional[str]
|
Full qualified name including category and subcategory path. |
SubcategoryParameters
dataclass
¶
SubcategoryParameters(share=None)
Parameters for an aircraft subcategory.
Attributes:
| Name | Type | Description |
|---|---|---|
share |
Optional[float]
|
Market share of this subcategory within its parent category [%]. |
CategoryParameters
dataclass
¶
CategoryParameters(life, limit=2)
Parameters for an aircraft category.
Attributes:
| Name | Type | Description |
|---|---|---|
life |
float
|
Average operational lifetime of aircraft in this category [yr]. |
limit |
float
|
Lower threshold for market share below which aircraft share is set to zero [%] (needed for S-curve parametrization). |
Aircraft ¶
Aircraft(name=None, parameters=None, energy_type='DROP_IN_FUEL')
Bases: object
Represents an individual aircraft type in the fleet.
An aircraft belongs to a subcategory and has parameters that define its performance relative to a reference aircraft.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Name identifier for the aircraft type. |
None
|
parameters
|
AircraftParameters
|
Aircraft performance and cost parameters. |
None
|
energy_type
|
Type of energy used: 'DROP_IN_FUEL', 'HYDROGEN', 'ELECTRIC', or 'HYBRID_ELECTRIC'. |
'DROP_IN_FUEL'
|
Attributes:
| Name | Type | Description |
|---|---|---|
name |
str
|
Name identifier for the aircraft type. |
parameters |
AircraftParameters
|
Aircraft performance and cost parameters. |
energy_type |
str
|
Type of energy used by the aircraft. |
Source code in aeromaps/models/air_transport/aircraft_fleet_and_operations/fleet/fleet_model.py
205 206 207 208 209 210 211 212 213 214 215 | |
from_dataframe_row ¶
from_dataframe_row(row)
Populate aircraft attributes from a DataFrame row.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
row
|
DataFrame row containing aircraft data with columns matching AIRCRAFT_COLUMNS. |
required |
Returns:
| Type | Description |
|---|---|
Aircraft
|
Self, with attributes populated from the row data. |
Source code in aeromaps/models/air_transport/aircraft_fleet_and_operations/fleet/fleet_model.py
217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 | |
SubCategory ¶
SubCategory(name=None, parameters=None)
Bases: object
Represents a subcategory of aircraft within a category.
Subcategories group similar aircraft types (e.g., conventional narrow-body, hydrogen narrow-body) within a category. Each subcategory has reference aircraft (old and recent) that serve as baselines for performance comparisons.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
Optional[str]
|
Name identifier for the subcategory. |
None
|
parameters
|
Optional[SubcategoryParameters]
|
Subcategory parameters including market share. |
None
|
Attributes:
| Name | Type | Description |
|---|---|---|
name |
str
|
Name identifier for the subcategory. |
parameters |
SubcategoryParameters
|
Subcategory parameters including market share. |
aircraft |
Dict[int, Aircraft]
|
Dictionary of aircraft belonging to this subcategory. |
old_reference_aircraft |
ReferenceAircraftParameters
|
Parameters for the older reference aircraft baseline. |
recent_reference_aircraft |
ReferenceAircraftParameters
|
Parameters for the more recent reference aircraft baseline. |
Source code in aeromaps/models/air_transport/aircraft_fleet_and_operations/fleet/fleet_model.py
275 276 277 278 279 280 281 282 283 284 | |
add_aircraft ¶
add_aircraft(aircraft)
Add an aircraft to this subcategory.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aircraft
|
Aircraft
|
Aircraft instance to add to the subcategory. |
required |
Source code in aeromaps/models/air_transport/aircraft_fleet_and_operations/fleet/fleet_model.py
286 287 288 289 290 291 292 293 294 | |
remove_aircraft ¶
remove_aircraft(aircraft_name)
Remove an aircraft from this subcategory by name.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aircraft_name
|
str
|
Name of the aircraft to remove. |
required |
Source code in aeromaps/models/air_transport/aircraft_fleet_and_operations/fleet/fleet_model.py
296 297 298 299 300 301 302 303 304 305 306 307 308 309 | |
compute ¶
compute()
Execute compute method on all aircraft in the subcategory.
Source code in aeromaps/models/air_transport/aircraft_fleet_and_operations/fleet/fleet_model.py
311 312 313 314 315 316 | |
Category ¶
Category(name, parameters)
Bases: object
Represents a category of aircraft in the fleet (e.g., Short Range, Medium Range).
Categories group subcategories of aircraft that operate in similar market segments. Each category has parameters defining aircraft lifetime and market share thresholds.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Name identifier for the category (e.g., 'Short Range', 'Medium Range', 'Long Range'). |
required |
parameters
|
CategoryParameters
|
Category parameters including aircraft lifetime. |
required |
Attributes:
| Name | Type | Description |
|---|---|---|
name |
str
|
Name identifier for the category. |
parameters |
CategoryParameters
|
Category parameters including aircraft lifetime. |
subcategories |
Dict[int, SubCategory]
|
Dictionary of subcategories within this category. |
total_shares |
float
|
Sum of all subcategory market shares (should equal 100%). |
Source code in aeromaps/models/air_transport/aircraft_fleet_and_operations/fleet/fleet_model.py
344 345 346 347 348 | |
add_subcategory ¶
add_subcategory(subcategory)
Add a subcategory to this category.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
subcategory
|
SubCategory
|
SubCategory instance to add. |
required |
Source code in aeromaps/models/air_transport/aircraft_fleet_and_operations/fleet/fleet_model.py
356 357 358 359 360 361 362 363 364 | |
remove_subcategory ¶
remove_subcategory(subcategory_name)
Remove a subcategory from this category by name.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
subcategory_name
|
str
|
Name of the subcategory to remove. |
required |
Source code in aeromaps/models/air_transport/aircraft_fleet_and_operations/fleet/fleet_model.py
366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 | |
Fleet ¶
Fleet(parameters=None, aircraft_inventory_path=None, fleet_config_path=None)
Bases: object
Represents the complete aircraft fleet structure.
The Fleet class manages the hierarchical structure of aircraft categories, subcategories, and individual aircraft types. It loads configuration from YAML files and provides methods for fleet manipulation and display.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
parameters
|
External parameters used for reference aircraft calibration (e.g., energy shares). |
None
|
|
aircraft_inventory_path
|
Optional[Path]
|
Path to the YAML file containing the aircraft inventory definitions. Defaults to the package's default aircraft inventory. |
None
|
fleet_config_path
|
Optional[Path]
|
Path to the YAML file containing the fleet structure configuration. Defaults to the package's default fleet configuration. |
None
|
Attributes:
| Name | Type | Description |
|---|---|---|
categories |
Dict[str, Category]
|
Dictionary of aircraft categories indexed by category name. |
parameters |
External parameters for reference aircraft calibration. |
|
aircraft_inventory_path |
Path
|
Path to the aircraft inventory YAML file. |
fleet_config_path |
Path
|
Path to the fleet configuration YAML file. |
all_aircraft_elements |
dict
|
Flattened dictionary of all aircraft elements per category. |
Source code in aeromaps/models/air_transport/aircraft_fleet_and_operations/fleet/fleet_model.py
429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 | |
compute ¶
compute()
Execute compute on all categories in the fleet.
Source code in aeromaps/models/air_transport/aircraft_fleet_and_operations/fleet/fleet_model.py
449 450 451 452 | |
get_all_aircraft_elements ¶
get_all_aircraft_elements()
Retrieve all aircraft elements organized by category.
Creates a flattened view of all aircraft in the fleet, including reference aircraft, with their full qualified names set.
Returns:
| Type | Description |
|---|---|
dict
|
Dictionary mapping category names to lists of aircraft elements (reference aircraft parameters and Aircraft instances). |
Source code in aeromaps/models/air_transport/aircraft_fleet_and_operations/fleet/fleet_model.py
464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 | |
pretty_print ¶
pretty_print(include_aircraft=True, indent=2, display=True, absolute=False, reference='recent')
Return (and optionally print) a summary of the fleet.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
include_aircraft
|
bool
|
Whether to list individual aircraft under each subcategory. |
True
|
indent
|
int
|
Number of spaces used for indentation when printing nested entries. |
2
|
display
|
bool
|
If True, print the generated summary; otherwise only return the string. |
True
|
absolute
|
bool
|
When True, convert aircraft deltas (consumption, DOC, NOx, soot) into absolute values using the selected reference aircraft as the baseline. |
False
|
reference
|
str
|
Which reference aircraft to use for absolute conversions; accepts "recent" (default) or "old". If the requested reference is missing, the method falls back to the other available reference. |
'recent'
|
Source code in aeromaps/models/air_transport/aircraft_fleet_and_operations/fleet/fleet_model.py
503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 | |
FleetModel ¶
FleetModel(name='fleet_model', fleet=None, *args, **kwargs)
Bases: AeroMAPSModel
AeroMAPS model for computing fleet evolution and characteristics over time.
This model computes the temporal evolution of the aircraft fleet composition, including market shares for each aircraft type, energy consumption, emissions (NOx, soot), and non-energy direct operating costs. It uses S-shaped logistic functions to model the gradual introduction and retirement of aircraft types.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
Name of the model instance ('fleet_model' by default). |
'fleet_model'
|
|
fleet
|
Fleet instance containing the fleet structure and aircraft definitions. |
None
|
|
*args
|
Additional positional arguments passed to parent class. |
()
|
|
**kwargs
|
Additional keyword arguments passed to parent class. |
{}
|
Attributes:
| Name | Type | Description |
|---|---|---|
fleet |
Fleet
|
The Fleet instance used for computations. |
Notes
The model computes several categories of outputs stored in self.df:
- Single aircraft shares: Individual aircraft cumulative market penetration
- Aircraft shares: Actual market share for each aircraft type
- Energy consumption: Energy per ASK by subcategory and energy type
- DOC non-energy: Non-energy direct operating costs by subcategory
- Non-CO2 emissions: NOx and soot emission indices by subcategory
- Category means: Weighted averages across subcategories for each category
Source code in aeromaps/models/air_transport/aircraft_fleet_and_operations/fleet/fleet_model.py
1056 1057 1058 | |
compute ¶
compute()
Compute fleet evolution and all derived metrics.
Executes the complete fleet model computation pipeline:
- Single aircraft share computation (cumulative S-curve penetration)
- Aircraft share computation (differential market shares)
- Energy consumption and share by energy type
- Non-energy direct operating costs (DOC)
- Non-CO2 emission indices (NOx, soot)
- Category-level mean energy consumption
- Category-level mean DOC
- Category-level mean emission indices
Returns:
| Type | Description |
|---|---|
ndarray
|
Dummy output array (actual results stored in self.df). |
Source code in aeromaps/models/air_transport/aircraft_fleet_and_operations/fleet/fleet_model.py
1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 | |
plot ¶
plot()
Generate fleet renewal visualization plots.
Creates a 2-row matplotlib figure with one column per category. The top row shows stacked area plots of aircraft shares over time, including old reference, recent reference, and new aircraft types. The bottom row shows the evolution of mean fleet energy consumption.
The plot displays data from prospection_start_year to end_year. Aircraft shares are shown as cumulative (stacked) areas, while energy consumption is shown as a line plot.
Source code in aeromaps/models/air_transport/aircraft_fleet_and_operations/fleet/fleet_model.py
2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 | |