<div dir="ltr">5.5.0.Final both</div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/1/28 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">
    Which version of planner (drools-planner-core) and drools
    (drools-core, drools-compiler)?<br>
    <div>Op 28-01-13 16:40, André Fróes schreef:<br>
    </div><div><div class="h5">
    <blockquote type="cite">
      <div dir="ltr">I&#39;m comparing both the example and my
        implementation, can&#39;t see anything different from each other
        except that example uses that CloudBalancingGenerator. Even the
        drl rule remains the same, i wrote it and then fixed the errors
        until reach that point.</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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div dir="ltr">this is the full drl file:
              <div><br>
              </div>
              <div>------------</div>
              <div><br>
              </div>
              <div>
                <div>package com.swa.planner.domain.rule;</div>
                <div><br>
                </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.CloudBalance;</div>
                <div>import com.swa.planner.domain.CloudComputer;</div>
                <div>import com.swa.planner.domain.CloudProcess;</div>
                <div><br>
                </div>
                <div>global HardAndSoftScoreHolder scoreHolder;</div>
                <div><br>
                </div>
                <div>rule &quot;requiredCpuPowerTotal&quot;</div>
                <div><span style="white-space:pre-wrap"> </span>when</div>
                <div><span style="white-space:pre-wrap"> </span>$computer
                  : CloudComputer($cpuPower : cpuPower)</div>
                <div><span style="white-space:pre-wrap"> </span>$requiredCpuPowerTotal
                  : Number(intValue &gt; $cpuPower) from accumulate(</div>
                <div><span style="white-space:pre-wrap"> </span>CloudProcess
                  (</div>
                <div><span style="white-space:pre-wrap"> </span>computer
                  == $computer, </div>
                <div><span style="white-space:pre-wrap"> </span>$requiredCpuPower
                  : requiredCpuPower),</div>
                <div><span style="white-space:pre-wrap"> </span>sum($requiredCpuPower)</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;requiredCpuPowerTotal&quot;,
                  ConstraintType.NEGATIVE_HARD,</div>
                <div><span style="white-space:pre-wrap"> </span>$requiredCpuPowerTotal.intValue()
                  - $cpuPower,</div>
                <div><span style="white-space:pre-wrap"> </span>$computer));</div>
                <div>end</div>
                <div><br>
                </div>
                <div>rule &quot;requiredMemoryTotal&quot;</div>
                <div><span style="white-space:pre-wrap"> </span>when</div>
                <div><span style="white-space:pre-wrap"> </span>$computer
                  : CloudComputer($memory : memory)</div>
                <div><span style="white-space:pre-wrap"> </span>$requiredMemoryTotal
                  : Number(intValue &gt; $memory) from accumulate(</div>
                <div><span style="white-space:pre-wrap"> </span>CloudProcess
                  ( </div>
                <div><span style="white-space:pre-wrap"> </span>computer
                  == $computer, </div>
                <div><span style="white-space:pre-wrap"> </span>$requiredMemory
                  : requiredMemory),</div>
                <div><span style="white-space:pre-wrap"> </span>sum($requiredMemory)</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;requiredMemoryTotal&quot;,
                  ConstraintType.NEGATIVE_HARD,</div>
                <div><span style="white-space:pre-wrap"> </span>$requiredMemoryTotal.intValue()
                  - $memory, </div>
                <div><span style="white-space:pre-wrap"> </span>$computer));</div>
                <div>end</div>
                <div><br>
                </div>
                <div>rule &quot;requiredNetworkBandwidth&quot;</div>
                <div><span style="white-space:pre-wrap"> </span>when</div>
                <div><span style="white-space:pre-wrap"> </span>$computer
                  : CloudComputer($networkBandwidth : networkBandwidth)</div>
                <div><span style="white-space:pre-wrap"> </span>$requiredNetworkBandwidthTotal
                  : Number(intValue &gt; $networkBandwidth) from
                  accumulate(</div>
                <div><span style="white-space:pre-wrap"> </span>CloudProcess
                  (</div>
                <div><span style="white-space:pre-wrap"> </span>computer
                  == $computer,</div>
                <div><span style="white-space:pre-wrap"> </span>$requiredNetworkBandwidth
                  : requiredNetworkBandwidth)</div>
                <div><span style="white-space:pre-wrap"> </span>sum($requiredNetworkBandwidth)</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;requiredNetworkBandwidth&quot;,
                  ConstraintType.NEGATIVE_HARD, </div>
                <div><span style="white-space:pre-wrap"> </span>$requiredNetworkBandwidthTotal.intValue()
                  - $networkBandwidth, </div>
                <div><span style="white-space:pre-wrap"> </span>$computer));</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><br>
                </div>
                <div><br>
                </div>
                <div>// Soft constraint</div>
                <div><br>
                </div>
                <div>rule &quot;computerCost&quot;</div>
                <div><span style="white-space:pre-wrap"> </span>when</div>
                <div><span style="white-space:pre-wrap"> </span>$computer
                  : CloudComputer($cost : cost)</div>
                <div><span style="white-space:pre-wrap"> </span>exists
                  CloudProcess(computer == $computer)</div>
                <div><span style="white-space:pre-wrap"> </span>then</div>
                <div><span style="white-space:pre-wrap"> </span>insertLogical(new
                  IntConstraintOccurrence(&quot;computerCost&quot;,
                  ConstraintType.NEGATIVE_SOFT,</div>
                <div><span style="white-space:pre-wrap"> </span>$cost,</div>
                <div><span style="white-space:pre-wrap"> </span>$computer));</div>
                <div>end</div>
                <div><br>
                </div>
                <div>rule &quot;softConstraintBroken&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>$softTotal
                  : Number() from accumulate(</div>
                <div><span style="white-space:pre-wrap"> </span>IntConstraintOccurrence(ConstraintType
                  == ConstraintType.NEGATIVE_SOFT, $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($softTotal.intValue());</div>
                <div>end</div>
              </div>
            </div>
            <div>
              <div>
                <div class="gmail_extra"><br>
                  <br>
                  <div class="gmail_quote">2013/1/28 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">
                        com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987.defaultConsequence(Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987.java:14)

                        <span style="white-space:pre-wrap"><br>
                          What&#39;s in the then side of
                          Rule_requiredCpuPowerTotal ?<br>
                          <br>
                        </span>
                        <div>Op 28-01-13 16:00, André Fróes schreef:<br>
                        </div>
                        <div>
                          <div>
                            <blockquote type="cite">
                              <div dir="ltr">Even adding that, the error
                                still
                                <div><br>
                                </div>
                                <div>--------------</div>
                                <div>
                                  <div>12:57:41.050 [main] INFO
                                     o.d.p.core.solver.DefaultSolver -
                                    Solving started: time spend (152),
                                    score (null), new best score (null),
                                    random seed (0).</div>
                                  <div>Exception in thread &quot;main&quot;
                                    Exception executing consequence for
                                    rule &quot;requiredCpuPowerTotal&quot; in
                                    com.swa.planner.domain.rule:
                                    java.lang.NullPointerException</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at

org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1297)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at

org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1221)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at

