Scheduling Software Toy Problem

Posting this question in all scheduler threads! Super interested to hear the approaches and/or limitations on all of em for those that wish to share. I’m trying to keep this more as a scenario so new members may see highlighted differences in scheduling softwares when searching this forum. Pseudo-code solutions and screenshots from the software are highly encouraged! Let’s all upvote the best solution as well :star_struck:, hey the most upvoted solution a vendor could even share!

Set-Up

Let’s assume I have a system composed of 5 devices. The devices are named like NAME(AVAILABLE PLATE POSITIONS)

System = {ARM(1), INCUBATOR(32), DISPENSER(1), HOTEL(10), READER(1)}

  • :face_with_raised_eyebrow: - The time it takes to move any plate between any plate position is 90 s.

Let’s say my lab has 3 scientists and I only have one plate type to make things easier.

Actors = {Alice, Bob, Charlie}

And my automation engineers have written programs on the scheduler to do some actions. Here is where the solution comes in though yeah??

Programs = { ??? }
The bulk of the solution lays in the composition of this set of programs

Problem

Using a collection of programs written in this threads scheduler software in addition to maybe some cultural policies around using the integrated system. How could I handle the following scenario and keep Alice, Bob, and Charlie happy.

Alice comes into the lab in the morning with 3 plates to incubate for 72 hrs. She places them on the HOTEL and presses go. Bob then comes into the lab late 4 hours later - 68 hours remaining until Alice wants to retrieve her incubated plates. He has two things to do today. He can either read 4 samples plates he has ready by placing them on the hotel and running a program, or he can wash 2 sample plates by placing them on the hotel first and running a program. Each read will take 45 minutes. Each wash will take 15 minutes. The way he will decide will be at the flip of the coin. He flips the coin and goes to the system to press go on his program. Bob is impatient so he wants to do one of his two tasks as soon as possible.
A total of 70hrs have elapsed and Bob has completed his tasks leaving only Alice & Charlie with tasks to complete.
Charlie needs to read 10 sample plates! If he is allowed to he will set up all his plate in the hotel and press go. Charlie waits for no one. Each of his plates takes 1 hr to read. This plate hotel is magical by the way and can keep sample plates at whatever tempt they need. It is highly preferred by Charlie he not have to wait for Alice to wrap up to begin his sample reading. Like wise Alice was a good scientist and had a long commute and planned to come into lab to get her incubated plates. Both Alice and Charlie would like to wait the minimum amount of time for them to process their plates.

@smohler

I feel like there’s some info missing.

What is Alice doing after the incubation? Is Charlie’s plate read a kinetic assay so it needs live in the reader or is it just incubating in the reader instead of in the incubator? Also is Alice concerned that she needs to physically remain present to look at the data after they’re read? Did Bob run his processes within the 70 hours of time that have elapsed or is he trying to run stuff 70 hours after incubation?

1 Like

I’ll keep clarifying! But of course the point of a toy problem is just to have fun with constraints. I mean could you explain how if you had that information it would make the problem easier to solve?

Fair point, I can share why this information is critical.

Modern schedulers have built in scheduling capabilities that are centered around constraints for inputs and outputs. The scenario you’re describing is a dynamic setup, not static, and so there’s a bit more requirement gathering that’s involved to come up with a solution.

With dynamic processes, information about constraints (timing, prioritization, instruments) or the necessity for variabilization becomes critical.

If Bob’s washing 2 plates but each wash takes 15 minutes, you can easily fit that within an incubation or 1 hour enzymatic reading step. With a dynamic scheduler, they can also be run side by side because they’re not even using the same instrument outside of the arm! An arm moving around plates can take fractions of a minute so it may not even end up ever being a constraint.

It’s also important to note how much wiggle room you have with processes, reagents, samples, etc… For example, your isolated DNA can be run right away or it can be 18 hours from now (as long as you store it.) However your enzymatic assay probably needs to start running within an hour after being scheduled. Well what’s neat here is that clearly the first process gives you a lot of freedom to schedule as you please. A modern scheduler with that constraint info can help orchestrate that for you and then you can sign off on it.

IMO these dynamic capabilities are a must for any workcell that’s not linear, otherwise you’re implementing an extremely manual set of logic rules and the possibility for conflict increases among the scientists. And if you’re going to do that, you may as well build something in-house.

Some of the crazier trends will use a combo of inputs to determine optimal scheduling (LIMS, Scheduler & cloud service provider).

We used to talk about how liquid class development/optimization was the last mile but IMO that’s changed.

1 Like

Tried to clarify some more timing constraints.

You certainly can have Charlie just wait for Alice’s plate to be returned to the empty plate hotel, but then Charlie will be mad. We can’t ask Charlie to just come in earlier right after Bob is done as well. We also can’t have Alice, Bob, and Charlie all execute their programs (or program) at the same time as their isn’t enough room on the plate hotel, and Bob is late so he can’t make it.

If Charlie’s plates are useless after they’ve been read, we can dump them.

