<div dir="ltr">I changed the palnning variable to workorder since engineer woul never (most of them) change from 8h/day, so I transformed WorkOrder into planning entity, i no longer get heap space anymore, but 1 engineer receives every workorder.<div>
<br></div><div>---------------</div><div><div>13:54:12.785 [main] INFO ... -     ... (249), score (null), new best score (null), random seed (0).</div><div>13:54:12.850 [main] DEBUG ... -     ... spend (318), score (0hard/0soft), initialized planning entity ([WorkOrder-7]).</div>
<div>13:54:12.851 [main] DEBUG ... -     ... spend (320), score (0hard/0soft), initialized planning entity ([WorkOrder-9]).</div><div>13:54:12.852 [main] DEBUG ... -     ... spend (321), score (0hard/0soft), initialized planning entity ([WorkOrder-8]).</div>
<div>13:54:12.853 [main] DEBUG ... -     ... spend (322), score (0hard/0soft), initialized planning entity ([WorkOrder-6]).</div><div>13:54:12.853 [main] INFO     ... -     ...  ended: step total (4), time spend (322), best score (0hard/0soft).</div>
<div>13:54:13.074 [main] DEBUG ... -     ... move count (1000/1000) for picked step ([WorkOrder-7] =&gt; [Engineer-5]).</div><div>13:54:13.395 [main] DEBUG ... -     ... move count (1000/1926) for picked step ([WorkOrder-8] =&gt; [Engineer-3]).</div>
<div>13:54:13.783 [main] DEBUG ... -     ... move count (1000/3686) for picked step ([WorkOrder-6] =&gt; [Engineer-2]).</div><div>13:54:14.263 [main] DEBUG ... -     ... move count (1000/7516) for picked step ([WorkOrder-9] =&gt; [Engineer-2]).</div>
<div>13:55:05.169 [main] DEBUG ... -     ... move count (0/3094018) for picked step ([WorkOrder-6] =&gt; [Engineer-5]).</div><div>13:55:05.169 [main] INFO     ... -     ... Phase localSearch ended: step total (5), time spend (52638), best score (0hard/0soft).</div>
<div>13:55:05.169 [main] INFO     ... -     ... (52638), best score (0hard/0soft), average calculate count per second (59047).</div><div><br></div><div>Solved distribution with 4 work orders and 5 engineers:</div><div>  Work Order 1 : Engineer Aladin</div>
<div>  Work Order 2 : Engineer Aladin</div><div>  Work Order 3 : Engineer Aladin</div><div>  Work Order 4 : Engineer Aladin</div></div><div>------------</div><div><br></div><div style>as you can see, i guess, at the debug the sorting is made correctly, but when displaying it is not being showed right, I also added this to my xml config:</div>
<div style><br></div><div style><div>&lt;termination&gt;&quot;</div><div>    &lt;maximumSecondsSpend&gt;20&lt;/maximumSecondsSpend&gt;</div><div>&lt;/termination&gt;</div><div><br></div><div>-------------</div><div><br></div>
<div style>now i&#39;m trying to figure the result why is it not being displayed right.</div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/1/29 André Fróes <span dir="ltr">&lt;<a href="mailto:arfmoraes@gmail.com" target="_blank">arfmoraes@gmail.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I didn&#39;t find about it there. But I still have to find the fail in my project, i put 1 workorder and 1 engineer and i&#39;m still getting heapspace. Since i&#39;m taking base on cloudcomputer example, this is looking very odd, when running the 400/1200 computer/process, it did it without any problem. Checking here the VisualVM, i noticed also that it is kept to, relatively, low usage of memory, that&#39;s why i&#39;m lost here, even if this did use the base memory of planner init (don&#39;t really know if this is right, is just a guess that planner requires a memory to init), to maintain the planner running in my problematics shouldn&#39;t take that amount of memory if compared to the example.
</div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">2013/1/29 Geoffrey De Smet <span dir="ltr">&lt;<a href="mailto:ge0ffrey.spam@gmail.com" target="_blank">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">

  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    So loading your dataset costs you 1400 MB already, before doing
    anything with Planner?<br>
    Starting from that, the space that Planner uses on top of that,
    looks relatively normal.<br>
    <br>
    I had a similar case a couple of months ago on machinereassignment
    and posted about in on G+:<br>
      <a href="https://plus.google.com/112811208792575157490" target="_blank">https://plus.google.com/112811208792575157490</a> (maybe you find it
    in the archive)<br>
    My domain model was taking far more space than needed.<br>
    After loading the dataset (before calling planner), do a memory heap
    profile with VisualVM.<br>
    <br>
    <br>
    <div>Op 29-01-13 13:16, André Fróes schreef:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">i&#39;ve set the xmx  even to 1024m and still heap
        space. Enabling the VisualVM, I couldn&#39;t get my main method to
        be displayed there, it just doesn&#39;t show up there at visualvm
        local, but I can see the graphic increasing significantly.
        Here&#39;s how it is before and after i run the main method:
        <div>
          <br>
        </div>
        <div>Before start:</div>
        <div><br>
        </div>
        <div class="gmail_extra"><img src="cid:part1.09090508.07060708@gmail.com" alt="Imagem
            inline 1" height="297" width="731"></div>
        <div class="gmail_extra"><br>
        </div>
        <div class="gmail_extra">
          After it ends:</div>
        <div class="gmail_extra"><br>
        </div>
        <div class="gmail_extra"><img src="cid:part2.07040205.07070402@gmail.com" alt="Imagem
            inline 2" height="294" width="731"></div>
        <div class="gmail_extra"><br>
        </div>
        <div class="gmail_extra">
          I&#39;m missing something when constructing my logic or
          comparator, even when reducing the number of workorders it
          still happening:</div>
        <div class="gmail_extra">
          <div class="gmail_extra"><span style="white-space:pre-wrap"> </span></div>
          <div class="gmail_extra"><span style="white-space:pre-wrap">WorkOrder now (graphic):</span></div>
          <div class="gmail_extra"><span style="white-space:pre-wrap"><br>
            </span></div>
          <div class="gmail_extra">List&lt;WorkOrder&gt; workOrderList =
            new ArrayList&lt;WorkOrder&gt;();</div>
          <div class="gmail_extra">workOrderList.add(new WorkOrder(6L,
            1, 2));</div>
          <div class="gmail_extra">workOrderList.add(new WorkOrder(7L,
            2, 6));</div>
          <div class="gmail_extra">workOrderList.add(new WorkOrder(8L,
            3, 3));</div>
          <div class="gmail_extra">workOrderList.add(new WorkOrder(9L,
            4, 3));</div>
          <div class="gmail_extra">workOrderList.add(new WorkOrder(10L,
            5, 2));</div>
          <div class="gmail_extra">total: 16 hours (last
            attribute)</div>
          <div class="gmail_extra">
            <br>
          </div>
          <div class="gmail_extra">Engineers now (graphic)</div>
          <div class="gmail_extra"><br>
          </div>
        </div>
        <div class="gmail_extra">
          <div class="gmail_extra">List&lt;Engineer&gt; engineerList =
            new ArrayList&lt;Engineer&gt;();</div>
          <div class="gmail_extra">engineerList.add(new Engineer(1L,
            &quot;Aladin&quot;, 8));</div>
          <div class="gmail_extra">engineerList.add(new Engineer(2L,
            &quot;Chuck Norris&quot;, 8));</div>
          <div class="gmail_extra">engineerList.add(new Engineer(3L,
            &quot;Rambo&quot;, 8));</div>
          <div class="gmail_extra">engineerList.add(new Engineer(4L,
            &quot;Mr. Miyagi&quot;, 8));</div>
          <div class="gmail_extra">engineerList.add(new Engineer(5L,
            &quot;Monkey D. Ruffy&quot;, 8));</div>
          <div class="gmail_extra">
            total: 40 hour (here will be done the schedule of the 16
            hours above)</div>
        </div>
        <div class="gmail_extra"><br>
        </div>
        <div class="gmail_extra"><br>
          <br>
          <div class="gmail_quote">2013/1/29 Geoffrey De Smet <span dir="ltr">&lt;<a href="mailto:ge0ffrey.spam@gmail.com" target="_blank">ge0ffrey.spam@gmail.com</a>&gt;</span><br>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
              <div bgcolor="#FFFFFF" text="#000000"> Run with the VM
                argument -Xmx512m<br>
                <br>
                Use VisualVM to monitor a graph of how the memory
                evolves.<br>
                Read this too:
                <a href="http://blog.athico.com/2012/07/scaling-planner-with-jit-selectors-in.html" target="_blank">http://blog.athico.com/2012/07/scaling-planner-with-jit-selectors-in.html</a><br>
                <br>
                <div>Op 28-01-13 20:19, André Fróes schreef:<br>
                </div>
                <blockquote type="cite">
                  <div>
                    <div>
                      <div dir="ltr">i forgot adding the main class:
                        <div>-----------------</div>
                        <div><br>
                        </div>
                        <div>
                          <div>public static void main(String[] args) {</div>
                          <div><span style="white-space:pre-wrap"> </span>String
                            t = &quot;&lt;?xml version=\&quot;1.0\&quot;
                            encoding=\&quot;UTF-8\&quot;?&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;&lt;solver&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;
 &lt;solutionClass&gt;com.swa.planner.domain.Distributor&lt;/solutionClass&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;
 &lt;planningEntityClass&gt;com.swa.planner.domain.Engineer&lt;/planningEntityClass&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;  &lt;scoreDirectorFactory&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;  
                             &lt;scoreDefinitionType&gt;HARD_AND_SOFT&lt;/scoreDefinitionType&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;  
 &lt;scoreDrl&gt;/com/swa/planner/domain/rule/distributorScoreRules.drl&lt;/scoreDrl&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;  &lt;/scoreDirectorFactory&gt;&quot;</div>
                          <div>//<span style="white-space:pre-wrap"> </span>+
                            &quot;  &lt;termination&gt;&quot;</div>
                          <div>//<span style="white-space:pre-wrap"> </span>+
                            &quot;  
                             &lt;maximumSecondsSpend&gt;120&lt;/maximumSecondsSpend&gt;&quot;</div>
                          <div>//<span style="white-space:pre-wrap"> </span>+
                            &quot;  &lt;/termination&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;  &lt;constructionHeuristic&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;  
 &lt;constructionHeuristicType&gt;FIRST_FIT_DECREASING&lt;/constructionHeuristicType&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;  
 &lt;constructionHeuristicPickEarlyType&gt;FIRST_LAST_STEP_SCORE_EQUAL_OR_IMPROVING&lt;/constructionHeuristicPickEarlyType&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;  &lt;/constructionHeuristic&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;  &lt;localSearch&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;    &lt;acceptor&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;    
                             &lt;planningEntityTabuSize&gt;7&lt;/planningEntityTabuSize&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;    &lt;/acceptor&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;    &lt;forager&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;    
                             &lt;minimalAcceptedSelection&gt;1000&lt;/minimalAcceptedSelection&gt;&quot;</div>
                          <div><span style="white-space:pre-wrap"> </span>+
                            &quot;    &lt;/forager&gt;&quot; + &quot;
                             &lt;/localSearch&gt;&quot; + &quot;&lt;/solver&gt;&quot;;</div>
                          <div><br>
                          </div>
                          <div><span style="white-space:pre-wrap"> </span>byte
                            b[] = t.getBytes();</div>
                          <div><span style="white-space:pre-wrap"> </span>ByteArrayInputStream

                            bt = new ByteArrayInputStream(b);</div>
                          <div><span style="white-space:pre-wrap"> </span>SolverFactory

                            solverFactory = new
                            XmlSolverFactory().configure(bt);</div>
                          <div><span style="white-space:pre-wrap"> </span>Solver

                            solver = solverFactory.buildSolver();</div>
                          <div><span style="white-space:pre-wrap"> </span></div>
                          <div><span style="white-space:pre-wrap"> </span>List&lt;Engineer&gt;

                            engineerList = new
                            ArrayList&lt;Engineer&gt;();</div>
                          <div><span style="white-space:pre-wrap"> </span>engineerList.add(new

                            Engineer(1L, &quot;Aladin&quot;, 8));</div>
                          <div><span style="white-space:pre-wrap"> </span>engineerList.add(new

                            Engineer(2L, &quot;Chuck Norris&quot;, 8));</div>
                          <div><span style="white-space:pre-wrap"> </span>engineerList.add(new

                            Engineer(3L, &quot;Rambo&quot;, 8));</div>
                          <div><span style="white-space:pre-wrap"> </span>engineerList.add(new

                            Engineer(4L, &quot;Mr. Miyagi&quot;, 8));</div>
                          <div><span style="white-space:pre-wrap"> </span>engineerList.add(new

                            Engineer(5L, &quot;Monkey D. Ruffy&quot;, 8));</div>
                          <div><span style="white-space:pre-wrap"> </span></div>
                          <div><span style="white-space:pre-wrap"> </span>List&lt;WorkOrder&gt;

                            workOrderList = new
                            ArrayList&lt;WorkOrder&gt;();</div>
                          <div><span style="white-space:pre-wrap"> </span>workOrderList.add(new

                            WorkOrder(6L, 1, 2));</div>
                          <div><span style="white-space:pre-wrap"> </span>workOrderList.add(new

                            WorkOrder(7L, 1, 6));</div>
                          <div><span style="white-space:pre-wrap"> </span>workOrderList.add(new

                            WorkOrder(8L, 1, 3));</div>
                          <div><span style="white-space:pre-wrap"> </span>workOrderList.add(new

                            WorkOrder(9L, 1, 3));</div>
                          <div><span style="white-space:pre-wrap"> </span>workOrderList.add(new

                            WorkOrder(10L, 1, 2));</div>
                          <div><span style="white-space:pre-wrap"> </span>workOrderList.add(new

                            WorkOrder(11L, 1, 8));</div>
                          <div><span style="white-space:pre-wrap"> </span>workOrderList.add(new

                            WorkOrder(12L, 1, 8));</div>
                          <div><span style="white-space:pre-wrap"> </span>workOrderList.add(new

                            WorkOrder(13L, 1, 2));</div>
                          <div><span style="white-space:pre-wrap"> </span>workOrderList.add(new

                            WorkOrder(14L, 1, 2));</div>
                          <div><span style="white-space:pre-wrap"> </span>workOrderList.add(new

                            WorkOrder(15L, 1, 4));</div>
                          <div><br>
                          </div>
                          <div><span style="white-space:pre-wrap"> </span>Distributor

                            distributor = new Distributor();</div>
                          <div><span style="white-space:pre-wrap"> </span>distributor.setId(0L);</div>
                          <div><span style="white-space:pre-wrap"> </span>distributor.setEngineerList(engineerList);</div>
                          <div><span style="white-space:pre-wrap"> </span>distributor.setWorkOrderList(workOrderList);</div>
                          <div><br>
                          </div>
                          <div><span style="white-space:pre-wrap"> </span>solver.setPlanningProblem(distributor);</div>
                          <div><span style="white-space:pre-wrap"> </span>solver.solve();</div>
                          <div><span style="white-space:pre-wrap"> </span>Distributor

                            solvedWorkOrderDistribution = (Distributor)
                            solver.getBestSolution();</div>
                          <div><br>
                          </div>
                          <div><span style="white-space:pre-wrap"> </span>System.out.printf(&quot;\nSolved

                            distribution with %d work orders and %d
                            engineers:\n%s&quot;,</div>
                          <div><span style="white-space:pre-wrap"> </span>workOrderList.size(),

                            engineerList.size(),</div>
                          <div><span style="white-space:pre-wrap"> </span>toDisplayString(solvedWorkOrderDistribution));</div>
                          <div><span style="white-space:pre-wrap"> </span>}</div>
                          <div><br>
                          </div>
                          <div><span style="white-space:pre-wrap"> </span>public

                            static String toDisplayString(Distributor
                            distributor) {</div>
                          <div><span style="white-space:pre-wrap"> </span>StringBuilder

                            displayString = new StringBuilder();</div>
                          <div><span style="white-space:pre-wrap"> </span>for

                            (Engineer engineer :
                            distributor.getEngineerList()) {</div>
                          <div><span style="white-space:pre-wrap"> </span>WorkOrder

                            order = engineer.getWorkOrder();</div>
                          <div><span style="white-space:pre-wrap"> </span>displayString.append(&quot;

                             &quot;).append(engineer.getLabel()).append(&quot; :
                            &quot;)</div>
                          <div><span style="white-space:pre-wrap"> </span>.append(order

                            == null ? null : order.getLabel())</div>
                          <div><span style="white-space:pre-wrap"> </span>.append(&quot;\n&quot;);</div>
                          <div><span style="white-space:pre-wrap"> </span>}</div>
                          <div><span style="white-space:pre-wrap"> </span>return

                            displayString.toString();</div>
                          <div><span style="white-space:pre-wrap"> </span>}</div>
                        </div>
                        <div><br>
                        </div>
                      </div>
                      <div class="gmail_extra"><br>
                        <br>
                        <div class="gmail_quote"> 2013/1/28 André Fróes
                          <span dir="ltr">&lt;<a href="mailto:arfmoraes@gmail.com" target="_blank">arfmoraes@gmail.com</a>&gt;</span><br>
                          <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
                            <div dir="ltr">Hello! After trying
                              cloudComputer example i&#39;m trying to
                              implement my own schedule distributor, but
                              now i&#39;m facing heap space error, but i see
                              that it does distribute some work orders.
                              Here&#39;s the console error:
                              <div> <br>
                              </div>
                              <div>-------------------</div>
                              <div>
                                <div>17:05:02.776 [main] INFO
                                   o.d.p.core.solver.DefaultSolver -
                                  Solving started: time spend (255),
                                  score (null), new best score (null),
                                  random seed (0).</div>
                                <div>17:05:02.821 [main] DEBUG
                                  o.d.p.c.c.g.DefaultGreedyFitSolverPhase
                                  -     Step index (0), time spend
                                  (309), score (0hard/0soft),
                                  initialized planning entity
                                  ([Engineer-5]).</div>
                                <div>17:05:02.822 [main] DEBUG
                                  o.d.p.c.c.g.DefaultGreedyFitSolverPhase
                                  -     Step index (1), time spend
                                  (310), score (0hard/0soft),
                                  initialized planning entity
                                  ([Engineer-4]).</div>
                                <div>17:05:02.824 [main] DEBUG
                                  o.d.p.c.c.g.DefaultGreedyFitSolverPhase
                                  -     Step index (2), time spend
                                  (311), score (0hard/0soft),
                                  initialized planning entity
                                  ([Engineer-3]).</div>
                                <div>17:05:02.824 [main] DEBUG
                                  o.d.p.c.c.g.DefaultGreedyFitSolverPhase
                                  -     Step index (3), time spend
                                  (312), score (0hard/0soft),
                                  initialized planning entity
                                  ([Engineer-2]).</div>
                                <div>17:05:02.825 [main] DEBUG
                                  o.d.p.c.c.g.DefaultGreedyFitSolverPhase
                                  -     Step index (4), time spend
                                  (313), score (0hard/0soft),
                                  initialized planning entity
                                  ([Engineer-1]).</div>
                                <div>17:05:02.825 [main] INFO
                                   o.d.p.c.c.g.DefaultGreedyFitSolverPhase
                                  - Phase constructionHeuristic ended:
                                  step total (5), time spend (313), best
                                  score (0hard/0soft).</div>
                                <div>17:05:03.020 [main] DEBUG
                                  o.d.p.c.l.DefaultLocalSearchSolverPhase
                                  -     Step index (0), time spend
                                  (508), score (0hard/0soft),     best
                                  score (0hard/0soft), accepted/selected
                                  move count (1000/1000) for picked step
                                  ([Engineer-3] =&gt; [WorkOrder-12]).</div>
                                <div>17:05:03.315 [main] DEBUG
                                  o.d.p.c.l.DefaultLocalSearchSolverPhase
                                  -     Step index (1), time spend
                                  (803), score (0hard/0soft),     best
                                  score (0hard/0soft), accepted/selected
                                  move count (1000/1703) for picked step
                                  ([Engineer-4] =&gt; [WorkOrder-8]).</div>
                                <div>17:05:03.736 [main] DEBUG
                                  o.d.p.c.l.DefaultLocalSearchSolverPhase
                                  -     Step index (2), time spend
                                  (1224), score (0hard/0soft),     best
                                  score (0hard/0soft), accepted/selected
                                  move count (1000/2657) for picked step
                                  ([Engineer-1] =&gt; [WorkOrder-8]).</div>
                                <div>17:05:03.951 [main] DEBUG
                                  o.d.p.c.l.DefaultLocalSearchSolverPhase
                                  -     Step index (3), time spend
                                  (1439), score (0hard/0soft),     best
                                  score (0hard/0soft), accepted/selected
                                  move count (1000/4315) for picked step
                                  ([Engineer-5] =&gt; [WorkOrder-9]).</div>
                                <div>17:05:04.251 [main] DEBUG
                                  o.d.p.c.l.DefaultLocalSearchSolverPhase
                                  -     Step index (4), time spend
                                  (1739), score (0hard/0soft),     best
                                  score (0hard/0soft), accepted/selected
                                  move count (1000/9309) for picked step
                                  ([Engineer-2] =&gt; [WorkOrder-9]).</div>
                                <div>Exception in thread &quot;main&quot;
                                  java.lang.OutOfMemoryError: Java heap
                                  space</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>at
                                  java.util.Arrays.copyOf(Unknown
                                  Source)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>at
                                  java.util.Arrays.copyOf(Unknown
                                  Source)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>at
                                  java.util.ArrayList.grow(Unknown
                                  Source)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>at
                                  java.util.ArrayList.ensureCapacityInternal(Unknown
                                  Source)</div>
                                <div> <span style="white-space:pre-wrap"> </span>at

                                  java.util.ArrayList.add(Unknown
                                  Source)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>at
