<div>
yeah, i have a solutionEquals() and solutionHashCode() as well. I tried dumping my hashCode() and equals() methods on the PlanningEntity but that didn't seem to have much effect. My hashCode() and solutionHashCode() values now both change when I assign a different supplier, but planner still can't seem to find the entity in working memory.</div>
<div><div><br></div>--<div><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255); ">Build Smarter Software.</span><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255); "><br></span><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255); "><br></span><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255); ">Spantree Technology Group, LLC</span></div><div><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255); ">813 W Randolph St, Suite 301<br></span><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255); ">email:</span><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255); "> </span><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255); "><a href="/user/SendEmail.jtp?type=node&node=3963892&i=0" target="_top" rel="nofollow" link="external">[hidden email]</a></span><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255); "> </span><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255); ">| phone:</span><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255); "> </span><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255); "><a href="tel:773.359.3865" value="+17733593865" target="_blank">773.359.3865</a></span><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255); "><br></span><span style="font-family: arial, sans-serif; background-color: rgb(255, 255, 255); "><a href="http://www.spantree.net/" target="_blank" rel="nofollow" link="external">http://www.spantree.net</a></span></div><div><br></div></div>
<p style="color: #A0A0A8;">On Friday, May 4, 2012 at 8:51 PM, Christopher Dolan [via Drools] wrote:</p>
<blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px;">
<span><div><div>
                
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">Try just commenting out your .equals() and .hashCode() methods. My experience was that Planner is unexpectedly sensitive to hashcode algorithms, and identity equality just worked
best. I ended up implementing a solutionEquals like some of the example code.<br>
Chris<br>
<br>
<div style="font-family: Times New Roman; color: #000000; font-size: 16px">
<hr tabindex="-1">
<div style="direction: ltr;"><font color="#000000" face="Tahoma" size="2"><b>From:</b> <a href="/user/SendEmail.jtp?type=node&node=3963850&i=0" target="_top" rel="nofollow" link="external">[hidden email]</a> [<a href="/user/SendEmail.jtp?type=node&node=3963850&i=1" target="_top" rel="nofollow" link="external">[hidden email]</a>] on behalf of Cedric Hurst [<a href="/user/SendEmail.jtp?type=node&node=3963850&i=2" target="_top" rel="nofollow" link="external">[hidden email]</a>]<br>
<b>Sent:</b> Friday, May 04, 2012 5:09 PM<br>
<b>To:</b> <a href="/user/SendEmail.jtp?type=node&node=3963850&i=3" target="_top" rel="nofollow" link="external">[hidden email]</a><br>
<b>Subject:</b> [rules-users] Drools Planner: entity was never added to this ScoreDirector?<br>
</font><br>
</div>
<div>
<p>Hi all,</p>
<p>I'm working on a Drools Planner 5.4.0.CR1 implementation for a scheduling app.</p>
<p>First, some background:</p>
<p>The solution class is 'Schedule' and the PlanningEntity is 'Meeting'. Meetings consist of timeslots (or 'slots'), and two participants in complimentary roles 'planners' and 'suppliers'. Since there are more planners than suppliers, I've structured the Schedule
model so that its meeting collection is basically the cross-product of slots and planners. Suppliers are configured as the @PlanningVariable in a meeting. The meeting list in the schedule is also annotated as a @PlanningEntityCollectionProperty. I've structured
three MoveFactories that add, subtract or swap suppliers from meeting to meeting.</p>
<p>That part works fairly well, however, when I try to try to run my solution through a Solver, I am inevitably plagued with a dreaded message like this:</p>
<pre>        java.lang.IllegalArgumentException: The entity (Meeting[slot: 26, planner: 29C2E0FF-00EE-409F-B05B-B175B30A6B45, supplier: BB25B297-54FA-45BD-923A-C209848E74B4,
        hashCode: 1219749520, solutionHashCode: -1086095971, slotHashCode: 436282962, plannerHashCode: -2037841459]) was never added to this ScoreDirector.
                at org.drools.planner.core.score.director.drools.DroolsScoreDirector.afterAllVariablesChanged(DroolsScoreDirector.java:110)
                at org.drools.planner.core.score.director.drools.DroolsScoreDirector.afterVariableChanged(DroolsScoreDirector.java:120)
                at com.somecompany.scheduler.moves.AddSupplierToMeetingMove.doMove(AddSupplierToMeetingMove.groovy:36)
                at org.drools.planner.core.localsearch.decider.DefaultDecider.doMove(DefaultDecider.java:128)
                at org.drools.planner.core.localsearch.decider.DefaultDecider.decideNextStep(DefaultDecider.java:103)
                at org.drools.planner.core.localsearch.DefaultLocalSearchSolverPhase.solve(DefaultLocalSearchSolverPhase.java:57)
                at org.drools.planner.core.solver.DefaultSolver.runSolverPhases(DefaultSolver.java:183)
                at org.drools.planner.core.solver.DefaultSolver.solve(DefaultSolver.java:151)
                at org.spockframework.util.GroovyRuntimeUtil.invokeMethod(GroovyRuntimeUtil.java:100)
                at com.somecompany.scheduler.solver.SolverSpec.should solve schedule(SolverSpec.groovy:59)
