[rules-users] Drools Planner: Planning variable gets assigned value out of valueRange
Geoffrey De Smet
ge0ffrey.spam at gmail.com
Wed Nov 28 03:47:08 EST 2012
Op 27-11-12 14:16, mr_moe schreef:
> Hey,
>
> I have a planning entity, which has one planning variable called startDate.
> This variable has a defined discrete value range which is a list of numbers
> of the type long. Every number represents a timestamp, which is in between
> the number firstPossibleStartDate and lastPossibleStartDate.
>
> During the planning process, the number 0 is sometimes assigned to the
> planning variable which is definitely not part of the valueRange. I’ve
> printed the list to the console, but all values in the list are fine.
>
> Because every planning entity has its own valueRange, the range is defined
> in the entity itself.
>
> At the moment I’ve implemented my own mover, but the problem occurs also
> with pre-configured mover.
>
> During my research I’ve stumbled upon the following note in the Planner
> Documentation:
> ValueRange from planning entity is currently not yet supported by the new
> MoveSelectors.
> Does this has something to do with my problem?
Yes, this is the one known issue (regression even) with the new selector
architecture (which has brought many benefits):
It basically breaks @ValueRange(type =
ValueRangeType.FROM_PLANNING_ENTITY_PROPERTY, ...) currently.
I should probably have failed-fast that for 5.5 if that gets used.
I am hoping to resolve this for 6.0 so FROM_PLANNING_ENTITY_PROPERTY
does work in the new selector architecture.
To do that properly, I need to put the construction heuristics on the
new selector architecture first.
>
> Enclosed you will find the code of the planning entity.
>
> @PlanningEntity
> public class DroolTask {
> private List<Long> startDateList;
> private int id;
> private String name;
> private long duration;
> private long firstPossibleStartDate;
> private long lastPossibleStartDate;
> private String nextTask = "";
> private String previousTask = "";
>
> // Planning variables: changes during planning, between score calculations.
> private long startDate;
>
> @PlanningVariable
> @ValueRange(type = ValueRangeType.FROM_PLANNING_ENTITY_PROPERTY,
> planningEntityProperty = "startDateList")
> public long getStartDate(){
> return startDate;
> }
>
> public void setStartDate(long startDate){
> this.startDate = startDate;
> }
>
>
> public List<Long> getStartDateList(){
> return this.startDateList;
> }
>
> public void setStartDateList(){
> startDateList = getPossibleStartDate();
> }
>
> public List<Long> getPossibleStartDate(){
> startDateList = new ArrayList<Long>();
> for(long i = firstPossibleStartDate; i<=lastPossibleStartDate; i = i +
> 60){
> startDateList.add(i);
> }
> return startDateList;
> }
>
> public Long getFirstPossibleStartDate(){
> return firstPossibleStartDate;
> }
>
> public void setFirstPossibleStartDate(long firstPossibleStartDate){
> this.firstPossibleStartDate = firstPossibleStartDate;
> }
>
> public Long getLastPossibleStartDate(){
> return lastPossibleStartDate;
> }
>
> public void setLastPossibleStartDate(long lastPossibleEndDate){
> this.lastPossibleStartDate = lastPossibleEndDate;
> }
>
> [...]
>
>
> public DroolTask clone(){
> DroolTask clone = new DroolTask();
>
> clone.name = name;
> clone.duration = duration;
> clone.firstPossibleStartDate = firstPossibleStartDate;
> clone.lastPossibleStartDate = lastPossibleStartDate;
> clone.startDate = startDate;
> clone.nextTask = nextTask;
> clone.previousTask = previousTask;
> clone.startDateList = startDateList;
>
> return clone;
> }
>
> [...]
> }
>
> It would be great, if someone could give me a hint.
> Many thanks,
>
> Moe
>
>
>
> --
> View this message in context: http://drools.46999.n3.nabble.com/Drools-Planner-Planning-variable-gets-assigned-value-out-of-valueRange-tp4020984.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
>
> _______________________________________________
> 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