org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1456)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:710)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:674)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.score.director.drools.DroolsScoreDirector.calculateScore(DroolsScoreDirector.java:177)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.solver.scope.DefaultSolverScope.calculateScore(DefaultSolverScope.java:92)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.phase.AbstractSolverPhaseScope.calculateScore(AbstractSolverPhaseScope.java:120)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.constructionheuristic.greedyFit.decider.DefaultGreedyDecider.processMove(DefaultGreedyDecider.java:136)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.constructionheuristic.greedyFit.decider.DefaultGreedyDecider.doMove(DefaultGreedyDecider.java:110)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.constructionheuristic.greedyFit.decider.DefaultGreedyDecider.decideNextStep(DefaultGreedyDecider.java:82)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.constructionheuristic.greedyFit.DefaultGreedyFitSolverPhase.solve(DefaultGreedyFitSolverPhase.java:65)</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.CloudTest.main(CloudTest.java:67)</div>
                                  <div>Caused by:
                                    java.lang.NullPointerException</div>
                                  <div><span style="white-space:pre-wrap"> </span>at

                                    java.lang.String.&lt;init&gt;(Unknown
                                    Source)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at

org.mvel2.util.ErrorUtil.rewriteIfNeeded(ErrorUtil.java:12)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:302)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at

org.mvel2.MVEL.compileExpression(MVEL.java:810)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.base.mvel.MVELCompilationUnit.compile(MVELCompilationUnit.java:435)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.base.mvel.MVELCompilationUnit.getCompiledExpression(MVELCompilationUnit.java:238)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.rule.constraint.MvelConstraint.createMvelConditionEvaluator(MvelConstraint.java:206)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:190)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.rule.constraint.MvelConstraint.isAllowed(MvelConstraint.java:157)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at

