1
Computer-aided mechanism design
Ye Fang, Swarat Chaudhuri, Moshe Vardi
2
$150$100$200
$130$175
$210 $225 $140 $150 $150Private info:
Winner = …Price = …
A B C D E
Utility function = value -price
3
First-Price Auction
Rule:• Winner highest bidder• Payment highest bid
How much will you bid based on this rule?• Try to maximize my profit.
• If I am the bidder, I will UNDERBID!
4
First-Price Auction
If everyone thinks like me:• Payment EQUALS highest bid• Highest bid LESS THAN true value• Profit LESS THAN highest true value
5
Second-Price Auction
Rule:• Winner highest bidder• Payment second highest bid
How will you bid under this rule?
6
brest = highest bid of rest bidders
winning regionbmy > brest
lose regionbmy < brest
If the camera worth $200 to me, profit = ($200 – Price) or 0.
$200 >= brest , bid $200
$200 < brest , bid $200
7
Second-Price Auction
Bidding truthfully is the best strategy.
8
Rules & Behaviors
First-Price – Bidders bid lower than how much they think the
camera worth to them
Second-Price – Bidders’ bids equal to how much they think the
camera worth to them
9
Decision making mechanismOnline Auction System
Voting SystemReputation System
……
10
What is common?
Multi-agents • private information• conflicting preferences
The decision-making entity• aiming to achieve a desirable outcome – In auction, reveal bidders private information or try
to maximize the seller’s profit – In public resource auction, achieve efficient
allocation of resources.
11
How to achieve desirable outcome?
Decision maker has no control over their behaviors.Agents are self-interested. Answer:• Design mechanisms • Agents are better to behave “nicely”• Deter liars, cheaters
12
If given rules, we can choose one by finding the best strategy of each player.
Second-Price Auction:1) truth-telling2) efficient allocation
But, what if you are not given a rule, and you want the players to behave in certain way?
easy!
13
How to formalize this problem?
Outcome PropertySystem Setting
Mechanism
Magic Box
Agent model rule
procedure
14
Our Solution
Outcome PropertySystem Setting
Mechanism
Our System
Agent model rule
procedureLanguage
Synthesis Compiler
15
Our SolutionLanguage • to encode the setting • to encode the propertySynthesis Program • reduce to the program to a first order logic
formula• use SMT solver to search for missing
implementations
16
$150$100$200
$130$175
$210 $225 $140 $150 $150Private info:
Winner = …Price = …
A B C D E
Utility function = value -price
17
Model
Truth-tellingAuction Setting
Mechanism
Our System
Agent model rule
procedure
• bid• Private value• Utility function
• How the auction is conducted
• Partial
rule
• Complete
18
Agent Model
Class Agent {real bidreal valuefunction utility(result){
If(bid = winningbid) { ut = value – price }
else { ut = 0 }return ut
}
19
Mechanism
function Rule(real[] B){real winningbid = ??real price = ??return (winningbid, price)
}
20
When auction starts
main (){Agent a_1 = new Agent(“1”)Agent a_2 = new Agent(“2”)Agent a_3 = new Agent(“3”)real[] B = [a_1.b, a_2.b, a_3.b]
return result = Rule(B);}
21
Specify the Desired Behaviormain (){
…real[] B = [a_1.b, a_2.b, a_3.b]
return result = Rule(B);
@assert: forall a_i, Let B’ = swap(B, i, v[i])
a_i.ut(result) <= a_i.ut(Rule(B’))}
Bidding truthfully always yields more profit!
22
How to replace the question mark?
function Rule(real[] B){real winningbid = ??real price = ??return (winningbid, price)
}
23
Sort inputs first
@assume: sorted(B)function Rule(real[] B){
real winningbid = ??real price = ??return (winningbid, price)
}
24
Linear Function
@assume: sorted(B)function Rule(real[] B){
real winningbid = ? * B[0] + … + ? * B[B.size-1]
real price = ? * B[0] + … + ? * B[B.size-1]
return (winningbid, price)}
25
Put together
@assume: sorted(B)function Rule(real[] B){ real winningbid = …
real price = …return
(winningbid, price)}
main(){…
return result = Rule(B);@assert: forall a_i,
Let B’ = …a_i.ut(result)
<= a_i.ut(Rule(B’)) }
26
27
An Easier Problem
Find an implementation of Foo: @assume: x < y Foo(int x, int y){
x = ? * x y = ? * y } @assert: x > y
28
Replace ? with identifiers
@assume: x < y Foo(int x, int y){
x = c0 * x y = c1 * y } @assert: x > y
29
Weakest Precondition
@assume: x < yFoo(int x, int y){
x/c0 > y/c1s0: x = c0* xx>y/c1
s1: y = c1* yx>y }
@assert: x > y
x<y
x/c0<y/c1
30
Generated Fornula
@assume: x < yFoo(int x, int y){
x/c0 > y/c1s0: x = c0* xx>y/c1
s1: y = c1* yx>y }
@assert: x > y
Exists (c0, c1), ForAll(x, y),(x < y) implies (x/c0 > y/c1)
31
Solve Generated Formula
Exsits(c0, c1), ForAll(x, y), (x < y) implies (x/c0 > y/c1)
SMT Solver(Satisfiability Modulo Theories)
values for c0, c1
32
33
Original Problem
@assume: sorted(B)function Rule(real[] B){ real winningbid = …
real price = …return
(winningbid, price)}
main(){…
return result = Rule(B);@assert: forall a_i,
Let B’ = …a_i.ut(result)
>= a_i.ut(Rule(B’)) }
34
Replace ? with Identifiers
@assume: sorted(B)function Rule(real[] B){
real winningbid = c[0] * B[0] + … + c[B.size-1] * B[B.size-1]
real price = d[0] * B[0] + … + d[B.size-1] * B[B.size-1]
return (winningbid, price)}
35
Original Problem @assume: sorted(B)function Rule(real[] B){
real winningbid = c[0] * B[0] + … + c[B.size-1] * B[B.size-1]
real price = d[0] * B[0] + … + d[B.size-1] * B[B.size-1]
return (winningbid, price)}@assert: forall a_i,
Let B’ = swap(B, I, v[i])a_i.ut(result) >= a_i.ut(Rule(B’))
36
Generated Formula
Compute weakest precondition given assertion• f(c[0], …, c[B.size-1], d[0], …, d[B.size-1])
Formula to solve:• Exists(C, D), ForAll(B), sorted(B) implies f(C, D)
37
Solve Generated Formula
• Exists(C, D), ForAll(B), sorted(B) implies f(C, D)
SMT Solver(Satisfiability Modulo Theories)
values for c[0], …, c[B.size-1], d[0], …, d[B.size-1]
38
Our Contribution
Outcome PropertySystem Setting
Mechanism
Our System
Agent model rule
procedureLanguage
Synthesis Compiler
39
What we have achieved?We reconstructed a set of classical mechanisms• single-item auction• Google online ads auction New mechanisms • multistage auction• result in new propertiesVoting System• no absolute fair mechanism
40
Future Work
Extend to model with arbitrarily large number of agents.
Enrich the kind of mechanism functions that can be handled.
Explore more complicated real-life preference aggregation systems.