<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<br>
<div class="moz-cite-prefix">Op 11-10-12 21:34, Schneider, Bill
schreef:<br>
</div>
<blockquote
cite="mid:A9819FDC37D3CD458CCCAD1BCAE3DB14400B2957@DC-MBOX2.advisory.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<meta name="Generator" content="Microsoft Word 14 (filtered
medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        color:black;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri","sans-serif";}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle22
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">Geoffrey, <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Thanks for the
quick response. <o:p>
</o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">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. <br>
</span></p>
</div>
</blockquote>
This might be the biggest hurdle in Planner. A variable that
represents a quantity, for which is it's unrealistic to make a pool
of all values is currently difficult (but not impossible) in
Planner. Future work will improve support for this - but currently
you 'll likely need to implement custom moves (see manual).<br>
<blockquote
cite="mid:A9819FDC37D3CD458CCCAD1BCAE3DB14400B2957@DC-MBOX2.advisory.com"
type="cite">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D"> 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.”<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">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.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Are there any
advantages to using Drools Planner from a
computational-complexity standpoint as well? Would it *<b>hurt</b>*
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?</span></p>
</div>
</blockquote>
In my experience, if it scales beyond 10 000 values (= bids) and 10
000 purchases, LP and MIP's memory requirements are impossible today
and metaheuristics are the only way.<br>
See Google roadef 2012 competition:
<a class="moz-txt-link-freetext" href="http://blog.athico.com/2012/06/roadef-2012-first-results-for-dataset-b.html">http://blog.athico.com/2012/06/roadef-2012-first-results-for-dataset-b.html</a><br>
And that's even without scaling out the number of constraints (=
score rules).<br>
<blockquote
cite="mid:A9819FDC37D3CD458CCCAD1BCAE3DB14400B2957@DC-MBOX2.advisory.com"
type="cite">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Also – are you
aware of any case studies or examples of Drools Planner
being used in the purchasing domain like this?
</span></p>
</div>
</blockquote>
Not in the purchasing domain - I suspect the quantity complexity is
hindering adoption in that area currently.<br>
<blockquote
cite="mid:A9819FDC37D3CD458CCCAD1BCAE3DB14400B2957@DC-MBOX2.advisory.com"
type="cite">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Thanks again!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">--Bill<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF
1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext">From:</span></b><span
style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext">
<a class="moz-txt-link-abbreviated" href="mailto:rules-users-bounces@lists.jboss.org">rules-users-bounces@lists.jboss.org</a>
[<a class="moz-txt-link-freetext" href="mailto:rules-users-bounces@lists.jboss.org">mailto:rules-users-bounces@lists.jboss.org</a>]
<b>On Behalf Of </b>Geoffrey De Smet<br>
<b>Sent:</b> Thursday, October 11, 2012 10:35 AM<br>
<b>To:</b> Rules Users List<br>
<b>Subject:</b> Re: [rules-users] Drools Planner for
purchasing optimization - good fit for problem?<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span
style="font-size:12.0pt;font-family:"Times New
Roman","serif";color:#1F497D">[…]</span><span
style="font-size:12.0pt;font-family:"Times New
Roman","serif""><br>
- 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).<br>
- 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)".<br>
- 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.<br>
<br>
<o:p></o:p></span></p>
<p class="MsoPlainText"> <o:p></o:p></p>
<p class="MsoPlainText">Thanks for any help you can give.<o:p></o:p></p>
<p class="MsoPlainText">--Bill<o:p></o:p></p>
<p class="MsoNormal"><span
style="font-size:12.0pt;font-family:"Times New
Roman","serif""><br>
<br>
<br>
<o:p></o:p></span></p>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>rules-users mailing list<o:p></o:p></pre>
<pre><a moz-do-not-send="true" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><o:p></o:p></pre>
<pre><a moz-do-not-send="true" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a><o:p></o:p></pre>
<p class="MsoNormal"><span
style="font-size:12.0pt;font-family:"Times New
Roman","serif""><o:p> </o:p></span></p>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
rules-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a>
</pre>
</blockquote>
<br>
</body>
</html>