org.drools.planner.core.localsearch.decider.forager.AcceptedForager.addToMaxScoreUnacceptedList(AcceptedForager.java:143)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>at
org.drools.planner.core.localsearch.decider.forager.AcceptedForager.addMove(AcceptedForager.java:101)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>at
org.drools.planner.core.localsearch.decider.DefaultDecider.processMove(DefaultDecider.java:164)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>at
org.drools.planner.core.localsearch.decider.DefaultDecider.doMove(DefaultDecider.java:144)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>at
org.drools.planner.core.localsearch.decider.DefaultDecider.decideNextStep(DefaultDecider.java:116)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>at
org.drools.planner.core.localsearch.DefaultLocalSearchSolverPhase.solve(DefaultLocalSearchSolverPhase.java:62)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>at
org.drools.planner.core.solver.DefaultSolver.runSolverPhases(DefaultSolver.java:190)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>at
org.drools.planner.core.solver.DefaultSolver.solve(DefaultSolver.java:155)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>at
                                  com.swa.planner.domain.WorkOrderTest.main(WorkOrderTest.java:66)</div>
                              </div>
                              <div>------------------------</div>
                              <div><br>
                              </div>
                              <div>it does distribute some engineers to
                                work orders, but after a while, it just
                                show the error.</div>
                              <div><br>
                              </div>
                              <div>The drl is very simple:</div>
                              <div><br>
                              </div>
                              <div>--------------------------</div>
                              <div>
                                <div>import
