On 16-07-13 15:22, jonathan.labin wrote:
It turns out that the score corruption was caused by something
unrelated. In
fact, a rule that will be removed in the re-design I am asking about. If I
see a similar problem after the re-design I'll pursue your suggestions to
determine the reason.
Great that you found it :) What exactly was causing the score
corruption?
I 'd like to document all types of score corruption in the documentation.
However I was wondering if you had more insight into the Shadow Variable vs
insertLogical() question for my domain.
I imagine that the insertLogical() approach would fire for each line of an
order (Planning Entity) and insert a fact for each type of raw material in
the order where each fact contains the number of that type of raw material.
Then, a rule with a different salience would accumulate all of these facts
to produce total counts of each type across all orders. Is this an
appropriate approach?
Yes
Does this approach break the delta score calculation?
No - do
note that the equals/hashcode of the logically inserted object
must be correct.
Will the creation, (automated) retraction, and accumulation of these
facts
create a slowdown or is this an intended use?
I don't have any decent
benchmarks yet about "Shadow Variables vs
insertLogical",
so I can't tell what's slower yet. My gut feeling would say
insertLogicals are slower...
If you do end up coding a POC for both designs, let us know about how
they compare benchmark wise.
I imagine that the Shadow Variable approach would update a similar set of
total count variables but instead do so appropriately when the Planning
Variable changes. Would the classes representing the raw material types
themselves become Planning Entities in this case?
Yes
Is this the intended use?
At first glimpse, I 'd say
insertLogical is the intended use for your
use case,
because you don't want to persist those total counts in your database,
so you don't want to make those total counts part of your domain.
Once I have more experience with shadow variables, I 'll document this
question better.
Shadow variables were invented to deal with timewindowed VRP:
insertLogicals are too much of a PITA to solve that problem
and also because score rules must not modify the domain
(because planner does not calculate the score if it can predict it).
Thanks,
Jon
--
View this message in context:
http://drools.46999.n3.nabble.com/Optaplanner-Shadow-Variables-vs-insertL...
Sent from the Drools: User forum mailing list archive at
Nabble.com.
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users