Thank you very much, Mr. Osamu Kuniyasu.
Do you mean to add preprocessing and post-processing for each allocation, and then use them to skip weekends or holidays when an allocation's endDate locates weekends or holidays?Best regards,KentOn Friday, August 19, 2022 at 7:04:14 AM UTC+8 Osamu Kuniyasu wrote:Hi,One idea was adding preprocessing and post processing as a wrapper.the wrapper does below things.1) transfer date(day and hour) to integer index(time index), which depends on time granularities.in my case it was 30 minutes unit. the time index skips from end of business hour to beginning of next business hour, including weekends and holidays.some constraints are for date of week, early morning, evening working. it uses a function to transfer from the time index to date.2) solve by OptaPlanner.3) transfer all time index to date at the solution output.in my case, I did the preprocessing by Drools to create a PlanningSolution from input data.hope it helps,Osamu Kuniyasu2022年8月18日木曜日 14:34:43 UTC+9 kent...@gmail.com:In the Project Job Scheduling example, if some dates are holidays, the resources are not used. So, if a job crosses a holiday, its end date should be delayed. For example, if a job that duration is 2 days, it normally starts on day 1 and ends on day 2. But if the 2nd day is a holiday, then it must be delayed by 1 day, ends on day 3. If its duration is 3 days, then the end date will have to be delayed from day 3 to day 4.
How to implement this scenario in the Project Job Schedule example? I have made the following attempts on the example, but they all failed.
1. In the updatePredecessorsDoneDate method of the PredecessorsDoneDateUpdatingVariableListener class. I check if the job crosses a holiday, the predecessorsDoneDate is deferred, but throws the UndoMove corruption exception.
2. In the getEndDate method of the Allocation class. I check if the job crosses a holiday, the endDate is deferred, but a VariableListener corruption exception is thrown.
So, how to implement this function? Can you give me some ideas?Many thank you!
You received this message because you are subscribed to the Google Groups "OptaPlanner development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to optaplanner-d...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/optaplanner-dev/CADNPm8JAaczR5VY5cDpyP5w-CmXbE4amGWhQswN%2B24APDCR-Wg%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups "OptaPlanner development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to optaplanner-d...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/optaplanner-dev/e9d9d7e9-749a-4626-b2b2-3cafd35d1792n%40googlegroups.com.
You received this message because you are subscribed to a topic in the Google Groups "OptaPlanner development" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/optaplanner-dev/mjITvDLU5RU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to optaplanner-d...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/optaplanner-dev/f04b3f26-a566-4b8a-8929-ec380802e087n%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/optaplanner-dev/6cf73751-910f-42ea-9310-a7173589deb7n%40googlegroups.com.