I was given this real life problem and was asked if there would be a way to optimize this, I realize that this is akin to a job scheduling problem, but I can’t seem to grasp how to make it work with the restrictions:

Given:

A list of jobs J = { j_{1}, j_{2}, …, j_{n} } 1 $ \le$ n where each job will have a list of operations O = { o_{1}, o_{2}, …, o_{n} } 1 $ \le$ n and each operation will have a skill requirement s, a time to complete t, and a list of required tools RT = { rt_{1}, rt_{2}, …, rt_{n} } 1 $ \le$ n, RT $ \subset$ Tools = { t_{1}, t_{2}, …, t_{n} }. A job is only considered completable if all operations are completable on the same day. An operation is completable if a worker with the correct skill, tools, and time available can be assigned to the operation.

A list of workers W = { w_{1}, w_{2}, …, w_{n} } 1 $ \le$ n where each worker has a skill s, a list of owned tools OT = { ot_{1}, ot_{2}, …, ot_{n} } 1 $ \le$ n OT $ \subset$ Tools = { t_{1}, t_{2}, …, t_{n} }, and a fixed 8 hours of time available.

Output:

A list of workers to assigned operations in a day ( a schedule ) with the minimum total time wasted ( defined as the total time not spent on an operation for all workers ).

I’ve tried this from a greedy standpoint so far, but every metric I’ve considered doesn’t seem to guarantee minimum time wasted.

Note: This was a problem I tried my best to translate into a more rigidly defined problem, please let me know if I can further clarify this.