Hi Geoffrey,<div><br></div><div>Thanks for your opinion. I will try to implement what I call a <span style="color:rgb(51,51,51);font-family:&#39;Lucida Grande&#39;,Geneva,Verdana,Arial,sans-serif;font-size:12px;line-height:18px;text-align:justify">HardAndSoftPriorityScoreDefini</span><span style="color:rgb(51,51,51);font-family:&#39;Lucida Grande&#39;,Geneva,Verdana,Arial,sans-serif;font-size:12px;line-height:18px;text-align:justify">tion and give it back to the community. Where is the best place to post a &#39;patch&#39; ?</span><br>
<br><div class="gmail_quote">2011/12/19 Geoffrey De Smet <span dir="ltr">&lt;<a href="mailto:ge0ffrey.spam@gmail.com">ge0ffrey.spam@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<u></u>

  
    
  
  <div text="#000000" bgcolor="#ffffff">
    <br>
    <br>
    Op 14-12-11 18:40, Patrik Dufresne schreef:
    <blockquote type="cite">
      <div style="text-align:justify">
        <div>
          <div>
            <div style="font-size:12px;line-height:18px"><font color="#333333" face="&#39;Lucida Grande&#39;, Geneva, Verdana,
                Arial, sans-serif">
                <div>Hi,</div>
                <div><br>
                </div>
                <div>I&#39;m still in process to model my planning problem
                  and I have some difficulties in defining the correct
                  weight of soft constraints. I have soft constraints
                  with different priorities : C1, C2, C3, ..., Cn where
                  C1 are higher then C2. Currently, I&#39;ve tried to set
                  different weight for each of them : C1 get higher
                  weight. But it&#39;s not sufficient since multiple C2 may
                  balance one C1. What I really need is to set the
                  priority to every soft constraints.</div>
                <div><br>
                </div>
                <div>Solution #1 :</div>
                <div>My first thought it to implement a new score
                  definition (HardAndSoftPriorityScoreDefinition) having
                  separate soft score for each priority. The rule may
                  insert ConstraintOccurence by defining the weight and
                  the priority. This solution seems elegant but require
                  effort to implement the score definition, the score
                  calculation, and other things I don&#39;t even know about.</div>
              </font></div>
          </div>
        </div>
      </div>
    </blockquote>
    That is the perfect solution to your problem. Start by copy pasting
    <font><font color="#333333" face="&#39;Lucida Grande&#39;, Geneva, Verdana,
        Arial, sans-serif">DefaultHardAndSoftScoreDefinition and work
        your way from there.<br>
        You&#39;ll need to create at least a ScoreDefinition,
        ScoreCalculator and Score.<br>
        <br>
        I&#39;ve been thinking about adding such a &quot;dynamic&quot; score
        definition to planner&#39;s build-in scores,<br>
        but so far every use case where the developers said they needed
        this, it turned out end-users meant it differently:<br>
        when you break a 100 C2&#39;s, then it&#39;s better to break 1 C1
        instead...<br>
      </font></font>
    <blockquote type="cite">
      <div style="text-align:justify">
        <div>
          <div>
            <div style="font-size:12px;line-height:18px"><font color="#333333" face="&#39;Lucida Grande&#39;, Geneva, Verdana,
                Arial, sans-serif">
                <div><br>
                </div>
                <div>Solution #2 :</div>
                <div>The other solution is stated in the Drools Planner
                  User Guide : </div>
              </font></div>
          </div>
        </div>
      </div>
      <blockquote style="margin:0pt 0pt 0pt 40px;border:medium none;padding:0px">
        <div style="text-align:justify">
          <div>
            <div>
              <div style="font-size:12px;line-height:18px"><font color="#333333" face="&#39;Lucida Grande&#39;, Geneva,
                  Verdana, Arial, sans-serif">
                  <div>&quot;Most use cases will also weigh their constraints
                    differently, by multiplying the count of each score
                    rule with its weight. For example in freight
                    routing, you can make 5 broken &quot;avoid crossroads&quot;
                    soft constraints count as much as 1 broken &quot;avoid
                    highways at rush hour&quot; soft constraint. This allows
                    your business analysts to easily tweak the score
                    function as they see fit.&quot;</div>
                </font></div>
            </div>
          </div>
        </div>
      </blockquote>
      <div style="text-align:justify">
        <div>
          <div>
            <div><font color="#333333" face="&#39;Lucida Grande&#39;, Geneva,
                Verdana, Arial, sans-serif">
                <div style="font-size:12px;line-height:18px">
                  Even tough I don&#39;t know how to implement this, it&#39;s
                  seems much easier to achieve since it&#39;s only a rule.
                  Compare to solution #1, it&#39;s lack the support of soft
                  constraints with same priority but different weights.</div>
              </font></div>
          </div>
        </div>
      </div>
    </blockquote>
    That text describes plain-old weighting. Say C1 weights 100 and C2
    weights 2, then you can break 50 C2&#39;s for every 1 broken C1.<br>
    <br>
    This is far easier and most of the time end-users actually mean
    this.<br>
    Make exaggerated examples (1000 C2&#39;s broken vs 1 C1 broken) and make
    your end-users decide what they prefer. If they still prefer 1000
    C2&#39;s broken, then you need #1.<br>
    <br>
    Tip: Sometimes, taking the square of a weight is a neat trick.<br>
    In bin packing, say you got<br>
    Solution A with 3 CPU and 3 CPU too little = 3² + 3² = 18<br>
    and Solution B with 4 CPU and 2 CPU too little = 4² + 2² = 20<br>
    So the second is worse even though they both miss 6 CPU.<br>
    <br>
    <blockquote type="cite">
      <div style="text-align:justify">
        <div>
          <div>
            <div><font color="#333333" face="&#39;Lucida Grande&#39;, Geneva,
                Verdana, Arial, sans-serif">
                <div style="font-size:12px;line-height:18px"><br>
                </div>
                <div style="font-size:12px;line-height:18px">What is
                  your opinion about both solution.</div>
                <div style="font-size:12px;line-height:18px"><br>
                </div>
                <div style="font-size:12px;line-height:18px">
                  Is one faster then the other ? </div>
                <div style="font-size:12px;line-height:18px"><br>
                </div>
                <div><span style="font-size:12px;line-height:18px">Is
                    it hard to create a new score definition ?</span></div>
                <div><span style="font-size:12px;line-height:18px"><br>
                  </span></div>
                <div><span style="font-size:12px;line-height:18px">Did
                    anyone ever did this ? </span></div><span class="HOEnZb"><font color="#888888">
                <div style="font-size:12px;line-height:18px"><br>
                </div>
              </font></span></font></div><span class="HOEnZb"><font color="#888888">
          </font></span></div><span class="HOEnZb"><font color="#888888">
        </font></span></div><span class="HOEnZb"><font color="#888888">
      </font></span></div><span class="HOEnZb"><font color="#888888">
      -- <br>
      Patrik Dufresne<br>
      <pre><fieldset></fieldset>
_______________________________________________
rules-users mailing list
<a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a>
</pre>
    </font></span></blockquote><span class="HOEnZb"><font color="#888888">
    <br>
    <pre cols="72">-- 
With kind regards,
Geoffrey De Smet</pre>
  </font></span></div>

<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Patrik Dufresne<br>
</div>