org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:137)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:497)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:382)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at

org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:235)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at

org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:240)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at

org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:350)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at

org.drools.common.SimpleBeliefSystem.insert(SimpleBeliefSystem.java:38)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.common.TruthMaintenanceSystem.addLogicalDependency(TruthMaintenanceSystem.java:204)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.common.TruthMaintenanceSystem.addLogicalDependency(TruthMaintenanceSystem.java:176)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at

org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:231)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:903)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.base.DefaultKnowledgeHelper.insertLogical(DefaultKnowledgeHelper.java:245)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.base.DefaultKnowledgeHelper.insertLogical(DefaultKnowledgeHelper.java:210)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
org.drools.base.DefaultKnowledgeHelper.insertLogical(DefaultKnowledgeHelper.java:205)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at
com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987.defaultConsequence(Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987.java:14)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at

                                    com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987DefaultConsequenceInvokerGenerated.evaluate(Unknown

                                    Source)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at

                                    com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987DefaultConsequenceInvoker.evaluate(Unknown

                                    Source)</div>
                                  <div><span style="white-space:pre-wrap"> </span>at

org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287)</div>
                                  <div><span style="white-space:pre-wrap"> </span>...
                                    14 more</div>
                                </div>
                                <div><br>
                                </div>
                                <div>--------------</div>
                                <div><br>
                                </div>
                                <div>I added to cloudprocess computer
                                  variable:</div>
                                <div>--------------</div>
                                <div>
                                  <div>package com.swa.planner.domain;</div>
                                  <div><br>
                                  </div>
                                  <div>import
                                    org.drools.planner.api.domain.entity.PlanningEntity;</div>
                                  <div>import
                                    org.drools.planner.api.domain.variable.PlanningVariable;</div>
                                  <div>import
                                    org.drools.planner.api.domain.variable.ValueRange;</div>
                                  <div>import
                                    org.drools.planner.api.domain.variable.ValueRangeType;</div>
                                  <div>import
                                    org.drools.planner.examples.common.domain.AbstractPersistable;</div>
                                  <div><br>
                                  </div>
                                  <div>@PlanningEntity(difficultyComparatorClass
                                    =
                                    CloudProcessDifficultyComparator.class)</div>
                                  <div>public class CloudProcess extends
                                    AbstractPersistable{</div>
                                  <div><br>
                                  </div>
                                  <div><span style="white-space:pre-wrap"> </span>private

                                    int requiredCpuPower;</div>
                                  <div><span style="white-space:pre-wrap"> </span>private

                                    int requiredMemory;</div>
                                  <div><span style="white-space:pre-wrap"> </span>private

                                    int requiredNetworkBandwidth;</div>
                                  <div><br>
                                  </div>
                                  <div><span style="white-space:pre-wrap"> </span>private

                                    CloudComputer computer;</div>
                                  <div><br>
                                  </div>
                                  <div><span style="white-space:pre-wrap"> </span>public

                                    CloudProcess(long id, int
                                    requiredCpuPower, int
                                    requiredMemory,</div>
                                  <div><span style="white-space:pre-wrap"> </span>int

                                    requiredNetworkBandwidth) {</div>
                                  <div><span style="white-space:pre-wrap"> </span>super();</div>
                                  <div><span style="white-space:pre-wrap"> </span>setId(id);</div>
                                  <div><span style="white-space:pre-wrap"> </span>this.requiredCpuPower

                                    = requiredCpuPower;</div>
                                  <div><span style="white-space:pre-wrap"> </span>this.requiredMemory

                                    = requiredMemory;</div>
                                  <div><span style="white-space:pre-wrap"> </span>this.requiredNetworkBandwidth

                                    = requiredNetworkBandwidth;</div>
                                  <div><span style="white-space:pre-wrap"> </span>}</div>
                                  <div><span style="white-space:pre-wrap"> </span></div>
                                  <div><span style="white-space:pre-wrap"> </span>public

                                    CloudProcess() {<span style="white-space:pre-wrap"> </span>}</div>
                                  <div><br>
                                  </div>
                                  <div><span style="white-space:pre-wrap"> </span>public

                                    int getRequiredCpuPower() {</div>
                                  <div><span style="white-space:pre-wrap"> </span>return

                                    requiredCpuPower;</div>
                                  <div><span style="white-space:pre-wrap"> </span>}</div>
                                  <div><br>
                                  </div>
                                  <div><span style="white-space:pre-wrap"> </span>public

                                    void setRequiredCpuPower(int
                                    requiredCpuPower) {</div>
                                  <div><span style="white-space:pre-wrap"> </span>this.requiredCpuPower

                                    = requiredCpuPower;</div>
                                  <div><span style="white-space:pre-wrap"> </span>}</div>
                                  <div><br>
                                  </div>
                                  <div><span style="white-space:pre-wrap"> </span>public

                                    int getRequiredMemory() {</div>
                                  <div><span style="white-space:pre-wrap"> </span>return

                                    requiredMemory;</div>
                                  <div><span style="white-space:pre-wrap"> </span>}</div>
                                  <div><br>
                                  </div>
                                  <div><span style="white-space:pre-wrap"> </span>public

                                    void setRequiredMemory(int
                                    requiredMemory) {</div>
                                  <div><span style="white-space:pre-wrap"> </span>this.requiredMemory

                                    = requiredMemory;</div>
                                  <div><span style="white-space:pre-wrap"> </span>}</div>
                                  <div><br>
                                  </div>
                                  <div><span style="white-space:pre-wrap"> </span>public

                                    int getRequiredNetworkBandwidth() {</div>
                                  <div><span style="white-space:pre-wrap"> </span>return

                                    requiredNetworkBandwidth;</div>
                                  <div><span style="white-space:pre-wrap"> </span>}</div>
                                  <div><br>
                                  </div>
                                  <div><span style="white-space:pre-wrap"> </span>public

                                    void setRequiredNetworkBandwidth(int
                                    requiredNetworkBandwidth) {</div>
                                  <div><span style="white-space:pre-wrap"> </span>this.requiredNetworkBandwidth

                                    = requiredNetworkBandwidth;</div>
                                  <div><span style="white-space:pre-wrap"> </span>}</div>
                                  <div><br>
                                  </div>
                                  <div><span style="white-space:pre-wrap"> </span>public

                                    String getLabel() {</div>
                                  <div>        return &quot;Process &quot; + id;</div>
                                  <div>    }</div>
                                  <div><span style="white-space:pre-wrap"> </span></div>
                                  <div><span style="white-space:pre-wrap"> </span>@PlanningVariable(strengthComparatorClass

                                    =
                                    CloudComputerStrengthComparator.class)</div>
                                  <div><span style="white-space:pre-wrap"> </span>@ValueRange(type

                                    =
                                    ValueRangeType.FROM_SOLUTION_PROPERTY,
                                    solutionProperty = &quot;computerList&quot;)</div>
                                  <div><span style="white-space:pre-wrap"> </span>public

                                    CloudComputer getComputer() {</div>
                                  <div><span style="white-space:pre-wrap"> </span>if

                                    (computer == null) { return null; }</div>
                                  <div><span style="white-space:pre-wrap"> </span>return

                                    computer;</div>
                                  <div><span style="white-space:pre-wrap"> </span>}</div>
                                  <div><br>
                                  </div>
                                  <div><span style="white-space:pre-wrap"> </span>public

                                    void setComputer(CloudComputer
                                    computer) {</div>
                                  <div><span style="white-space:pre-wrap"> </span>this.computer

                                    = computer;</div>
                                  <div><span style="white-space:pre-wrap"> </span>}</div>
                                  <div><span style="white-space:pre-wrap"> </span></div>
                                  <div><span style="white-space:pre-wrap"> </span>public

                                    CloudProcess clone(){</div>
                                  <div><span style="white-space:pre-wrap"> </span>CloudProcess

                                    clone = new CloudProcess();</div>
                                  <div><span style="white-space:pre-wrap"> </span><a href="http://clone.id" target="_blank">clone.id</a> = id;</div>
                                  <div><span style="white-space:pre-wrap"> </span>clone.requiredCpuPower

                                    = requiredCpuPower;</div>
                                  <div><span style="white-space:pre-wrap"> </span>clone.requiredMemory

                                    = requiredMemory;</div>
                                  <div><span style="white-space:pre-wrap"> </span>clone.requiredNetworkBandwidth

                                    = requiredNetworkBandwidth;</div>
                                  <div><span style="white-space:pre-wrap"> </span>clone.computer

                                    = computer;</div>
                                  <div><span style="white-space:pre-wrap"> </span>return

                                    clone;</div>
                                  <div><span style="white-space:pre-wrap"> </span>}</div>
                                  <div><span style="white-space:pre-wrap"> </span></div>
                                  <div><span style="white-space:pre-wrap"> </span>public

                                    int getRequiredMultiplicand() {</div>
                                  <div>        return requiredCpuPower *
                                    requiredMemory *
                                    requiredNetworkBandwidth;</div>
                                  <div>    }</div>
                                  <div>}</div>
                                  <div>--------------<br>
                                  </div>
                                  <div><br>
                                  </div>
                                  <div>this is what i&#39;m doing to run the
                                    example:</div>
                                  <div><br>
                                  </div>
                                  <div>-------------</div>
                                  <div>
                                    <div>package com.swa.planner.domain;</div>
                                    <div><br>
                                    </div>
                                    <div>import
                                      java.io.ByteArrayInputStream;</div>
                                    <div>import java.util.ArrayList;</div>
                                    <div>import java.util.List;</div>
                                    <div><br>
                                    </div>
                                    <div>import
                                      org.drools.planner.config.SolverFactory;</div>
                                    <div>import
                                      org.drools.planner.config.XmlSolverFactory;</div>
                                    <div>import
                                      org.drools.planner.core.Solver;</div>
                                    <div><br>
                                    </div>
                                    <div>public class CloudTest {</div>
                                    <div><span style="white-space:pre-wrap"> </span>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.CloudBalance&lt;/solutionClass&gt;&quot;</div>
                                    <div><span style="white-space:pre-wrap"> </span>+
                                      &quot;
 &lt;planningEntityClass&gt;com.swa.planner.domain.CloudProcess&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/cloudBalancingScoreRules.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; </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;/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><br>
                                    </div>
                                    <div><span style="white-space:pre-wrap"> </span>List&lt;CloudComputer&gt;

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

                                      CloudComputer(1L, &quot;Computador 1&quot;,
                                      3, 2, 2, 110));</div>
                                    <div><span style="white-space:pre-wrap"> </span>computerList.add(new

                                      CloudComputer(2L, &quot;Computador 2&quot;,
                                      12, 8, 3, 400));</div>
                                    <div><span style="white-space:pre-wrap"> </span>computerList.add(new

                                      CloudComputer(3L, &quot;Computador 3&quot;,
                                      6, 6, 4, 300));</div>
                                    <div><span style="white-space:pre-wrap"> </span>computerList.add(new

                                      CloudComputer(4L, &quot;Computador 4&quot;,
                                      18, 12, 8, 1000));</div>
                                    <div><span style="white-space:pre-wrap"> </span>computerList.add(new

                                      CloudComputer(5L, &quot;Computador 5&quot;,
                                      8, 4, 6, 800));</div>
                                    <div><span style="white-space:pre-wrap"> </span>computerList.add(new

                                      CloudComputer(6L, &quot;Computador 6&quot;,
                                      9, 7, 9, 1000));</div>
                                    <div><br>
                                    </div>
                                    <div><span style="white-space:pre-wrap"> </span>List&lt;CloudProcess&gt;

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

                                      CloudProcess(11L, 2, 2, 2));</div>
                                    <div><span style="white-space:pre-wrap"> </span>processList.add(new

                                      CloudProcess(12L, 4, 4, 2));</div>
                                    <div><span style="white-space:pre-wrap"> </span>processList.add(new

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

                                      CloudProcess(14L, 7, 3, 5));</div>
                                    <div><span style="white-space:pre-wrap"> </span>processList.add(new

                                      CloudProcess(15L, 5, 8, 3));</div>
                                    <div><span style="white-space:pre-wrap"> </span>processList.add(new

                                      CloudProcess(16L, 9, 2, 2));</div>
                                    <div><span style="white-space:pre-wrap"> </span>processList.add(new

                                      CloudProcess(17L, 6, 5, 6));</div>
                                    <div><br>
                                    </div>
                                    <div><span style="white-space:pre-wrap"> </span>CloudBalance

                                      cloudBalance = new CloudBalance();</div>
                                    <div><span style="white-space:pre-wrap"> </span>cloudBalance.setId(0L);</div>
                                    <div><span style="white-space:pre-wrap"> </span>cloudBalance.setComputerList(computerList);</div>
                                    <div><span style="white-space:pre-wrap"> </span>cloudBalance.setProcessList(processList);</div>
                                    <div><br>
                                    </div>
                                    <div><span style="white-space:pre-wrap"> </span>//

                                      Solve the problem</div>
                                    <div><span style="white-space:pre-wrap"> </span>solver.setPlanningProblem(cloudBalance);</div>
                                    <div><span style="white-space:pre-wrap"> </span>solver.solve();</div>
                                    <div><span style="white-space:pre-wrap"> </span>CloudBalance

                                      solvedCloudBalance =
                                      (CloudBalance)
                                      solver.getBestSolution();</div>
                                    <div><br>
                                    </div>
                                    <div><span style="white-space:pre-wrap"> </span>//

                                      Display the result</div>
                                    <div><span style="white-space:pre-wrap"> </span>System.out.println(&quot;\nSolved

                                      cloudBalance with 5 computers and
                                      6 processes:\n&quot;</div>
                                    <div><span style="white-space:pre-wrap"> </span>+
toDisplayString(solvedCloudBalance));</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(CloudBalance
                                      cloudBalance) {</div>
                                    <div><span style="white-space:pre-wrap"> </span>StringBuilder

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

                                      (CloudProcess process :
                                      cloudBalance.getProcessList()) {</div>
                                    <div><span style="white-space:pre-wrap"> </span>CloudComputer

                                      computer = process.getComputer();</div>
                                    <div><span style="white-space:pre-wrap"> </span>displayString.append(&quot;

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

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

                                      == null ? null :
                                      computer.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>
                                    <div><br>
                                    </div>
                                  </div>
                                  <div>-------------</div>
                                </div>
                              </div>
                              <div class="gmail_extra"><br>
                                <br>
                                <div class="gmail_quote">2013/1/28
                                  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"> The value of a
                                      variable of an entity starts out
                                      as null during construction
                                      heuristics, even if it&#39;s not
                                      nullable.<br>
                                      <br>
                                      The usual trick is to add null
                                      safe getters:<br>
                                      <br>
                                      public class BedDesignation {<br>
                                      <br>
                                         // bed is planning variable<br>
                                        ...<br>
                                        public Departement
                                      getDepartment() {<br>
                                           if (bed == null) { return
                                      null;}<br>
                                           return
                                      bed.getRoom().getDepartement()<br>
                                        }<br>
                                      }<br>
                                      <br>
                                      <br>
                                      <div>Op 28-01-13 15:13, André
                                        Fróes schreef:<br>
                                      </div>
                                      <blockquote type="cite">
                                        <div dir="ltr">I&#39;ve implemented
                                          it to see how it would work,
                                          now I got another error:
                                          <div><br>
                                          </div>
                                          <div>---------------</div>
                                          <div><br>
                                          </div>
                                          <div>
                                            <div>12:10:41.357 [main]
                                              INFO
                                               o.d.p.core.solver.DefaultSolver
                                              - Solving started: time
                                              spend (302), score (null),
                                              new best score (null),
                                              random seed (0).</div>
                                            <div>Exception in thread
                                              &quot;main&quot; Exception executing
                                              consequence for rule
                                              &quot;requiredCpuPowerTotal&quot; in
                                              com.swa.planner.domain.rule:

java.lang.NullPointerException</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1297)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1221)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1456)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:710)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:674)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.planner.core.score.director.drools.DroolsScoreDirector.calculateScore(DroolsScoreDirector.java:177)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.planner.core.solver.scope.DefaultSolverScope.calculateScore(DefaultSolverScope.java:92)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.planner.core.phase.AbstractSolverPhaseScope.calculateScore(AbstractSolverPhaseScope.java:120)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.planner.core.constructionheuristic.greedyFit.decider.DefaultGreedyDecider.processMove(DefaultGreedyDecider.java:136)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.planner.core.constructionheuristic.greedyFit.decider.DefaultGreedyDecider.doMove(DefaultGreedyDecider.java:110)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.planner.core.constructionheuristic.greedyFit.decider.DefaultGreedyDecider.decideNextStep(DefaultGreedyDecider.java:82)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.planner.core.constructionheuristic.greedyFit.DefaultGreedyFitSolverPhase.solve(DefaultGreedyFitSolverPhase.java:65)</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.CloudTest.main(CloudTest.java:65)</div>
                                            <div>Caused by:
                                              java.lang.NullPointerException</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
                                              java.lang.String.&lt;init&gt;(Unknown
                                              Source)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.mvel2.util.ErrorUtil.rewriteIfNeeded(ErrorUtil.java:12)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:302)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
                                              org.mvel2.MVEL.compileExpression(MVEL.java:810)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.base.mvel.MVELCompilationUnit.compile(MVELCompilationUnit.java:435)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.base.mvel.MVELCompilationUnit.getCompiledExpression(MVELCompilationUnit.java:238)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.rule.constraint.MvelConstraint.createMvelConditionEvaluator(MvelConstraint.java:206)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:190)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.rule.constraint.MvelConstraint.isAllowed(MvelConstraint.java:157)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:137)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:497)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:382)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:235)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:240)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:350)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.common.SimpleBeliefSystem.insert(SimpleBeliefSystem.java:38)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.common.TruthMaintenanceSystem.addLogicalDependency(TruthMaintenanceSystem.java:204)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.common.TruthMaintenanceSystem.addLogicalDependency(TruthMaintenanceSystem.java:176)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:231)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:903)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.base.DefaultKnowledgeHelper.insertLogical(DefaultKnowledgeHelper.java:245)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.base.DefaultKnowledgeHelper.insertLogical(DefaultKnowledgeHelper.java:210)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.base.DefaultKnowledgeHelper.insertLogical(DefaultKnowledgeHelper.java:205)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_d2d9e4332c804bacac7861ac867eb4bd.defaultConsequence(Rule_requiredCpuPowerTotal_d2d9e4332c804bacac7861ac867eb4bd.java:14)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
                                              com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_d2d9e4332c804bacac7861ac867eb4bdDefaultConsequenceInvokerGenerated.evaluate(Unknown


                                              Source)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
                                              com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_d2d9e4332c804bacac7861ac867eb4bdDefaultConsequenceInvoker.evaluate(Unknown


                                              Source)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287)</div>
                                            <div><span style="white-space:pre-wrap">
                                              </span>... 14 more</div>
                                          </div>
                                          <div><br>
                                          </div>
                                          <div>-----------------</div>
                                          <div><br>
                                          </div>
                                          <div>this one i have no clue </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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                                              <div dir="ltr">
                                                <div>Hello there, i&#39;m
                                                  getting this error:</div>
                                                <div><br>
                                                </div>
                                                <div>-------------------</div>
                                                <div>
                                                  <div> 11:26:50.394
                                                    [main] INFO
                                                     o.d.p.core.solver.DefaultSolver
                                                    - Solving started:
                                                    time spend (187),
                                                    score (null), new
                                                    best score (null),
                                                    random seed (0).</div>
                                                  <div>Exception in
                                                    thread &quot;main&quot;
                                                    java.lang.IllegalStateException:
                                                    The selectionOrder
                                                    (DECREASING_DIFFICULTY)
                                                    can not be used on a
                                                    PlanningEntity
                                                    (com.swa.planner.domain.CloudProcess)
                                                    that has no support
                                                    for difficulty
                                                    sorting. Check the
                                                    @PlanningEntity
                                                    annotation.</div>
                                                  <div><span style="white-space:pre-wrap">
                                                    </span>at
