<html><body><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->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> private Logger logger = LoggerFactory.getLogger(this.getClass());<br><br> public void changeWorkingSolution(ScoreDirector scoreDirector) {<br><br> InspectionSchedule schedule = (InspectionSchedule) scoreDirector.getWorkingSolution();<br> Task task = schedule.getTasks().get(0);<br>
scoreDirector.beforeVariableChanged(task, "period");<br> task.setPeriod(schedule.getPeriods().get(0));<br> scoreDirector.afterVariableChanged(task, "period");<br><br> score = scoreDirector.calculateScore();<br> logger.debug("Score after custom: " + score);<br><br> }<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;"><?xml version="1.0" encoding="UTF-8"?><br><solver><br> <environmentMode>DEBUG</environmentMode><br><br> <!-- Domain model configuration --><br> <solutionClass>be.axi.planner.app.InspectionSchedule</solutionClass><br> <planningEntityClass>be.axi.planner.domain.Task</planningEntityClass><br><br> <!-- Score configuration --><br> <scoreDirectorFactory><br> <scoreDefinitionType>HARD_AND_SOFT</scoreDefinitionType><br> <scoreDrl>/inspectionRules.drl</scoreDrl><br>
</scoreDirectorFactory><br> <br><span style="font-weight: bold;"> <customSolverPhase><br> <customSolverPhaseCommandClass>be.axi.planner.solution.SolutionInitializer</customSolverPhaseCommandClass><br> </customSolverPhase></span><br> <br> <localSearch><br> <termination><br> <terminationCompositionStyle>OR</terminationCompositionStyle><br> <maximumSecondsSpend>3600</maximumSecondsSpend><br> <scoreAttained>0hard/0soft</scoreAttained><br> </termination><br>
<unionMoveSelector><br> <changeMoveSelector><br> <valueSelector><br> <planningVariableName>type</planningVariableName><br> </valueSelector><br> </changeMoveSelector><br> <changeMoveSelector><br> <valueSelector><br> <planningVariableName>spector</planningVariableName><br>
</valueSelector><br> </changeMoveSelector><br> <changeMoveSelector><br> <valueSelector><br> <planningVariableName>period</planningVariableName><br> </valueSelector><br> </changeMoveSelector><br> </unionMoveSelector><br><br> <acceptor><br> <planningEntityTabuSize>7</planningEntityTabuSize><br>
</acceptor><br> <forager><br> <minimalAcceptedSelection>1000</minimalAcceptedSelection><br> </forager><br> </localSearch><br></solver><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->3] null null}) was never added to this ScoreDirector.<br> at org.drools.planner.core.score.director.drools.DroolsScoreDirector.afterVariableChanged(DroolsScoreDirector.java:125)<br> at planner.solution.SolutionInitializer.changeWorkingSolution(SolutionInitializer2.java:24)<br> at org.drools.planner.core.phase.custom.DefaultCustomSolverPhase.solve(DefaultCustomSolverPhase.java:58)<br> at org.drools.planner.core.solver.DefaultSolver.runSolverPhases(DefaultSolver.java:190)<br> at org.drools.planner.core.solver.DefaultSolver.solve(DefaultSolver.java:155)<br> at planner.app.InspectionSchedule.solve(InspectionSchedule.java:192)<br> at
planner.testcore.AbstractPlanningTestClass.solve(AbstractPlanningTestClass.java:288)<br> at planner.testcore.AbstractPlanningTestClass.solve(AbstractPlanningTestClass.java:298)<br> at planner.testcore.AbstractPlanningTestClass.solve(AbstractPlanningTestClass.java:315)<br> at planner.TaskGroupingTest.communitySuccess02(TaskGroupingTest.java:289)<br> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<br> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)<br> at java.lang.reflect.Method.invoke(Unknown Source)<br> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)<br> at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)<br> at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)<br> at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)<br> at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)<br> at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)<br> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)<br> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)<br> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)<br> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)<br> at
org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)<br> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)<br> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)<br> at org.junit.runners.ParentRunner.run(ParentRunner.java:236)<br> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)<br> at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)<br> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)<br> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)<br> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)<br> 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> </div><div>-----------------<br>http://www.codessentials.com - Your essential software, for free!<br>Follow us at http://twitter.com/#!/Codessentials</div></div></body></html>