Job Shop Scheduling - handling duration in decimals

79 views
Skip to first unread message

Sridevi Balaga

unread,
May 4, 2020, 4:59:22 PM5/4/20
to OptaPlanner development
Hi Geoffrey,

I am stuck with project job shop scheduling. 
I have a job whose duration is 20 hrs ( which is 2.5 days, assuming 8hrs/day). How can I work it out?

I thought of 2 approaches
  1. Maintaining execution mode per day.
  2. My second approach is, once an execution mode is assigned to a job, update the capacity of the technicians with the remaining hours which is 4hrs for the third day. (as he needs to work 2 full days and 4hrs in 3rd day).

I am not sure if any of these approaches are feasible. Or do you have any alternative approach?
Could you please guide me here? 


Thanks in advance
Sridevi

Geoffrey De Smet

unread,
May 5, 2020, 3:11:25 AM5/5/20
to optapla...@googlegroups.com

I've seen both 1) and 2) if I understand your explanation well enough.

In 1) the difficulty is deciding the size of the fractions of that task.
For a job of 19 hours, you might think 8 + 8 + 3 hours, but what if it starts on Monday and an employee takes a half day PTO on Tuesday, then that won't be feasible.
Furthermore, the more fractions you have (19 = 8 + 4 + 3 + 2 + 1) , the more the search space explodes.
And without custom moves to move all fractions as one, it won't get anywhere good anyway.
Nah, don't do that.

The other way is to much better. In the chained through time pattern, the Shadow variable listener automatically streches across lunch, sleep and PTO times.
See the "Empire state building" job here:
assigningTimeToPlanningEntities2


https://docs.optaplanner.org/7.36.0.Final/optaplanner-docs/html_single/index.html#chainedThroughTimePattern

With kind regards,
Geoffrey De Smet

--
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/c87c2a28-3aed-4ada-b797-43aa514bcdab%40googlegroups.com.

Osamu Kuniyasu

unread,
May 19, 2020, 9:55:44 AM5/19/20
to OptaPlanner development

We had similar cases.

We approached by making a mapper that maps between the time and the index.

for example, My customer wanted to use
 a) 30min based time index.
 b) skip Weekend and Holidays
 c) skip before 7am and after 8pm.
 d) skip Lunch break from the noon to 1pm.

so, the mapper gave us index-0 for "May 19th 7:00am" if the start day is May 19th.
and the mapper returned us May 19th 7:30am for index-1.


and we found that assigned people did not like long task assignment.
so, we generated divided tasks for long task by using the specified max duration of one task.
for example, you have a task required 20 hours to finish and the max duration of one task is 6 hours. in this case, the preprocessor generates 4 tasks with [ 5, 5, 5, 5 ] hours instead of [ 6, 6, 6, 2 ] hours. (It's about leveling off as much as possible.)

I thought to give some code samples, but the preprocessor was made by mix of two 
Java utility functions and preprocessor-rules. I mean it is a complex to explain.
so I decided to give you some idea above.

Hope it helps,

Osamu Kuniyasu

2020年5月5日火曜日 16時11分25秒 UTC+9 Geoffrey De Smet:
To unsubscribe from this group and stop receiving emails from it, send an email to optapla...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages