On Thu, Mar 6, 2014 at 4:56 AM, Laurens Van Houtven <_...@lvh.cc> wrote:

> Hm. I realize we're unlikely to change the nature of the problem, but
> would it help if we limit the search space? For example, if we only care
> about grants in increments of $50 or $100? Instead of working with dollars,
> working with grant "tokens" each worth $50 or $100 or so?
>
>
Not really.  Let's do a little back-of-the-napkin estimate.
Let's say you have 3000 attendees, each of whom can be granted $0, $50,
$100, $150, ..., or $500. (That's 30,000 possible $50 "bins" to put money
in).  Then let's say that you have $20,000 of funds to parcel out in
increments of $50 (a total of 4000 parcels to give out).  So the number of
possible ways to divvy this up is 30,000 take 4000 which is nearly 10^5114
possibilities.

Clearly that's intractable even with $50 buckets.

I apologize for getting your hopes up about Loco as a tool for this
problem.  I've been using it a lot lately, and when I saw you describe your
problem, and saw David Nolen suggest JaCoP for consideration, I immediately
thought, "Oh, I know how to model that in Loco."  And yes, I did know how
to model it, but I just didn't properly think through the ramifications of
whether it would work for the size problem you're talking about.  With
further thought, I don't think any constraint solver would be able to
tackle this.

LP solvers exploit the linearity of the math constraints and the lack of
any need for the result to be an integer in order to much more rapidly
converge on a solution.

Local search exploits the fact that you don't really care to prove that you
have the optimal solution, you just need to find a solution that's really
good.  So, for example, you would start by divvying up the money in a
greedy way, and then randomly shift around money looking for ways to
improve the situation, occasionally taking a suboptimal choice in order to
avoid getting stuck in a local optimum.

Honestly, I do think that the greedy approach, based on the linear model we
discussed at the beginning, will give you a good, practical solution that's
close enough to optimal to be worthwhile.

--Mark

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to