
Solving a linear optimization problem on incentive allocation - mgrover
https://eng.lyft.com/how-to-solve-a-linear-optimization-problem-on-incentive-allocation-5a8fb5d04db1
======
s_Hogg
It's not the most accessible, but it's pretty interesting. Turning a problem
into its dual has always been a bit of a dark art to me, but this article
makes the benefits of doing so reasonably clear.

~~~
LolWolf
Turning a problem into a dual version is mostly a mechanical thing—you can
immediately write it down in the case of LPs, for example[0], and many other
convex cases [1].

——

[0]
[https://en.m.wikipedia.org/wiki/Dual_linear_program](https://en.m.wikipedia.org/wiki/Dual_linear_program)

[1]
[http://www.seas.ucla.edu/~vandenbe/236C/lectures/conj.pdf](http://www.seas.ucla.edu/~vandenbe/236C/lectures/conj.pdf)
slide 23 on down.

~~~
joker3
The procedure is mechanical, but understanding why it works is quite a bit
harder.

~~~
LolWolf
Oh sure, I agree with that. For more context, I highly recommend chapter 5 in
B&V.[0]

——

[0]
[http://web.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf#page229](http://web.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf#page229)

------
codesushi42
Not very interesting. You see allocation problems solved all of the time in
finance, and this blog post doesn't have anything new.

I also doubt that it's optimal. An implementation using Hierarchical Risk
Parity for instance would be more interesting. I assume you can model
risk/uncertainty here.

By the way, Google has an OR tools framework that implements these kind of
solvers for you:

[https://developers.google.com/optimization](https://developers.google.com/optimization)

~~~
ltbarcly3
I think you are probably right, this does not seem optimal, it doesn't even
seem that they recognized the class of problem that this is? It seems like
they are attempting to use a greedy algorithm on a problem which very
obviously has local extrema.

~~~
codesushi42
_It seems like they are attempting to use a greedy algorithm on a problem
which very obviously has local extrema._

Yep. You'll end up with a lopsided allocation, with one or two allocations
holding a very large percentage of the total allocation.

Distributing the allocation weights could help, e.g. with ensembling,
regularization or some other kind of penalty.

------
ltbarcly3
Isn't this a textbook assignment problem?
[https://en.wikipedia.org/wiki/Assignment_problem](https://en.wikipedia.org/wiki/Assignment_problem)

~~~
jvanderbot
Knapsack version
[https://en.wikipedia.org/wiki/Knapsack_problem#Definition](https://en.wikipedia.org/wiki/Knapsack_problem#Definition)
where "coupons" are items with costs and values.

~~~
chaoxu
yeah, this problem is precisely the multiple-choice knapsack problem.

------
greedyalgo
Since their budget is much larger than each individual incentive, isn't the
greedy solution within epsilon of the optimal assignment? I.e. sort by v/c
descending and take while sum(c) < B.

~~~
bo1024
I thought you were right but actually no, you'd need more assumptions.
Consider this example:

Type A: coupon a1 has cost 1, value 2. coupon a2 has cost 2, value 3.99.

Type B: coupon b1 has cost 1, value 1.

We have 100 people of Type A and 100 people of Type B. The total budget is
200.

The optimal solution is to pick all Type A people, coupon a2, for a value of
399.

Greedy picks all Type A people, coupon a1, and then all Type B people, coupon
b1, for a value of 300.

