<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Basically, this is fixed for 6.0.0.Beta1 (unreleased).<br>
    <br>
    Read further if you want to understand why this was a problem before
    6.0.0.Beta1<br>
    <div class="moz-cite-prefix">Op 23-01-13 14:13, Michiel Vermandel
      schreef:<br>
    </div>
    <blockquote
      cite="mid:1358946789.32658.YahooMailNeo@web161302.mail.bf1.yahoo.com"
      type="cite">
      <div style="color:#000; background-color:#fff; font-family:arial,
        helvetica, sans-serif;font-size:10pt">
        <div>Hi,</div>
        <div><br>
        </div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;">I am trying to use a <span>CustomSolverPhaseCommand
            (</span><span><span></span><span>SolutionInitializer</span>)
            to analyze what happens if I start with a given
            configuration.</span></div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><span><br>
          </span></div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;">I get <span>java.lang.IllegalArgumentException:

            The entity ({T= Inspect B747-XA2.I#0 [1-&gt;3] null null})
            was never added to this ScoreDirector.</span></div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><span><br>
          </span></div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;">If I keep the
          constructionHeuristic phase before the <span></span><span>SolutionInitializer
            then it works, but if I remove the </span>constructionHeuristic
          phase and thus start with my <span></span><span>SolutionInitializerthen
            I get the exception.<br>
          </span></div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><br>
          <span></span></div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><span>I reduced my </span><span>SolutionInitializer
            to a minmal but the issue remains.</span></div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;">What am I doing wrong?</div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><br>
        </div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><span
            style="text-decoration: underline;">This is my <span></span><span>SolutionInitializer:</span></span><br>
          <span></span></div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><span></span><br>
          <span></span></div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><span>package
            planner.solution;<br>
            <br>
            import
            org.drools.planner.core.phase.custom.CustomSolverPhaseCommand;<br>
            import org.drools.planner.core.score.Score;<br>
            import org.drools.planner.core.score.director.ScoreDirector;<br>
            import org.slf4j.Logger;<br>
            import org.slf4j.LoggerFactory;<br>
            <br>
            import planner.app.InspectionSchedule;<br>
            import planner.domain.Task;<br>
            <br>
            public class SolutionInitializer implements
            CustomSolverPhaseCommand {<br>
            <br>
            &nbsp;&nbsp;&nbsp; private Logger logger =
            LoggerFactory.getLogger(this.getClass());<br>
            <br>
            &nbsp;&nbsp;&nbsp; public void changeWorkingSolution(ScoreDirector
            scoreDirector) {<br>
            <br>
            &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; InspectionSchedule schedule = (InspectionSchedule)
            scoreDirector.getWorkingSolution();<br>
            &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Task task = schedule.getTasks().get(0);<br>
          </span></div>
      </div>
    </blockquote>
    if task.getPeriod() returns null, then 5.5 has not inserted that
    Task into the working memory yet (while 6.0 will),<br>
    so you need to do something like<br>
    if (task.getPeriod() == null) {<br>
    &nbsp;&nbsp; scoreDirector.beforeEntityAdded(task);<br>
    &nbsp;&nbsp; scoreDirector.afterEntityAdded(task);<br>
    }<br>
    // and continue with <span>beforeVariableChanged (although you can
      optimize this if-else stuff)<br>
    </span>
    <blockquote
      cite="mid:1358946789.32658.YahooMailNeo@web161302.mail.bf1.yahoo.com"
      type="cite">
      <div style="color:#000; background-color:#fff; font-family:arial,
        helvetica, sans-serif;font-size:10pt">
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
            scoreDirector.beforeVariableChanged(task, "period");<br>
          </span></div>
      </div>
    </blockquote>
    <blockquote
      cite="mid:1358946789.32658.YahooMailNeo@web161302.mail.bf1.yahoo.com"
      type="cite">
      <div style="color:#000; background-color:#fff; font-family:arial,
        helvetica, sans-serif;font-size:10pt">
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
            task.setPeriod(schedule.getPeriods().get(0));<br>
            &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; scoreDirector.afterVariableChanged(task, "period");<br>
            <br>
            &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; score = scoreDirector.calculateScore();<br>
            &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logger.debug("Score after custom: " + score);<br>
            <br>
            &nbsp;&nbsp;&nbsp; }<br>
            <br>
            }</span></div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><br>
        </div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><span
            style="text-decoration: underline;">planning configuration:</span></div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><br>
        </div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;">&lt;?xml version="1.0"
          encoding="UTF-8"?&gt;<br>
          &lt;solver&gt;<br>
          &nbsp;&nbsp;&nbsp; &lt;environmentMode&gt;DEBUG&lt;/environmentMode&gt;<br>
          <br>
          &nbsp;&nbsp;&nbsp; &lt;!-- Domain model configuration --&gt;<br>
          &nbsp;&nbsp;&nbsp;
&lt;solutionClass&gt;be.axi.planner.app.InspectionSchedule&lt;/solutionClass&gt;<br>
          &nbsp;&nbsp;&nbsp;
&lt;planningEntityClass&gt;be.axi.planner.domain.Task&lt;/planningEntityClass&gt;<br>
          <br>
          &nbsp;&nbsp;&nbsp; &lt;!-- Score configuration --&gt;<br>
          &nbsp;&nbsp;&nbsp; &lt;scoreDirectorFactory&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
          &lt;scoreDefinitionType&gt;HARD_AND_SOFT&lt;/scoreDefinitionType&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;scoreDrl&gt;/inspectionRules.drl&lt;/scoreDrl&gt;<br>
          &nbsp;&nbsp;&nbsp; &lt;/scoreDirectorFactory&gt;<br>
          &nbsp;&nbsp;&nbsp; <br>
          <span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &lt;customSolverPhase&gt;<br>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;customSolverPhaseCommandClass&gt;be.axi.planner.solution.SolutionInitializer&lt;/customSolverPhaseCommandClass&gt;<br>
            &nbsp;&nbsp;&nbsp; &lt;/customSolverPhase&gt;</span><br>
          &nbsp;&nbsp;&nbsp;&nbsp; <br>
          &nbsp;&nbsp;&nbsp; &lt;localSearch&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;termination&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&lt;terminationCompositionStyle&gt;OR&lt;/terminationCompositionStyle&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
          &lt;maximumSecondsSpend&gt;3600&lt;/maximumSecondsSpend&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
          &lt;scoreAttained&gt;0hard/0soft&lt;/scoreAttained&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/termination&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;unionMoveSelector&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;changeMoveSelector&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;valueSelector&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
          &lt;planningVariableName&gt;type&lt;/planningVariableName&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/valueSelector&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/changeMoveSelector&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;changeMoveSelector&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;valueSelector&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
          &lt;planningVariableName&gt;spector&lt;/planningVariableName&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/valueSelector&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/changeMoveSelector&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;changeMoveSelector&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;valueSelector&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
          &lt;planningVariableName&gt;period&lt;/planningVariableName&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/valueSelector&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/changeMoveSelector&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/unionMoveSelector&gt;<br>
          <br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;acceptor&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          &lt;planningEntityTabuSize&gt;7&lt;/planningEntityTabuSize&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/acceptor&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;forager&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          &lt;minimalAcceptedSelection&gt;1000&lt;/minimalAcceptedSelection&gt;<br>
          &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/forager&gt;<br>
          &nbsp;&nbsp;&nbsp; &lt;/localSearch&gt;<br>
          &lt;/solver&gt;<br>
        </div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><br>
        </div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><span
            style="text-decoration: underline;">Stack trace:</span><br>
          <span></span></div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><br>
          <span></span></div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><span>java.lang.IllegalArgumentException:
            The entity ({T= Inspect B747-XA2.I#0 [1-&gt;3] null null})
            was never added to this ScoreDirector.<br>
            &nbsp;&nbsp;&nbsp; at
org.drools.planner.core.score.director.drools.DroolsScoreDirector.afterVariableChanged(DroolsScoreDirector.java:125)<br>
            &nbsp;&nbsp;&nbsp; at
planner.solution.SolutionInitializer.changeWorkingSolution(SolutionInitializer2.java:24)<br>
            &nbsp;&nbsp;&nbsp; at
org.drools.planner.core.phase.custom.DefaultCustomSolverPhase.solve(DefaultCustomSolverPhase.java:58)<br>
            &nbsp;&nbsp;&nbsp; at
org.drools.planner.core.solver.DefaultSolver.runSolverPhases(DefaultSolver.java:190)<br>
            &nbsp;&nbsp;&nbsp; at
org.drools.planner.core.solver.DefaultSolver.solve(DefaultSolver.java:155)<br>
            &nbsp;&nbsp;&nbsp; at
            planner.app.InspectionSchedule.solve(InspectionSchedule.java:192)<br>
            &nbsp;&nbsp;&nbsp; at
planner.testcore.AbstractPlanningTestClass.solve(AbstractPlanningTestClass.java:288)<br>
            &nbsp;&nbsp;&nbsp; at
planner.testcore.AbstractPlanningTestClass.solve(AbstractPlanningTestClass.java:298)<br>
            &nbsp;&nbsp;&nbsp; at
planner.testcore.AbstractPlanningTestClass.solve(AbstractPlanningTestClass.java:315)<br>
            &nbsp;&nbsp;&nbsp; at
            planner.TaskGroupingTest.communitySuccess02(TaskGroupingTest.java:289)<br>
            &nbsp;&nbsp;&nbsp; at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
            Method)<br>
            &nbsp;&nbsp;&nbsp; at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown
            Source)<br>
            &nbsp;&nbsp;&nbsp; at
            sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
            Source)<br>
            &nbsp;&nbsp;&nbsp; at java.lang.reflect.Method.invoke(Unknown Source)<br>
            &nbsp;&nbsp;&nbsp; at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)<br>
            &nbsp;&nbsp;&nbsp; at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)<br>
            &nbsp;&nbsp;&nbsp; at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)<br>
            &nbsp;&nbsp;&nbsp; at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)<br>
            &nbsp;&nbsp;&nbsp; at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)<br>
            &nbsp;&nbsp;&nbsp; at
