Op 07-01-13 09:08, Reinis schreef:
Hello Sreeni,
> 2. in scenario b, I do not want to run the solver for best solution.
This is what I interpret from your question:
1. you have some sort of working solution that is manually optimized to
some degree (by human?);
2. you are willing to determine what constraints are still violated
based on a rule base you created with drools but WITHOUT changing the
actual manual working solution and WITHOUT running solver for multiple
times;
If this interpretation is correct, there is a way in drools planner to
calculate score once and iterate working memory looking for constraint
occurrences. WARNING, this API is intended to be internal and thus
subject to a likely change:
ScoreDirector scoreDirector =
solver.getScoreDirectorFactory().buildScoreDirector();
scoreDirector.setWorkingSolution(schedule);
scoreDirector.calculateScore(); <- only once, causes working
memory to fire all rules but does not involve solver "search loop"
The
part above is documented in the manual. Look for guiScoreDirector.
WorkingMemory workingMemory = ((DroolsScoreDirector)
scoreDirector).getWorkingMemory();
Iterator<ConstraintOccurrence> it =
(Iterator<ConstraintOccurrence>) workingMemory
.iterateObjects(new
ClassObjectFilter(ConstraintOccurrence.class));
while (it.hasNext()) {
//here you collect constraint occurrences and prepare your
report
}
That part isn't documented in the manual, but it works :)
Hope this helps, for a complete example of the usage of this (internal!)
api see drools planner examples from Geoffrey on Git.
Also look into
"immovable entities" (see manual). You 'll need that if
you want to combine scenario a and b.
br
Reinis
On 01/07/2013 04:38 AM, Sreeni Maheshwaram wrote:
> Hi,
>
> Could you please advise:
>
> I am using the Drools Planner (5.5) to a) optimize the solution
> and get best
> solution b) allow the manual solution and resolve the conflicts,
> based on
> the business requirement.
>
> 1. scenario a is straight forward. I could run the solver, get
> the best
> solution, set it to the ScoreDirector as working solution, get the
> constraints from the working memory.
>
> 2. in scenario b, I do not want to run the solver for best
> solution. When I
> set the manual solution as a working solution on the
> ScoreDirector, I could
> not get the constraints.
>
> As a work around, either I have to run the solver in scenario b
> for some
> time to get the constraints, which I can not afford and I do not
> think the
> constraints relate to the manual solution.
>
> Is there a way to get cosntraints based on the manual solution without
> running the solver?
>
> regards,
> Sreeni
>
>
>
> --
> View this message in context:
>
http://drools.46999.n3.nabble.com/Retrieving-constraints-based-on-a-manua...
> Sent from the Drools: User forum mailing list archive at
Nabble.com.
>
>
>
>
> --
> Thanks, Sreeni M
>
>
>
> --
> Thanks, Sreeni M
>
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users