<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 class="" style="white-space:pre">        </span>at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1297)</div><div><span class="" style="white-space:pre">        </span>at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1221)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1456)</div><div><span class="" style="white-space:pre">        </span>at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:710)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:674)</div><div><span class="" style="white-space:pre">        </span>at org.drools.planner.core.score.director.drools.DroolsScoreDirector.calculateScore(DroolsScoreDirector.java:177)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.planner.core.solver.scope.DefaultSolverScope.calculateScore(DefaultSolverScope.java:92)</div><div><span class="" style="white-space:pre">        </span>at org.drools.planner.core.phase.AbstractSolverPhaseScope.calculateScore(AbstractSolverPhaseScope.java:120)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.planner.core.constructionheuristic.greedyFit.decider.DefaultGreedyDecider.processMove(DefaultGreedyDecider.java:136)</div><div><span class="" style="white-space:pre">        </span>at org.drools.planner.core.constructionheuristic.greedyFit.decider.DefaultGreedyDecider.doMove(DefaultGreedyDecider.java:110)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.planner.core.constructionheuristic.greedyFit.decider.DefaultGreedyDecider.decideNextStep(DefaultGreedyDecider.java:82)</div><div><span class="" style="white-space:pre">        </span>at org.drools.planner.core.constructionheuristic.greedyFit.DefaultGreedyFitSolverPhase.solve(DefaultGreedyFitSolverPhase.java:65)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.planner.core.solver.DefaultSolver.runSolverPhases(DefaultSolver.java:190)</div><div><span class="" style="white-space:pre">        </span>at org.drools.planner.core.solver.DefaultSolver.solve(DefaultSolver.java:155)</div>
<div><span class="" style="white-space:pre">        </span>at com.swa.planner.domain.CloudTest.main(CloudTest.java:67)</div><div>Caused by: java.lang.NullPointerException</div><div><span class="" style="white-space:pre">        </span>at java.lang.String.&lt;init&gt;(Unknown Source)</div>
<div><span class="" style="white-space:pre">        </span>at org.mvel2.util.ErrorUtil.rewriteIfNeeded(ErrorUtil.java:12)</div><div><span class="" style="white-space:pre">        </span>at org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:302)</div>
<div><span class="" style="white-space:pre">        </span>at org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62)</div><div><span class="" style="white-space:pre">        </span>at org.mvel2.MVEL.compileExpression(MVEL.java:810)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.base.mvel.MVELCompilationUnit.compile(MVELCompilationUnit.java:435)</div><div><span class="" style="white-space:pre">        </span>at org.drools.base.mvel.MVELCompilationUnit.getCompiledExpression(MVELCompilationUnit.java:238)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.rule.constraint.MvelConstraint.createMvelConditionEvaluator(MvelConstraint.java:206)</div><div><span class="" style="white-space:pre">        </span>at org.drools.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:190)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.rule.constraint.MvelConstraint.isAllowed(MvelConstraint.java:157)</div><div><span class="" style="white-space:pre">        </span>at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:137)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:497)</div><div><span class="" style="white-space:pre">        </span>at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:382)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:235)</div><div><span class="" style="white-space:pre">        </span>at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:240)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:350)</div><div><span class="" style="white-space:pre">        </span>at org.drools.common.SimpleBeliefSystem.insert(SimpleBeliefSystem.java:38)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.common.TruthMaintenanceSystem.addLogicalDependency(TruthMaintenanceSystem.java:204)</div><div><span class="" style="white-space:pre">        </span>at org.drools.common.TruthMaintenanceSystem.addLogicalDependency(TruthMaintenanceSystem.java:176)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:231)</div><div><span class="" style="white-space:pre">        </span>at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:903)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.base.DefaultKnowledgeHelper.insertLogical(DefaultKnowledgeHelper.java:245)</div><div><span class="" style="white-space:pre">        </span>at org.drools.base.DefaultKnowledgeHelper.insertLogical(DefaultKnowledgeHelper.java:210)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.base.DefaultKnowledgeHelper.insertLogical(DefaultKnowledgeHelper.java:205)</div><div><span class="" style="white-space:pre">        </span>at com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987.defaultConsequence(Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987.java:14)</div>
<div><span class="" style="white-space:pre">        </span>at com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987DefaultConsequenceInvokerGenerated.evaluate(Unknown Source)</div><div><span class="" style="white-space:pre">        </span>at com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987DefaultConsequenceInvoker.evaluate(Unknown Source)</div>
<div><span class="" style="white-space:pre">        </span>at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287)</div><div><span class="" style="white-space:pre">        </span>... 14 more</div></div><div><br></div>
<div>--------------</div><div><br></div><div style>I added to cloudprocess computer variable:</div><div style>--------------</div><div style><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 class="" style="white-space:pre">        </span>private int requiredCpuPower;</div>
<div><span class="" style="white-space:pre">        </span>private int requiredMemory;</div><div><span class="" style="white-space:pre">        </span>private int requiredNetworkBandwidth;</div><div><br></div><div><span class="" style="white-space:pre">        </span>private CloudComputer computer;</div>
<div><br></div><div><span class="" style="white-space:pre">        </span>public CloudProcess(long id, int requiredCpuPower, int requiredMemory,</div><div><span class="" style="white-space:pre">                        </span>int requiredNetworkBandwidth) {</div>
<div><span class="" style="white-space:pre">                </span>super();</div><div><span class="" style="white-space:pre">                </span>setId(id);</div><div><span class="" style="white-space:pre">                </span>this.requiredCpuPower = requiredCpuPower;</div>
<div><span class="" style="white-space:pre">                </span>this.requiredMemory = requiredMemory;</div><div><span class="" style="white-space:pre">                </span>this.requiredNetworkBandwidth = requiredNetworkBandwidth;</div><div><span class="" style="white-space:pre">        </span>}</div>
<div><span class="" style="white-space:pre">        </span></div><div><span class="" style="white-space:pre">        </span>public CloudProcess() {<span class="" style="white-space:pre">        </span>}</div><div><br></div><div><span class="" style="white-space:pre">        </span>public int getRequiredCpuPower() {</div>
<div><span class="" style="white-space:pre">                </span>return requiredCpuPower;</div><div><span class="" style="white-space:pre">        </span>}</div><div><br></div><div><span class="" style="white-space:pre">        </span>public void setRequiredCpuPower(int requiredCpuPower) {</div>
<div><span class="" style="white-space:pre">                </span>this.requiredCpuPower = requiredCpuPower;</div><div><span class="" style="white-space:pre">        </span>}</div><div><br></div><div><span class="" style="white-space:pre">        </span>public int getRequiredMemory() {</div>
<div><span class="" style="white-space:pre">                </span>return requiredMemory;</div><div><span class="" style="white-space:pre">        </span>}</div><div><br></div><div><span class="" style="white-space:pre">        </span>public void setRequiredMemory(int requiredMemory) {</div>
<div><span class="" style="white-space:pre">                </span>this.requiredMemory = requiredMemory;</div><div><span class="" style="white-space:pre">        </span>}</div><div><br></div><div><span class="" style="white-space:pre">        </span>public int getRequiredNetworkBandwidth() {</div>
<div><span class="" style="white-space:pre">                </span>return requiredNetworkBandwidth;</div><div><span class="" style="white-space:pre">        </span>}</div><div><br></div><div><span class="" style="white-space:pre">        </span>public void setRequiredNetworkBandwidth(int requiredNetworkBandwidth) {</div>
<div><span class="" style="white-space:pre">                </span>this.requiredNetworkBandwidth = requiredNetworkBandwidth;</div><div><span class="" style="white-space:pre">        </span>}</div><div><br></div><div><span class="" style="white-space:pre">        </span>public String getLabel() {</div>
<div>        return &quot;Process &quot; + id;</div><div>    }</div><div><span class="" style="white-space:pre">        </span></div><div><span class="" style="white-space:pre">        </span>@PlanningVariable(strengthComparatorClass = CloudComputerStrengthComparator.class)</div>
<div><span class="" style="white-space:pre">        </span>@ValueRange(type = ValueRangeType.FROM_SOLUTION_PROPERTY, solutionProperty = &quot;computerList&quot;)</div><div><span class="" style="white-space:pre">        </span>public CloudComputer getComputer() {</div>
<div><span class="" style="white-space:pre">                </span>if (computer == null) { return null; }</div><div><span class="" style="white-space:pre">                </span>return computer;</div><div><span class="" style="white-space:pre">        </span>}</div>
<div><br></div><div><span class="" style="white-space:pre">        </span>public void setComputer(CloudComputer computer) {</div><div><span class="" style="white-space:pre">                </span>this.computer = computer;</div><div><span class="" style="white-space:pre">        </span>}</div>
<div><span class="" style="white-space:pre">        </span></div><div><span class="" style="white-space:pre">        </span>public CloudProcess clone(){</div><div><span class="" style="white-space:pre">                </span>CloudProcess clone = new CloudProcess();</div>
<div><span class="" style="white-space:pre">                </span><a href="http://clone.id">clone.id</a> = id;</div><div><span class="" style="white-space:pre">                </span>clone.requiredCpuPower = requiredCpuPower;</div><div><span class="" style="white-space:pre">                </span>clone.requiredMemory = requiredMemory;</div>
<div><span class="" style="white-space:pre">                </span>clone.requiredNetworkBandwidth = requiredNetworkBandwidth;</div><div><span class="" style="white-space:pre">                </span>clone.computer = computer;</div><div><span class="" style="white-space:pre">                </span>return clone;</div>
<div><span class="" style="white-space:pre">        </span>}</div><div><span class="" style="white-space:pre">        </span></div><div><span class="" style="white-space:pre">        </span>public int getRequiredMultiplicand() {</div><div>        return requiredCpuPower * requiredMemory * requiredNetworkBandwidth;</div>
<div>    }</div><div>}</div><div>--------------<br></div><div><br></div><div style>this is what i&#39;m doing to run the example:</div><div style><br></div><div style>-------------</div><div style><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 class="" style="white-space:pre">        </span>public static void main(String[] args) {</div><div><span class="" style="white-space:pre">                </span>String t = &quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&gt;&quot;</div>
<div><span class="" style="white-space:pre">                                </span>+ &quot;&lt;solver&gt;&quot;</div><div><span class="" style="white-space:pre">                                </span>+ &quot;  &lt;solutionClass&gt;com.swa.planner.domain.CloudBalance&lt;/solutionClass&gt;&quot;</div>
<div><span class="" style="white-space:pre">                                </span>+ &quot;  &lt;planningEntityClass&gt;com.swa.planner.domain.CloudProcess&lt;/planningEntityClass&gt;&quot;</div><div><span class="" style="white-space:pre">                                </span>+ &quot;  &lt;scoreDirectorFactory&gt;&quot;</div>
<div><span class="" style="white-space:pre">                                </span>+ &quot;    &lt;scoreDefinitionType&gt;HARD_AND_SOFT&lt;/scoreDefinitionType&gt;&quot;</div><div><span class="" style="white-space:pre">                                </span>+ &quot;    &lt;scoreDrl&gt;/com/swa/planner/domain/rule/cloudBalancingScoreRules.drl&lt;/scoreDrl&gt;&quot;</div>
<div><span class="" style="white-space:pre">                                </span>+ &quot;  &lt;/scoreDirectorFactory&gt;&quot;</div><div><span class="" style="white-space:pre">                                </span>+ &quot;  &lt;termination&gt;&quot;</div><div><span class="" style="white-space:pre">                                </span>+ &quot;    &lt;maximumSecondsSpend&gt;120&lt;/maximumSecondsSpend&gt;&quot;</div>
<div><span class="" style="white-space:pre">                                </span>+ &quot;  &lt;/termination&gt;&quot;</div><div><span class="" style="white-space:pre">                                </span>+ &quot;  &lt;constructionHeuristic&gt;&quot;</div><div><span class="" style="white-space:pre">                                </span>+ &quot;    &lt;constructionHeuristicType&gt;FIRST_FIT_DECREASING&lt;/constructionHeuristicType&gt;&quot;</div>
<div><span class="" style="white-space:pre">                                </span>+ &quot;    &lt;constructionHeuristicPickEarlyType&gt;FIRST_LAST_STEP_SCORE_EQUAL_OR_IMPROVING&lt;/constructionHeuristicPickEarlyType&gt;&quot;</div><div><span class="" style="white-space:pre">                                </span>+ &quot;  &lt;/constructionHeuristic&gt;&quot;</div>
<div><span class="" style="white-space:pre">                                </span>+ &quot;  &lt;localSearch&gt;&quot;</div><div><span class="" style="white-space:pre">                                </span>+ &quot;    &lt;acceptor&gt;&quot;</div><div><span class="" style="white-space:pre">                                </span>+ &quot;      &lt;planningEntityTabuSize&gt;7&lt;/planningEntityTabuSize&gt;&quot;</div>
<div><span class="" style="white-space:pre">                                </span>+ &quot;    &lt;/acceptor&gt;&quot;</div><div><span class="" style="white-space:pre">                                </span>+ &quot;    &lt;forager&gt;&quot;</div><div><span class="" style="white-space:pre">                                </span>+ &quot;      &lt;minimalAcceptedSelection&gt;1000&lt;/minimalAcceptedSelection&gt;&quot;</div>
<div><span class="" style="white-space:pre">                                </span>+ &quot;    &lt;/forager&gt;&quot; </div><div><span class="" style="white-space:pre">                                </span>+ &quot;  &lt;/localSearch&gt;&quot; </div><div><span class="" style="white-space:pre">                                </span>+ &quot;&lt;/solver&gt;&quot;;</div>
<div><br></div><div><span class="" style="white-space:pre">                </span>byte b[] = t.getBytes();</div><div><span class="" style="white-space:pre">                </span>ByteArrayInputStream bt = new ByteArrayInputStream(b);</div><div><span class="" style="white-space:pre">                </span>SolverFactory solverFactory = new XmlSolverFactory().configure(bt);</div>
<div><span class="" style="white-space:pre">                </span>Solver solver = solverFactory.buildSolver();</div><div><br></div><div><span class="" style="white-space:pre">                </span>List&lt;CloudComputer&gt; computerList = new ArrayList&lt;CloudComputer&gt;();</div>
<div><span class="" style="white-space:pre">                </span>computerList.add(new CloudComputer(1L, &quot;Computador 1&quot;, 3, 2, 2, 110));</div><div><span class="" style="white-space:pre">                </span>computerList.add(new CloudComputer(2L, &quot;Computador 2&quot;, 12, 8, 3, 400));</div>
<div><span class="" style="white-space:pre">                </span>computerList.add(new CloudComputer(3L, &quot;Computador 3&quot;, 6, 6, 4, 300));</div><div><span class="" style="white-space:pre">                </span>computerList.add(new CloudComputer(4L, &quot;Computador 4&quot;, 18, 12, 8, 1000));</div>
<div><span class="" style="white-space:pre">                </span>computerList.add(new CloudComputer(5L, &quot;Computador 5&quot;, 8, 4, 6, 800));</div><div><span class="" style="white-space:pre">                </span>computerList.add(new CloudComputer(6L, &quot;Computador 6&quot;, 9, 7, 9, 1000));</div>
<div><br></div><div><span class="" style="white-space:pre">                </span>List&lt;CloudProcess&gt; processList = new ArrayList&lt;CloudProcess&gt;();</div><div><span class="" style="white-space:pre">                </span>processList.add(new CloudProcess(11L, 2, 2, 2));</div>
<div><span class="" style="white-space:pre">                </span>processList.add(new CloudProcess(12L, 4, 4, 2));</div><div><span class="" style="white-space:pre">                </span>processList.add(new CloudProcess(13L, 1, 1, 3));</div><div><span class="" style="white-space:pre">                </span>processList.add(new CloudProcess(14L, 7, 3, 5));</div>
<div><span class="" style="white-space:pre">                </span>processList.add(new CloudProcess(15L, 5, 8, 3));</div><div><span class="" style="white-space:pre">                </span>processList.add(new CloudProcess(16L, 9, 2, 2));</div><div><span class="" style="white-space:pre">                </span>processList.add(new CloudProcess(17L, 6, 5, 6));</div>
<div><br></div><div><span class="" style="white-space:pre">                </span>CloudBalance cloudBalance = new CloudBalance();</div><div><span class="" style="white-space:pre">                </span>cloudBalance.setId(0L);</div><div><span class="" style="white-space:pre">                </span>cloudBalance.setComputerList(computerList);</div>
<div><span class="" style="white-space:pre">                </span>cloudBalance.setProcessList(processList);</div><div><br></div><div><span class="" style="white-space:pre">                </span>// Solve the problem</div><div><span class="" style="white-space:pre">                </span>solver.setPlanningProblem(cloudBalance);</div>
<div><span class="" style="white-space:pre">                </span>solver.solve();</div><div><span class="" style="white-space:pre">                </span>CloudBalance solvedCloudBalance = (CloudBalance) solver.getBestSolution();</div><div><br></div>
<div><span class="" style="white-space:pre">                </span>// Display the result</div><div><span class="" style="white-space:pre">                </span>System.out.println(&quot;\nSolved cloudBalance with 5 computers and 6 processes:\n&quot;</div>
<div><span class="" style="white-space:pre">                                                </span>+ toDisplayString(solvedCloudBalance));</div><div><span class="" style="white-space:pre">        </span>}</div><div><br></div><div><span class="" style="white-space:pre">        </span>public static String toDisplayString(CloudBalance cloudBalance) {</div>
<div><span class="" style="white-space:pre">                </span>StringBuilder displayString = new StringBuilder();</div><div><span class="" style="white-space:pre">                </span>for (CloudProcess process : cloudBalance.getProcessList()) {</div>
<div><span class="" style="white-space:pre">                        </span>CloudComputer computer = process.getComputer();</div><div><span class="" style="white-space:pre">                        </span>displayString.append(&quot;  &quot;).append(process.getLabel())</div>
<div><span class="" style="white-space:pre">                                        </span>.append(&quot; -&gt; &quot;)</div><div><span class="" style="white-space:pre">                                        </span>.append(computer == null ? null : computer.getLabel())</div><div><span class="" style="white-space:pre">                                        </span>.append(&quot;\n&quot;);</div>
<div><span class="" style="white-space:pre">                </span>}</div><div><span class="" style="white-space:pre">                </span>return displayString.toString();</div><div><span class="" style="white-space:pre">        </span>}</div><div>}</div>
<div><br></div></div><div style>-------------</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">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>