org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)<br>
            &nbsp;&nbsp;&nbsp; at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)<br>
            &nbsp;&nbsp;&nbsp; at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)<br>
            &nbsp;&nbsp;&nbsp; at
            org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)<br>
            &nbsp;&nbsp;&nbsp; at
            org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)<br>
            &nbsp;&nbsp;&nbsp; at
            org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)<br>
            &nbsp;&nbsp;&nbsp; at
            org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)<br>
            &nbsp;&nbsp;&nbsp; at
            org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)<br>
            &nbsp;&nbsp;&nbsp; at
            org.junit.runners.ParentRunner.run(ParentRunner.java:236)<br>
            &nbsp;&nbsp;&nbsp; at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)<br>
            &nbsp;&nbsp;&nbsp; at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)<br>
            &nbsp;&nbsp;&nbsp; at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)<br>
            &nbsp;&nbsp;&nbsp; at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)<br>
            &nbsp;&nbsp;&nbsp; at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)<br>
            &nbsp;&nbsp;&nbsp; at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)<br>
            <br>
            Thanks,</span></div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><br>
          <span></span></div>
        <div style="color: rgb(0, 0, 0); font-size: 13.3333px;
          font-family: arial,helvetica,sans-serif; background-color:
          transparent; font-style: normal;"><span>Michiel</span></div>
        <div>&nbsp;</div>
        <div>-----------------<br>
          <a class="moz-txt-link-freetext" href="http://www.codessentials.com">http://www.codessentials.com</a> - Your essential software, for
          free!<br>
          Follow us at <a class="moz-txt-link-freetext" href="http://twitter.com/#!/Codessentials">http://twitter.com/#!/Codessentials</a></div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
rules-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>