org.drools.planner.core.score.buildin.hardandsoft.HardAndSoftScoreHolder;</div>
                                <div>import
                                  org.drools.planner.core.score.constraint.IntConstraintOccurrence;</div>
                                <div>import
                                  org.drools.planner.core.score.constraint.ConstraintType;</div>
                                <div><br>
                                </div>
                                <div>import
                                  com.swa.planner.domain.Distributor;</div>
                                <div>import
                                  com.swa.planner.domain.Engineer;</div>
                                <div>import
                                  com.swa.planner.domain.WorkOrder;</div>
                                <div><br>
                                </div>
                                <div>global HardAndSoftScoreHolder
                                  scoreHolder;</div>
                                <div><br>
                                </div>
                                <div>rule &quot;requiredTimeToFinish&quot;</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>when</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>$workOrder : WorkOrder($time :
                                  time)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>$requiredTimeTotal :
                                  Number(intValue &gt; $time) from
                                  accumulate(</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>Engineer (</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>workOrder == $workOrder, </div>
                                <div><span style="white-space:pre-wrap">
                                  </span>$requiredTime : worktime),</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>sum($requiredTime)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>then</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>insertLogical(new
                                  IntConstraintOccurrence(&quot;requiredTimeToFinish&quot;,
                                  ConstraintType.NEGATIVE_HARD,</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>$requiredTimeTotal.intValue() -
                                  $time,</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>$workOrder));</div>
                                <div>end</div>
                                <div><br>
                                </div>
                                <div>rule &quot;hardConstraintBroken&quot;</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>salience -1</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>when</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>$hardTotal : Number() from
                                  accumulate(</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>IntConstraintOccurrence(constraintType

                                  == ConstraintType.NEGATIVE_HARD,
                                  $weight : weight)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>sum($weight)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>)</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>then</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>scoreHolder.setHardConstraintsBroken($hardTotal.intValue());</div>
                                <div>end</div>
                              </div>
                              <div>--------------------------<br>
                              </div>
                              <div><br>
                              </div>
                              <div>i guess no error there, i believe
                                that i&#39;m missing when doing the strenght
                                and difficulty comparators dince i
                                didn&#39;t really understood the
                                getMultiplicand thing of CloudComputer.</div>
                              <div><br>
                              </div>
                              <div>here&#39;s the implementation, also kept
                                as simple as possible (and probably
                                wrong):</div>
                              <div><br>
                              </div>
                              <div>------------</div>
                              <div>
                                <div>public class
                                  WorkOrderStrengthComparator implements
                                  Comparator&lt;WorkOrder&gt; {</div>
                                <div><br>
                                </div>
                                <div><span style="white-space:pre-wrap">
                                  </span>public int compare(WorkOrder a,
                                  WorkOrder b) {</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>return new
                                  CompareToBuilder().append(a.getTime(),
                                  b.getTime())</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>.append(b.getId(), a.getId())</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>.toComparison();</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>}</div>
                                <div><br>
                                </div>
                                <div>}</div>
                              </div>
                              <div>------------</div>
                              <div>
                                <div>public class
                                  EngineerDifficultyComparator
                                  implements Comparator&lt;Engineer&gt;
                                  {</div>
                                <div><br>
                                </div>
                                <div><span style="white-space:pre-wrap">
                                  </span>public int compare(Engineer a,
                                  Engineer b) {</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>return new
                                  CompareToBuilder().append(a.getWorktime(),
                                  b.getWorktime())</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>.append(a.getId(), b.getId())</div>
                                <div> <span style="white-space:pre-wrap"> </span>.toComparison();</div>
                                <div><span style="white-space:pre-wrap">
                                  </span>}</div>
                                <div><br>
                                </div>
                                <div>}</div>
                              </div>
                              <div>------------</div>
                              <div><br>
                              </div>
                              <div> i&#39;m missing something at these
                                comparators ain&#39;t I?</div>
                            </div>
                          </blockquote>
                        </div>
                        <br>
                      </div>
                      <br>
                      <fieldset></fieldset>
                      <br>
                    </div>
                  </div>
                  <pre>_______________________________________________
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>
                </blockquote>
                <br>
              </div>
              <br>
              _______________________________________________<br>
              rules-users mailing list<br>
              <a href="mailto:rules-users@lists.jboss.org" target="_blank">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>
        </div>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      <pre>_______________________________________________
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>
    </blockquote>
    <br>
  </div>

<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">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></div>
</div></div></blockquote></div><br></div>