</pre>
<p>It seems to happen randomly, with different entities each time, but I've not yet had a successful run of a full solve cycle without hitting it a least once. Unfortunately, it kills my whole process.</p>
<p>I've step debugged through the planner internals and verified that all the meetings are getting added to the working memory, including the offending one:</p>
<pre>        2012-05-04 16:30:17,379 INFO com.somecompany.scheduler.solver.SolverSpec - Meeting[slot: 26, planner: 29C2E0FF-00EE-409F-B05B-B175B30A6B45, supplier:
        FEA76C13-C9E2-42EC-977C-BCBB0BD1FFA0, hashCode: 1219749520, solutionHashCode: -574491332, slotHashCode: 436282962, plannerHashCode: -2037841459]
</pre>
<p>I was pretty certain my issue has to do with the meeting's hashCode value, but as you'll see they're exactly the same in working memory as they are when . I'm using commons HashCodeBuilder and EqualsBuilder to check only the fixed slot and planner values.
The solutionHashCode changes based on the slot, planner and supplier-- supplier being the @PlanningVariable. I've pasted the full log, with trace enabled, here for review:</p>
<a href="https://gist.github.com/raw/93752853a0996ae1c016/d0ca35f5c531a2fa25e6a106c90257b015500931/solver-error.log" target="_top" rel="nofollow" link="external">https://gist.github.com/raw/93752853a0996ae1c016/d0ca35f5c531a2fa25e6a106c90257b015500931/solver-error.log</a>
<p>The error is listed at 2012-05-04 16:30:37,168.</p>
<p>The original meeting in working memory is listed at 2012-05-04 16:30:17,379 (toward the middle of entries with that timestamp).</p>
<p></p>
<p>I couldn't find an easy way to add a knowledge session logger in planner, but that might also be useful.</p>
<br>
<hr align="left" width="300">
View this message in context: <a href="http://drools.46999.n3.nabble.com/Drools-Planner-entity-was-never-added-to-this-ScoreDirector-tp3963528.html" target="_blank" rel="nofollow" link="external">
Drools Planner: entity was never added to this ScoreDirector?</a><br>
Sent from the <a href="http://drools.46999.n3.nabble.com/Drools-User-forum-f47000.html" target="_blank" rel="nofollow" link="external">
Drools: User forum mailing list archive</a> at <a href="http://Nabble.com" target="_top" rel="nofollow" link="external">Nabble.com</a>.<br>
</div>
</div>
</div>
<br>_______________________________________________
<br>rules-users mailing list
<br><a href="/user/SendEmail.jtp?type=node&node=3963850&i=4" target="_top" rel="nofollow" link="external">[hidden email]</a>
<br><a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_top" rel="nofollow" link="external">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
                
        <br>
        <br>
        <hr noshade="noshade" size="1" color="#cccccc">
        <div style="color:#444; font: 12px tahoma,geneva,helvetica,arial,sans-serif;">
                <div style="font-weight:bold">If you reply to this email, your message will be added to the discussion below:</div>
                <a href="http://drools.46999.n3.nabble.com/Drools-Planner-entity-was-never-added-to-this-ScoreDirector-tp3963528p3963850.html" target="_top" rel="nofollow" link="external">http://drools.46999.n3.nabble.com/Drools-Planner-entity-was-never-added-to-this-ScoreDirector-tp3963528p3963850.html</a>
        </div>
        <div style="color:#666; font: 11px tahoma,geneva,helvetica,arial,sans-serif;margin-top:.4em;line-height:1.5em">
                        
                To unsubscribe from Drools Planner: entity was never added to this ScoreDirector?, <a href="" target="_top" rel="nofollow" link="external">click here</a>.<br>
                <a href="http://drools.46999.n3.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml" rel="nofollow" style="font:9px serif" target="_top" link="external">NAML</a>
        </div></div></div></span>
</blockquote>
<div>
<br>
</div>
        
<br/><hr align="left" width="300" />
View this message in context: <a href="http://drools.46999.n3.nabble.com/Re-rules-users-Drools-Planner-entity-was-never-added-to-this-ScoreDirector-tp3963892.html">Re: [rules-users] Drools Planner: entity was never added to this ScoreDirector?</a><br/>
Sent from the <a href="http://drools.46999.n3.nabble.com/Drools-User-forum-f47000.html">Drools: User forum mailing list archive</a> at Nabble.com.<br/>