Geoffrey,

Thanks for the quick response. 

 

As I’m learning more about my scenario, it feels more like a mixed-integer problem than a combinatorial problem.  The objective function is linear in the decision variables.  I would model the decision variables as the quantities of each item from each vendor.  The conditional offers I could model as a separate vendor/bid, with a binary decision variable for “condition met?” and inequalities to constrain the quantities that depend on the binary variable.   Some of the global constraints can be modeled in the same way, like “at most two vendors.”

It sounds like there are some advantages to using Drools Planner in terms of readability and maintainability of the relationships and constraints – you have the full expressive power of DRL (or Java), and are not limited to inequalities.   That could make it easier to program for new types of rules or constraints later. 

 

Are there any advantages to using Drools Planner from a computational-complexity standpoint as well?  Would it *hurt* to use in terms of CPU/memory, or even learning curve, for a problem that is possibly not combinatorial, and might be solvable with other means?

 

Also – are you aware of any case studies or examples of Drools Planner being used in the purchasing domain like this? 

 

Thanks again!

 

--Bill

 

From: rules-users-bounces@lists.jboss.org [mailto:rules-users-bounces@lists.jboss.org] On Behalf Of Geoffrey De Smet
Sent: Thursday, October 11, 2012 10:35 AM
To: Rules Users List
Subject: Re: [rules-users] Drools Planner for purchasing optimization - good fit for problem?

 

[…]
- If you want to upscale, go Metaheuristics (for example with Planner). If you want to downscale, linear programming might be a better fit. (Compo's like ROADEF 2012 assert this statement).
- LP will require you to write your constraints as mathematical equitations based on arrays and primitives, for example "x < y * 1.21". Planner uses a declarative OO approach using drools rules (or even just plain Java), for example "Invoice ($x < yWithVAT)".
- If you have different conditional price types, you might want to look into using a drools decision table to easily declare that conditional logic - and use that as in Planner. Especially if those rules change often.

 

Thanks for any help you can give.

--Bill




_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users