Skip to content
High Altitude Long Endurance Aircraft Optimization
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

High-Altitude Long-Endurance Aircraft Trajectory Optimization

This repository contains the code used to generate the results in the paper "Dynamic Optimization of High-Altitude Solar Aircraft Trajectories Under Station-Keeping Constraints". Results from the paper can also be viewed on an online dashboard.

The code produces energy optimal trajectories for solar powered HALE aircraft using the GEKKO Dynamic Optimization Suite.

Optimized Path

Getting Started


The project requires that the following Python libraries be installed in addition to the Anaconda base set.

pip install gekko jsonpickle

If you would like to use the results viewing dashboard locally, you will also need to install Dash.

pip install dash==0.27.0  # The core dash backend
pip install dash-html-components==0.13.2  # HTML components
pip install dash-core-components==0.30.2  # Supercharged components

Solar and atmospheric data is calculated using the SMARTS package. Several example sets of data are included, covering the winter solstice, spring equinox, summer solstice, and fall equinox at 60,000 ft above Albuquerque New Mexico. If you would like to optimize a trajectory for a different location or day, you will need to download the SMARTS executable from NREL. Place the downloaded executable in the PySMARTS folder.

Running the code

Running with the default settings will produce the winter solstice optimization case discussed in the paper. A new time-stamped folder will be generated inside of the Results folder. First a steady state circular orbit will be integrated, and then the optimization will be performed. By default the optimization will be solved on the BYU public GEKKO server, and should take 10-15 hours depending on server load. The optimized trajectory data will be written to a file called opt_results.xlsx, while the steady state circular orbit will be under ss_results.xlsx.


Settings for the optimization, aircraft and mission are stored in a settings object. To change settings, either edit the class file or change the attributes of the instantiated config object.

Viewing Dashboard

To use the browser-based viewing dashboard, run the file after starting an optimization. Refreshing the page will update the displayed results.

Custom Aircraft

The default aircraft used in the optimization is a large flying wing. To use another aircraft, create a new class in the Aircraft folder that inherits the aircraft_template class. Then override the necessary parameters and methods. See the file for an example.

Custom Date/Location

To create a mission with a custom date or location, edit the SolarLocations class in

Built With

  • GEKKO - The dynamic optimization package used to calculate the optimized trajectories.


This project is licensed under the MIT License - see the file for details

You can’t perform that action at this time.