Op 11-10-12 16:19, Schneider, Bill schreef:

I'm trying to understand whether Drools Planner is a good fit for a purchasing optimization problem.

 

The problem is something like this: there are X different items, each of which can be purchased from Y different vendors at different prices.  The objective variable/function to minimize is the total amount purchased (sum(qty_i * price_i)).

 

Some vendor prices are conditional - only valid if you purchase more than some minimum threshold, or if you purchase more than some total quantity from that vendor.  There are some additional constraints like dual-sourcing

- for some item x_i, exactly two vendors must be selected. 

 

I feel like you *could* probably solve this problem in Drools Planner,

Yes

but I'm not sure if it's the best way, or if a more traditional solver approach would be better.  It feels more like a linear programming problem at its core, and I'm having a hard time figuring out where the boundary is - what kind of constraint would make the problem "non-convex" or "non-smooth" to the point where a local search (tabu, evolutionary etc.) is required?

That's hard to tell from this distance.

- 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