Nathan:

I don't know core.logic's capabilities, and I haven't looked at the kinds of 
constraints you describe in enough detail to say for sure, but my initial 
reaction is that linear/integer programming might be a better fit.

It has been about 5-10 years, but in the past I've had success with relatively 
small to medium scale problems using an open source package called lp_solve for 
such things.  I haven't tried it with more than a few hundred variables and 
constraints to see how well it performs there.

http://sourceforge.net/projects/lpsolve/

Besides SourceForge, it is also available as a MacPorts package called 
lp_solve, or an Ubuntu 12.04 package "lp-solve" (probably Debian and other 
Ubuntu versions, too, but I only checked that one).

Andy


On Oct 24, 2012, at 2:17 PM, nathanmarz wrote:

> Cool, thanks for the quick response. We'll be looking into this pretty
> soon. I ultimately want the logic engine itself being exposed to users
> so they can add their own company-specific constraints to resource
> scheduling – which will be totally badass. If you're interested in
> tracking this, I opened up an issue on Storm: 
> https://github.com/nathanmarz/storm/issues/383
> 
> On Oct 24, 2:07 pm, David Nolen <dnolen.li...@gmail.com> wrote:
>> On Wed, Oct 24, 2012 at 4:56 PM, nathanmarz <nathan.m...@gmail.com> wrote:
>>> I'm looking into rewriting Storm's resource scheduler using
>>> core.logic. I want to be able to say constraints like:
>> 
>>> 1. Topology A's slots should be <= 10 and as close to 10 as possible
>>> (minimize the delta between assigned slots and 10)
>> 
>> The minimization bit is not in core.logic yet. But basically anything in
>> Mozart/OZ's Finite Domain Constraint Programming feature set is on the
>> table for core.logic :)
>> 
>>> 2. All topologies should use less than 200 CPU's and less than 600 GB
>>> of memory
>>> 3. Topology B should run at most 2 workers on each host
>>> 4. Each worker for topology C should run at most one task for
>>> component X and one task for component Y
>>> 5. Should minimize the amount of reassignment to running topologies in
>>> order to satisfy constraints
>>> 6. Should only be allowed to reassign workers for an individual
>>> topology whose individual constraints are satisfied once every 10
>>> minutes
>> 
>> Yep definitely sounds like the kind of thing I'd like core.logic to be used
>> for.
>> 
>>> And so on. I have two questions:
>> 
>>> 1. How good is core.logic at culling the search space using arithmetic
>>> logic? For example, if it knows that x + y <= 5, x>=0, and y>=0, it
>>> should never bother with areas of the search space where x or y are
>>>> =5.
>> 
>> While there's always room to improve it already does this well.
>> 
>>> 2. Can core.logic do things like search the space for which my
>>> evaulation criteria are minimized? Or is what we're trying to do a
>>> better fit for different techniques like linear programming?
>> 
>> It can, but I need to sit down and figure out how to make that work. If I
>> recall the Mozart/OZ work is pretty clear about their approach and I think
>> it can easily be adapted. I'll try to find some time and get back to you on
>> that.
>> 
>> David
> 
> -- 
> 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 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

Reply via email to