Jos järjestetään resurssista huutokauppa, on mahdollista tarjoajien ylärajoista laskea, kuinka paljon huutokauppa tuottaa, kun kaupattavana on N samanlaista yksikköä. Se tuottaa jokaiselle yksikölle sen verran rahaa, kuin siitä tarvitsee huutaa, eli huutojen suuruusjärjestyksessä huudon numero (N+1) verran. Tästä vähennetään kunkin yksikön tuottamisen marginaalikustannukset.
Tällainen laskentatapa tuottaa joskus huisin epälineaarisia optimaalisia tuotantomääriä (marginaalikustannusten funktiona), varsinkin jos tarjoajien halu tarjota vaihtelee paljon. Mielenkiintoista on myös, että koskaan ei kannata tuottaa kaikille riittävästi (koska silloin kenenkään ei tarvitse tarjota mitään saadakseen tuotteen).
def scarcity_payoff(n, offers, margcost): if n >= len(offers): return 0 return n * (offers[n] - margcost) def optimal_scarcity(offers, margcost): optimal, profit = 0, 0 for n in range(1, len(offers)): prof = scarcity_payoff(n, offers, margcost) if prof > profit: optimal, profit = n, prof return (optimal, profit) def generate_offers(n, base, error): res = [base + error * random.random() for _ in range(n)] res.sort() res.reverse() return res def show_line(offers, margcost): optimal, profit = optimal_scarcity(offers, margcost) print '%.2f %s* %.2f' % (margcost, ' ' * optimal, profit)
Tällaisia tuloksia siitä tulee:
>>> offers = generate_offers(20, 1, 1) >>> for i in range(20): show_line(offers, i/10.) ... 0.00 * 19.47 0.10 * 17.57 0.20 * 15.67 0.30 * 13.77 0.40 * 11.87 0.50 * 9.97 0.60 * 8.07 0.70 * 6.40 0.80 * 5.50 0.90 * 4.60 1.00 * 3.70 1.10 * 2.86 1.20 * 2.36 1.30 * 1.86 1.40 * 1.36 1.50 * 0.86 1.60 * 0.36 1.70 * 0.10 1.80 * 0.00 1.90 * 0.00
* vapaan kilpailun huonoja puolia