org.drools.planner.core.heuristic.selector.entity.PlanningEntitySelector.validate(PlanningEntitySelector.java:53)</div>
                                                  <div><span style="white-space:pre-wrap">
                                                    </span>at
org.drools.planner.core.heuristic.selector.entity.PlanningEntitySelector.phaseStarted(PlanningEntitySelector.java:45)</div>
                                                  <div><span style="white-space:pre-wrap">
                                                    </span>at
org.drools.planner.core.constructionheuristic.greedyFit.selector.GreedyPlanningEntitySelector.phaseStarted(GreedyPlanningEntitySelector.java:41)</div>
                                                  <div><span style="white-space:pre-wrap">
                                                    </span>at
org.drools.planner.core.constructionheuristic.greedyFit.DefaultGreedyFitSolverPhase.phaseStarted(DefaultGreedyFitSolverPhase.java:111)</div>
                                                  <div><span style="white-space:pre-wrap">
                                                    </span>at
org.drools.planner.core.constructionheuristic.greedyFit.DefaultGreedyFitSolverPhase.solve(DefaultGreedyFitSolverPhase.java:57)</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.CloudTest.main(CloudTest.java:51)</div>
                                                  <div>-------------------------</div>
                                                  <div><br>
                                                  </div>
                                                  <div>I know why it is
                                                    happening though (at
                                                    least i think so),
                                                    but will I have to
                                                    implement the
                                                    comparator to every
                                                    planner I do or is
                                                    there any other way
                                                    to make it work?</div>
                                                  <div><br>
                                                  </div>
                                                  <div>I&#39;m reproducing
                                                    the example from the
                                                    guide, when it
                                                    passes the drools
                                                    rules it gives that
                                                    message. I didn&#39;t
                                                    implement
                                                    CloudComputerStrengthComparator
                                                    neither CloudProcessDifficultyComparator,

                                                    will I have to
                                                    implement those so
                                                    this example works?</div>
                                                </div>
                                              </div>
                                            </blockquote>
                                          </div>
                                          <br>
                                        </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>
                              <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>
                        </div>
                      </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>
      <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></div></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></div>