69:50 - Charlie loads 10 plates (10/10 hotel slots occupied)
70:00 - 1 plate read (9/10 slots occupied)
71:00 - 1 plate dumped, 2nd plate reading (8/10 slots occupied)
72:00 - 2nd plate dumped, 3rd plate reading (7/10 slots occupied)
72:01 - Return Alice’s plates (10/10 slots occupied)

Sounds like you have a plan to execute on some scheduling software :rofl:

Where will you tell the system to trash plates on a simulation system though if all you have are the devices listed though, you could stash them in the incubator I guess.

The only devices and positions the scheduler knows about are the ones listed.

Oh yeah the better solution is to tell Charlie to eat dirt.

He can only run 7 plates because of his piss poor ability to plan experiments. And then when the incubated plates return to the hotel, the other scientists will have like 5 hours to grab their plates so that Charlie can load the next 3.

Even the craziest integrated workcells require a baseline of competence.

3 Likes

We have to keep waiting until some brave sole gives it an actual attempt. :saluting_face:

Nah you don’t really have any more options without more info.

You could temporarily store some of the plates elsewhere but we don’t know that storing samples in an incubator is bad practice or leaving them exposed on a reader is bad. And I can’t assume it’s okay because that would be generally considered bad practice anyway.

There’s still too much missing information.

This is a very interesting problem and topic idea in general. I think there is not enough information to give an exact programmatic solution but still interesting to think about breaking the problem down.

A: Incubate 3 plates in parallel for 72 hours, t=0
B: Read 4 plates, 45 minutes each, in sequence or wash 2 plates for 15 minutes, t=4
C: Read 10 plates, 1 hour each, in sequence at t=70

So we have a conflict at t=72 when Alice comes in to pull her plates and Charlie has already started what he is doing. So we either let Charlie finish and Alice has to wait, or Alice gets to pull her plates and Charlie has to wait. But there is no detail on how long it takes to pull plates from the incubator, that could happen instantaneously (might as well be instant for practical purposes). Can we just interrupt Charlie between his 2nd and 3rd plates? That seems to pose no problems.

Edit: I misread the hotel capacity, will reconsider

The third option is that Charlies can load 7 plates of his 10 with 3 slots reserved in the hotel for Alice’s workflow. Charlie will be 2-3 plates into his workflow with a whopping 4-5 hours before plates 8-10 will start to be processed. That’s more than enough time to swap out Alice’s plates with his, set it up and head home. This also allows Charlie to start some data analysis of his 10 plate process. It minimizes the down time as a whole because Alice doesn’t have to wait a whopping 10 hours to grab her plate and Charlie doesn’t have to wait an extra 2 hours to start his 10 plate process.

1 Like

Added the time it takes to move plates with the robot arm, but again does that data help besides setting a number in a simulator. If the time it takes to move plate is (t>=0) the conflict will still exist and the problem of Alice and Charlie doesn’t go away.

If we were writing solutions against scheduling softwares I think people would see how setting that simulator time delta doesn’t much change the situation between Alice and Charlie.

I think with just discussion much of the issue of Alice and Bob co-existing isn’t addressed as it highlights the differences of some of the scheduling softwares out there.

Super love the discussion already brewing tho! Thanks for jumping in @Stefan!

1 Like

Also again @luisvillaautomata the points you’re bringing are the “bad lab practice” type of issue.

But like yes 100%. That is totally the point here. These toy problems are more for poking and prodding the software and tools we use as engineers.

This is a great thought experiment but I don’t love the example problem that you proposed. It gets me thinking about how one approaches these conversations with vendors and to a larger extent how to structure the requirement data. We are dealing with different problems than the standard long duration cell culture assay but would still like to use the same sort of tools. It would be useful to have a standardized method for naming assets, processes with timings, dependencies, priorities, etc in the same way that flow charts have become standard. There are some R and python packages for scheduling tasks not related to lab robotics that I would like to leverage. The first step is getting the input data arranged into an input that the tool can use. On the other hand one could generate this parameter set and then approach vendors for a solution.

1 Like

Well maybe in people trying to solve toy problems that ontology would naturally arise from the community!

2 Likes

There are vendors and software platforms that don’t even require you to have anything defined at all.

You can customize it, break it, rebuild it as you figure it out.

You get the freedom.

There are other vendors where almost everything has to go through them.

Yeah, definitely. I hope I didn’t come off too negative about your initial post, but I was more excited about how you were initializing the system in the ‘set up’. Eventually you have to translate your word problem into a set of ‘equations’ or a gui equivalent setup. I’ve been looking into opensource tools for resource allocation and the inputs that they use for solving the problems. Esp how to structure that data. I would be interested to see where task sets with different complexities needed different solutions and what is the most cost effective. @luisvillaautomata I really like the figure it out part esp if you could change the number of instruments to see the value of buying other equipment to alleviate bottle necks. Like in the example adding another plate reader for charlie’s plates vs another hotel. So here is an example of tool and how they structuring data: https://www.r-users.gal/sites/default/files/2020-10_15_xornada_r_juan_carlos_goncalves_dosantos_presentacion.pdf

Well hey, seems at least the liquid handling toy problem has some traction.

What does this mean!

Are lab automation schedulers just not developed enough to super be used as playful engineering tools yet…

:roll_eyes:

Where’s the fun in that :cry: