This aircraft EPS controller implementation accompanies the following paper:
Mehdi Maasoumy, Pierluigi Nuzzo, Forrest Iandola, Maryam Kamgarpour,
Alberto Sangiovanni-Vincentelli and Claire Tomlin.
"Optimal Load Management System for Aircraft Electric Power Distribution."
IEEE Conference on Decision and Control (CDC), 2013.
Huy Vo also contributed to our controller and its implementation.
To run an aircraft power simulation using our controller, experiment with the following on the Matlab prompt:
...install cplex and yalmip... (TODO: give a list of dependencies)
By default, runAirplane.m uses plotGraphs.m to produce several graphs, which summarize workloads, power provided by each generator/APU, and battery usage.
To change workload data, use load1, load2, load3, or load4 near the beginning of runAirplane.m.
Ideally, these workloads are similar to what you'd find in a commercial aircraft.
As you can see, the workload varies throughout the flight -- avionics systems, cabin lights, and coffee makers may or may not be at their peak power draw at any given time in the flight.
Aircraft Power Workloads
To introduce generator failures, modify getGeneratorStatus.m.
The function takes an input time and returns a 3 element binary vector representing the generator's status at that moment in time. The format is as follows:
[LeftGenerator RightGenerator APU].
A 1 indicates healthy while a 0 indicates failure.
runAirplane(1) %use hierarchical controller
runAirplane(0) %use simple low-level controller
runAirplane %default to hierarchical controller