Code Monkey home page Code Monkey logo

feat's Introduction

Fuel Estimation in Air Transportation (FEAT)

This fork is an implementation attempt (under development) of the FEAT method described in the paper Fuel Estimation in Air Transportation: Modeling global fuel consumption for commercial aviation.

The Jupyter Notebooks and csv files of the original repository have been moved to the folder named paper.

The paper algorithms are coded in Python and built on top of the OpenAP and traffic libraries.

Using FEAT Python Library

Flight profiles can be generated by using the OpenAP trajectory generation facilities.

import matplotlib.pyplot as plt
from feat import FlightProfileGenerator

fpg = FlightProfileGenerator(ac_type="A320")
flight_profiles = fpg.gen_profiles(step=100)
fp_df = flight_profiles.to_df()

fig, ax = plt.subplots(figsize=(15, 7))
for (_, fp) in fp_df.assign(h=fp_df.h / aero.ft, s=fp_df.s / 1e3).groupby("id"):
    fp.plot(x="s", y="h", ax=ax, legend=False)

Screenshot

Once flight profiles are generated, we can estimate thrust, fuel flow and fuel consomption as follows:

from feat import FlightProfiles, FuelEstimator

fe = FuelEstimator(ac_type=ac_type)
flight_profiles = fe(FlightProfiles.from_df(fp_df))
fp_df = flight_profiles.to_df()
 	t 	h 	s 	v 	vs 	seg 	fp 	id 	thr 		ff 		fc 		m
0 	0 	0.0 	0.0 	0.0 	0.00 	None 	TO 	5 	0.000000 	0.000000 	0.000000 	61933.456888
1 	30 	0.0 	0.0 	57.9 	0.00 	TO 	TO 	5 	196847.925718 	2.713689 	81.410655 	61852.046233
2 	60 	0.0 	1737.0 	115.8 	0.00 	TO 	TO 	5 	167342.557563 	2.185533 	146.976654 	61786.480234
3 	90 	0.0 	5211.0 	130.8 	12.59 	IC 	CL 	5 	109309.923013 	1.354792 	187.620401 	61745.836487
4 	120 	377.7 	9135.0 	145.8 	12.59 	IC 	CL 	5 	101653.894487 	1.278205 	225.966546 	61707.490342

Initial take-off weight mass (TOW) is estimated based on the fuel load calculation procedure described in the FEAT paper (Appendix G for details). Please noticed fc column in the dataframe is the cumulative fuel consomption.

Alternatively, flight profiles can be built from ADS-B trajectories contained in a Traffic data structure (see traffic library).

from traffic.core import Traffic
from feat import FlightProfiles

t = Traffic.from_file("data/adsb_sample.parquet")
fp_df = FlightProfiles.from_traffic(t).to_df()
fp_df.head()
 	t 	h 		s 		v 		vs 		fp 	id 
0 	0 	381.000 	0.000000e+00 	88.998812 	13.655040 	CLIMB 	AFR1044_003
1 	1 	393.192 	6.150660e+01 	88.998812 	13.720064 	CLIMB 	AFR1044_003
2 	2 	405.384 	1.230133e+02 	88.998812 	13.785088 	CLIMB 	AFR1044_003
3 	3 	417.576 	1.845200e+02 	88.998812 	13.850112 	CLIMB 	AFR1044_003
4 	4 	429.768 	2.460268e+02 	88.998812 	13.915136 	CLIMB 	AFR1044_003
from feat import FlightProfiles, FuelEstimator

ac_types = ["A332", "E190", "A20N", "A21N", "A319", "A20N", "B772", "B789", "A359"]
fps = FlightProfiles.from_traffic(t)
cumul = []
for ac_type, fp in zip(ac_types, fps):
    fe = FuelEstimator(ac_type=ac_type)
    cumul.append(fe([fp]).to_df())
flight_profiles = FlightProfiles(cumul, len(cumul))
fp_df = flight_profiles.to_df()

fig, axes = plt.subplots(5, 2, figsize=(15, 25))
for ax, (id, fp) in zip(axes.flat, fp_df.groupby("id")):
    fp.query("ff==ff").plot(
        x="t",
        y=["thr", "ff"],
        secondary_y="thr",
        ax=ax,
        legend=False,
    )

Screenshot

Installation

  1. create a conda environment with the traffic library and its dependencies installed in it (see traffic installation instructions).

In the same conda environment:

  1. install OpenAP (version with some bug corrections)
pip install -U git+https://github.com/lbasora/openap.git@bugs
  1. install FEAT
git clone https://github.com/lbasora/feat
cd feat
python setup.py install

Citing FEAT

The algorithms are described in the following paper (see supplementary material Appendix A to K for algorithm details):

@article{seymour_fuel_2020,
	title = {Fuel {Estimation} in {Air} {Transportation}: {Modeling} global fuel consumption for commercial aviation},
	author = {Seymour, K. and Held, M. and Georges, G. and Boulouchos, K.},
	journal = {Transportation Research Part D: Transport and Environment},
	volume = {88},
	year = {2020},
	pages = {102528},
	issn = {13619209},
	doi = {10.1016/j.trd.2020.102528},
}

feat's People

Contributors

kwdseymour avatar lbasora avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.