[rules-users] Fwd: Retrieving constraints based on a manual solution
Reinis
drools at orbit-x.de
Mon Jan 7 03:08:09 EST 2013
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"
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
}
Hope this helps, for a complete example of the usage of this (internal!)
api see drools planner examples from Geoffrey on Git.
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-manual-solution-tp4021357.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
>
>
>
>
> --
> Thanks, Sreeni M
>
>
>
> --
> Thanks, Sreeni M
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
More information about the rules-users
mailing list