On overbooking, this is a solved problem: hold an auction where the max payoff is the risk in dollars X, distributed amongst Y passengers (the number of seats you need to free up). Start at some low anchor point ("$300 to get off the plane") and increment up until you have takers. If the total value exceeds X, write it off - you messed up.
I believe other airlines implement this in some capacity.