2011/10/14 Geoffrey De Smet <ge0ffrey.s...@gmail.com>

> **
> Probably you forgot to notify the workingMemory.update in the doMove
> method:
>
>     public void doMove(WorkingMemory workingMemory) {
>         FactHandle factHandle = workingMemory.getFactHandle(activity);
>         activity.setAssignee(...);
>         workingMemory.update(factHandle, activity);
>     }
>
> Op 14-10-11 09:21, Geoffrey De Smet schreef:
>
> A corrupted score normally indicates a problem with the Move implementation
> (or sometimes the score drl).
>
> Basically this happened: for a number of moves, it did the move, calculated
> the score and undo the move.
> One of those move was associated with a score -10hard/0soft, that was the
> best one.
> Now, it does that move (which is now called the "step") and when it
> calculates the score it's a different score 0hard/0soft.
>
> Try TRACE environment and see if it crashes sooner. Copy paste your Move
> implementation here.
>
>
Using the TRACE environment gave the same results of DEBUG.

Here's my move implementation, as well as the snipet of drools rule file
that calculates the score based on remaining activities:

http://pastebin.mozilla.org/1355014


> In Planner 5.4 there will be 2 out-of-the-box Move implementations to use,
> so writing Move's become optional.
>
> Cool!

By the way, I'm using Drools 5.2.0 final.

Thanks,

>
> Op 13-10-11 16:37, Guilherme Kunigami schreef:
>
> Hi,
>
>  I've implemented a very simple application using drools planner
> consisting of a bunch of activities. My rule file is very simple too and
> just counts the number of activities not assigned. When I run
> Solver.solve(), I get the following error message:
>
>  Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException:
> The presumedScore (-10hard/0soft) is corrupted because it is not the
> realScore  (0hard/0soft).
>
>  Presumed workingMemory:
>   Score rule (remainingActivitiesCount) has count (1) and weight total
> (11).
> Real workingMemory:
>   Score rule (remainingActivitiesCount) has count (1) and weight total (0).
>
>  I've tracked down this message and found this piece of code
> @DefaultLocalSearchSolver.solveImplementation():
>
>   // there is no need to recalculate the score, but we still need to set
> it
>
> localSearchSolverScope.getWorkingSolution().setScore(localSearchStepScope.getScore());
> if (assertStepScoreIsUncorrupted) {
>
> localSearchSolverScope.assertWorkingScore(localSearchStepScope.getScore());
> }
>
>  It seems that the working score is never updated along the algorithm, but
> the score in the working memory changes. Thus, when we use the DEBUG
> environment, assertStepScoreIsUncorrupted is turned on and the assertion
> fails.
>
>  Should the score be updated or am I using the library incorrectly?
>
>  Thanks,
>
>
> _______________________________________________
> rules-users mailing 
> listrules-users@lists.jboss.orghttps://lists.jboss.org/mailman/listinfo/rules-users
>
>
> --
> With kind regards,
> Geoffrey De Smet
>
>
> _______________________________________________
> rules-users mailing 
> listrules-users@lists.jboss.orghttps://lists.jboss.org/mailman/listinfo/rules-users
>
>
> --
> With kind regards,
> Geoffrey De Smet
>
>
> _______________________________________________
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to