A runtime assurance system (RTA) for a given plant enables the exercise of an
untrusted or experimental controller while assuring safety with a backup (or
safety) controller. The relevant computational design problem is to create a
logic that assures safety by switching to the safety controller as needed,
while maximizing some performance criteria, such as the utilization of the
untrusted controller. Existing RTA design strategies are well-known to be
overly conservative and, in principle, can lead to safety violations. In this
paper, we formulate the optimal RTA design problem and present a new approach
for solving it. Our approach relies on reward shaping and reinforcement
learning. It can guarantee safety and leverage machine learning technologies
for scalability. We have implemented this algorithm and present experimental
results comparing our approach with state-of-the-art reachability and
simulation-based RTA approaches in a number of scenarios using aircraft models
in 3D space with complex safety requirements. Our approach can guarantee safety
while increasing utilization of the experimental controller over existing
approaches