def buy_ticket():
if soldout:
return False def buy_ticket():
if soldout:
return Falseif (globalservices) {
yourescrewed=0;
upgradeprobability=0.25f;
bumpprobability=0.0f;
} else if (united1k) { yourescrewed=1;
upgradeprobability=0.10f;
bumpprobability=0.01f;
} else if (unitedplatinum) { yourescrewed=1;
upgradeprobability=0.05f;
bumpprobability=0.05f*(1-premiumeconomy*0.5);
} else if (unitedgold) { yourescrewed=1;
upgradeprobability=0.001f;
bumpprobability=0.10f*(1-premiumeconomy*0.5);
} else if (unitedsilver) { yourescrewed=2;
upgradeprobability=0.000001f;
bumpprobability=0.10f;
} else if (any_other_schmuck) { yourescrewed=NaN;
go_f_yourself=1*(united_basic_economy);
assault_probability=0.01f;
upgradeprobability=0.0f;
bumpprobability=0.20f;
baggage_fees=1;
}Also I would say a GS upgrade probability is closer to 0.9f. 1K can be anywhere from 0.1f to 0.8f depending on the routes flown (a consultant flying hub-to-hub around beginning / end of week will be 0.1f; me flying leisure routes mid-week will be 0.8f).
Since jet fuel airplanes are probably the most expensive form of travel that's 2nd only to space tourism flights on liquid oxygen rockets, it would be an irresponsible waste of energy.
To be clear about the specific problem we're trying to solve, it's the involuntary bumping instead of the voluntary ones.
Why is using "empty seats" the superior solution instead of raising the financial incentives to attract volunteers to be bumped?
I travel 90% of the year and there is no reasonable financial incentive (especially if they are just flight vouchers) they could offer that would make me volunteer my seat. If I'm travelling, it's for business and I have no desire to be late. If it's travelling back home, I want to see my family and I'm not going to miss that flight if I don't have to. On busy commuter flights, I would imagine most passengers share my sentiment. This would ultimately lead us into a situation where someone is randomly removed from the aircraft against their will.
Furthermore, being offered flight vouchers to give up your seat is really stupid on commuter flights. Pretty much every person on those flights has more miles than they know what to do with. Offer cash instead.
The moment an airline attendant announces an oversold situation, that announcement kicks off a frantic battle between dopey consumer game theory calculus on the one hand, and rigid airline offer-escalation procedure on the other. This slow, maddeningly predictable war of attrition often results in delays of 45 minutes or more. Those delays cascade into further delays when the flight misses its departure window.
We have a "not enough dopes" problem. There need to be more people willing to take buyouts, and since that's not happening, we can consider pretty much any alternative solutions that make sense.
I'm a 2-million-miles frequent flyer on American Airlines and I've never seen voucher auctions require 45 minutes. Usually it takes less than 5 minutes. Often, the gate agents run the auction in the lounge which doesn't add any delay to the plane pushing away from the gate.
>We have a "not enough dopes" problem. There need to be more people willing to take buyouts, and since that's not happening,
Is the goal to have zero involuntary bumps? Because 40,000 involuntary bumps out of 660,000,000[1] seems like there are "enough dopes" on virtually every plane.
[1] https://www.dallasnews.com/business/airlines/2017/03/20/hold...
I guarantee there will be enough takers. The issue is, even though the cost of overbooking is already factored into the cost of the flight, the airline is still trying to eek out extra dollars by offering less than the cost (vouchers, starting with lowball offers, etc).
Don't get me wrong; I'd love if they simply cut to the chase. But airlines are not in the business of customer service, as is often painfully obvious. They seem to take their business practices from the Ferengi Rules of Acquisition. (In particular, the dictum, "Once you've got their money, never give it back.")
But the point is that it's a market. Pretty much always there will be a price at which someone is willing to give up their seats for whatever incentive. The overall system with overbooking, voluntary bumps, and the occasional involuntary bump is overall much more efficient.
Of course, the real issue is a monetary one for the airlines because standby tickets have to be discounted. But as a customer, I still advocate against overbooking.
If you're open to using financial incentives like cheaper pre-arranged "standby" flights, why is that better than auctioning cash/vouchers to willing passengers volunteering to be bumped?
The problem with your proposal is that all the passengers are forever sorted into "guaranteed" and "standby" according to first-come-first-served:
|timeline of bookings -->-->
|-- guaranteed --|--- standby --|
However, order-by-reservation-timing does not reflect the true priorities of the passengers on the day of the flight. Many of (possibly most) of the passengers that bought the earlier "guaranteed seats" happen to be the ones most willing to accept financial compensation for bumping.In terms of game theory and fairness, calculated overbooking based on stable historical trends seems to be the most optimal strategy that benefits the most people. The real issue is that the airlines implement the compensation incorrectly. Instead of blaming the overbooking, blame the airlines' compensation rules:
1) offer cash instead of vouchers
2) eliminate silly rules about caps
3) start the auction process as early as possible in the lounge area instead of waiting until the last minute by standing in the aisle of the plane with a bunch of impatient passengers. (With American Airlines, their check-in kiosks will sometimes alert passengers and give them the option of being voluntarily bumped.)
addEventListener("beforeboarding", function() {
if(booked > capacity) {
let price = ticket.faceValue;
let ticketsToBuy = booked - capacity;
while (ticketsToBuy > 0) {
if (offerToBuyBackTicket(price)) {
ticketsToBuy--;
} else {
price++;
}
//if (price > limit) {
// callInPinkertonThugs();
// return;
//}
}
}
}