Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Setup task at the end of each task changing on condition. #74

Open
lhjk opened this issue Jan 3, 2019 · 3 comments
Open

Setup task at the end of each task changing on condition. #74

lhjk opened this issue Jan 3, 2019 · 3 comments

Comments

@lhjk
Copy link

lhjk commented Jan 3, 2019

How would I model constraints for below condition?

I have a horizon of 415 minutes per day multiplied by 20 days equaling to 8,300.
There are a set of tasks with various lengths from 10 to 4,000 minutes.
At the end of each task, there needs to be a setup task.
The length of the setup task differs depending on the machine and the task that comes before and after the setup task.
eq below)
On machine 1, if task B comes after task A, the length of the setup task after task A will be 200.
On machine 1, if task C comes after task A, the length of the setup task after task A will be 100.
On machine 1, if task C comes after task B, the length of the setup task after task A will be 150.
On machine 2, if task B comes after task A, the length of the setup task after task A will be 150.
On machine 2, if task C comes after task A, the length of the setup task after task A will be 100.
On machine 2, if task C comes after task A, the length of the setup task after task A will be 200.

Can I use constraints for such a scenario?
Or should I create tasks consisting of three tasks (two of A or B or C, and a setup task) for every possible combination and create constraints declaring all tasks other than setup tasks can only appear once?

Sorry for bad English.

@timnon
Copy link
Owner

timnon commented Jan 4, 2019

the number of periods (8300) is too large for this approach. Can you switch the granularity to 10min or even more? Then you would have roughly 40 periods per day, which is ok. Times 20 is already 800 which becomes challenging. Maybe its possible to break down the time horizon in parts and solve them separately?

The changeover setup cost you are describing are quite challenging if they have no further structure. If its possible to describe it with some numeric state changes then it becomes feasible, like:

A.state_x = 3
B.state_x = 5
A.state_y = 1
B.state_y = 3

some setup task T is required with

T.state_x = 4
T_state_y = 2

to fit in between (basically smooths out the change in numeric state). The number of different numeric states shouldnt be too large.

@lhjk
Copy link
Author

lhjk commented Jan 7, 2019

Thank you timnon for the quick response.

I might be able to switch the granularity to 10min or 5 min.
Will have to look at the data again and check.

The changeover setup cost varies depending on two characteristics of each item.

when the switch results in changing of characteristic A, setup cost will be 10
when the switch results in changing of characteristic B, setup cost will be 20
when the switch results in changing of both characteristics, setup cost will be 30

Then I believe, I will have to make states for above three variances.
However, the combination of the characteristics (the states) will be about 400.

Although the setup task T will only depend on the change of the states, so the variance will only be about 4.

when there are 4 tasks(A, B, C, D)

A.state_x = 1
B.state_x = 2
C.state_x = 1
D.state_x = 3

change of state_x between 1 and 2 will result in
T.state_x = 4
change of state_x between 2 and 3 will result in
T.state_x = 2
change of state_x between 1 and 3 will result in
T.state_x = 3
if state_x does not change
T.state_x = 1

Thank you for the response again.

@smjaberl
Copy link

smjaberl commented Feb 3, 2020

hey,

this looks like what I actually need. In my scenario there is one machine and some tasks. The machine can be equipped with different tools. These tools have setup times. If the tool doesn't change between two tasks, there is no setup time.

I didn't found the state_x or state_y attribute in the documentation and I didn't get the syntax. Why did @lhjk set T.state_x to different numbers. The state_x attribute of T is one variable, so it is overwritten with the last time setting it.

Please let me know the meaning.

regards
Jan

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants