| task_name,problem_type,instruction,instance,solution,obj,instance_variant,solution_variant,context_index,input_format,input_index_base |
| JSP,JSP,"Recently the kitchen got busier, so the head chef started sketching start times for every recipe step, making sure each step sits on its assigned counter or oven for the exact time, that steps for a dish follow one after another, and that no appliance is doing two jobs at once. The point is to get every order out as soon as possible β check when each dish is completed, pick the latest completion time as the end of the shift, and try to make that latest time as small as possible. Nothing can be skipped or duplicated in the plan, and the concrete details will be shown below. |
|
|
| Below are the concrete details: 8 dishes across 3 stations β dish identifiers J1, J2, J3, J4, J5, J6, J7, J8 and station identifiers A, B, C. |
|
|
| | dish_id | step_index | station_id | step_duration | |
| |---|---|---|---| |
| | J1 | 0 | C | 1 | |
| | J1 | 1 | B | 52 | |
| | J1 | 2 | A | 73 | |
| | J2 | 0 | A | 27 | |
| | J2 | 1 | B | 38 | |
| | J2 | 2 | C | 20 | |
| | J3 | 0 | C | 97 | |
| | J3 | 1 | B | 51 | |
| | J3 | 2 | A | 53 | |
| | J4 | 0 | C | 26 | |
| | J4 | 1 | A | 11 | |
| | J4 | 2 | B | 81 | |
| | J5 | 0 | C | 90 | |
| | J5 | 1 | A | 45 | |
| | J5 | 2 | B | 25 | |
| | J6 | 0 | C | 25 | |
| | J6 | 1 | B | 19 | |
| | J6 | 2 | A | 33 | |
| | J7 | 0 | C | 11 | |
| | J7 | 1 | A | 80 | |
| | J7 | 2 | B | 53 | |
| | J8 | 0 | B | 84 | |
| | J8 | 1 | A | 73 | |
| | J8 | 2 | C | 8 | |
|
|
| The head chef will place every step from these lines so no station is double-booked and the latest dish completion (the shift end) is minimized. |
|
|
| Also, when you send the schedule back, please stick to a simple JSON layout β something like this: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| This shows the shape Iβm expecting: ""solution"" is a list of jobs (dishes), each job has an id and a list of tasks (steps). For each task you give its index in the job, the planned start time, which machine (counter/oven) it uses, and how long it runs. Think of it as a simple form: one object per dish, and an ordered list of the steps with times and machines. |
|
|
| This JSON is only a sketch of the expected shape, not the actual schedule. Please use the exact identifiers from the instance input β do not rename them or invent new labels. |
|
|
| Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 3, 'nr_jobs': 8, 'jobs': [[[2, 1], [1, 52], [0, 73]], [[0, 27], [1, 38], [2, 20]], [[2, 97], [1, 51], [0, 53]], [[2, 26], [0, 11], [1, 81]], [[2, 90], [0, 45], [1, 25]], [[2, 25], [1, 19], [0, 33]], [[2, 11], [0, 80], [1, 53]], [[1, 84], [0, 73], [2, 8]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 108, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 173, 'machine': 1, 'duration': 52}, {'task': 2, 'start': 244, 'machine': 0, 'duration': 73}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 27}, {'task': 1, 'start': 84, 'machine': 1, 'duration': 38}, {'task': 2, 'start': 160, 'machine': 2, 'duration': 20}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 11, 'machine': 2, 'duration': 97}, {'task': 1, 'start': 122, 'machine': 1, 'duration': 51}, {'task': 2, 'start': 191, 'machine': 0, 'duration': 53}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 109, 'machine': 2, 'duration': 26}, {'task': 1, 'start': 180, 'machine': 0, 'duration': 11}, {'task': 2, 'start': 297, 'machine': 1, 'duration': 81}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 188, 'machine': 2, 'duration': 90}, {'task': 1, 'start': 317, 'machine': 0, 'duration': 45}, {'task': 2, 'start': 378, 'machine': 1, 'duration': 25}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 135, 'machine': 2, 'duration': 25}, {'task': 1, 'start': 225, 'machine': 1, 'duration': 19}, {'task': 2, 'start': 362, 'machine': 0, 'duration': 33}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 11}, {'task': 1, 'start': 27, 'machine': 0, 'duration': 80}, {'task': 2, 'start': 244, 'machine': 1, 'duration': 53}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 84}, {'task': 1, 'start': 107, 'machine': 0, 'duration': 73}, {'task': 2, 'start': 180, 'machine': 2, 'duration': 8}]}]",403.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': ['A', 'B', 'C'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'C', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'B', 'duration': 52}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'A', 'duration': 73}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'A', 'duration': 27}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'B', 'duration': 38}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'C', 'duration': 20}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'C', 'duration': 97}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'B', 'duration': 51}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'A', 'duration': 53}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'C', 'duration': 26}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'A', 'duration': 11}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'B', 'duration': 81}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'C', 'duration': 90}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'A', 'duration': 45}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'B', 'duration': 25}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'C', 'duration': 25}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'B', 'duration': 19}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'A', 'duration': 33}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 'C', 'duration': 11}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 'A', 'duration': 80}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 'B', 'duration': 53}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 'B', 'duration': 84}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 'A', 'duration': 73}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 'C', 'duration': 8}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 108, 'machine': 'C', 'duration': 1}, {'task': 1, 'start': 173, 'machine': 'B', 'duration': 52}, {'task': 2, 'start': 244, 'machine': 'A', 'duration': 73}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 'A', 'duration': 27}, {'task': 1, 'start': 84, 'machine': 'B', 'duration': 38}, {'task': 2, 'start': 160, 'machine': 'C', 'duration': 20}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 11, 'machine': 'C', 'duration': 97}, {'task': 1, 'start': 122, 'machine': 'B', 'duration': 51}, {'task': 2, 'start': 191, 'machine': 'A', 'duration': 53}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 109, 'machine': 'C', 'duration': 26}, {'task': 1, 'start': 180, 'machine': 'A', 'duration': 11}, {'task': 2, 'start': 297, 'machine': 'B', 'duration': 81}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 188, 'machine': 'C', 'duration': 90}, {'task': 1, 'start': 317, 'machine': 'A', 'duration': 45}, {'task': 2, 'start': 378, 'machine': 'B', 'duration': 25}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 135, 'machine': 'C', 'duration': 25}, {'task': 1, 'start': 225, 'machine': 'B', 'duration': 19}, {'task': 2, 'start': 362, 'machine': 'A', 'duration': 33}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 11}, {'task': 1, 'start': 27, 'machine': 'A', 'duration': 80}, {'task': 2, 'start': 244, 'machine': 'B', 'duration': 53}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 84}, {'task': 1, 'start': 107, 'machine': 'A', 'duration': 73}, {'task': 2, 'start': 180, 'machine': 'C', 'duration': 8}]}]",1,markdown_table,names |
| JSP,JSP,"Recently the team was handed several rooms to renovate, each with a step-by-step checklist, and the role was to place each step on its proper machine and time slot. The rules were simple in practice: donβt let a machine handle overlapping tasks, keep the room steps in their given sequence, and donβt skip or repeat any tasks. The success of a schedule is judged by how soon the last job completes β check the clock when the final task ends to see which plan is better. The concrete breakdown of tasks and durations is listed below. |
|
|
| { |
| ""num_rooms"": 6, |
| ""num_machines"": 5, |
| ""room_ids"": [ |
| ""J1"", |
| ""J2"", |
| ""J3"", |
| ""J4"", |
| ""J5"", |
| ""J6"" |
| ], |
| ""machine_ids"": [ |
| ""A"", |
| ""B"", |
| ""C"", |
| ""D"", |
| ""E"" |
| ], |
| ""tasks"": [ |
| { |
| ""room_id"": ""J1"", |
| ""task_index"": 0, |
| ""required_machine_id"": ""C"", |
| ""task_duration"": 1 |
| }, |
| { |
| ""room_id"": ""J1"", |
| ""task_index"": 1, |
| ""required_machine_id"": ""D"", |
| ""task_duration"": 65 |
| }, |
| { |
| ""room_id"": ""J1"", |
| ""task_index"": 2, |
| ""required_machine_id"": ""B"", |
| ""task_duration"": 49 |
| }, |
| { |
| ""room_id"": ""J1"", |
| ""task_index"": 3, |
| ""required_machine_id"": ""E"", |
| ""task_duration"": 72 |
| }, |
| { |
| ""room_id"": ""J1"", |
| ""task_index"": 4, |
| ""required_machine_id"": ""A"", |
| ""task_duration"": 90 |
| }, |
| { |
| ""room_id"": ""J2"", |
| ""task_index"": 0, |
| ""required_machine_id"": ""D"", |
| ""task_duration"": 42 |
| }, |
| { |
| ""room_id"": ""J2"", |
| ""task_index"": 1, |
| ""required_machine_id"": ""E"", |
| ""task_duration"": 3 |
| }, |
| { |
| ""room_id"": ""J2"", |
| ""task_index"": 2, |
| ""required_machine_id"": ""B"", |
| ""task_duration"": 19 |
| }, |
| { |
| ""room_id"": ""J2"", |
| ""task_index"": 3, |
| ""required_machine_id"": ""A"", |
| ""task_duration"": 21 |
| }, |
| { |
| ""room_id"": ""J2"", |
| ""task_index"": 4, |
| ""required_machine_id"": ""C"", |
| ""task_duration"": 19 |
| }, |
| { |
| ""room_id"": ""J3"", |
| ""task_index"": 0, |
| ""required_machine_id"": ""C"", |
| ""task_duration"": 49 |
| }, |
| { |
| ""room_id"": ""J3"", |
| ""task_index"": 1, |
| ""required_machine_id"": ""D"", |
| ""task_duration"": 34 |
| }, |
| { |
| ""room_id"": ""J3"", |
| ""task_index"": 2, |
| ""required_machine_id"": ""B"", |
| ""task_duration"": 73 |
| }, |
| { |
| ""room_id"": ""J3"", |
| ""task_index"": 3, |
| ""required_machine_id"": ""E"", |
| ""task_duration"": 49 |
| }, |
| { |
| ""room_id"": ""J3"", |
| ""task_index"": 4, |
| ""required_machine_id"": ""A"", |
| ""task_duration"": 30 |
| }, |
| { |
| ""room_id"": ""J4"", |
| ""task_index"": 0, |
| ""required_machine_id"": ""D"", |
| ""task_duration"": 77 |
| }, |
| { |
| ""room_id"": ""J4"", |
| ""task_index"": 1, |
| ""required_machine_id"": ""E"", |
| ""task_duration"": 86 |
| }, |
| { |
| ""room_id"": ""J4"", |
| ""task_index"": 2, |
| ""required_machine_id"": ""C"", |
| ""task_duration"": 33 |
| }, |
| { |
| ""room_id"": ""J4"", |
| ""task_index"": 3, |
| ""required_machine_id"": ""A"", |
| ""task_duration"": 49 |
| }, |
| { |
| ""room_id"": ""J4"", |
| ""task_index"": 4, |
| ""required_machine_id"": ""B"", |
| ""task_duration"": 87 |
| }, |
| { |
| ""room_id"": ""J5"", |
| ""task_index"": 0, |
| ""required_machine_id"": ""C"", |
| ""task_duration"": 95 |
| }, |
| { |
| ""room_id"": ""J5"", |
| ""task_index"": 1, |
| ""required_machine_id"": ""A"", |
| ""task_duration"": 53 |
| }, |
| { |
| ""room_id"": ""J5"", |
| ""task_index"": 2, |
| ""required_machine_id"": ""D"", |
| ""task_duration"": 33 |
| }, |
| { |
| ""room_id"": ""J5"", |
| ""task_index"": 3, |
| ""required_machine_id"": ""E"", |
| ""task_duration"": 1 |
| }, |
| { |
| ""room_id"": ""J5"", |
| ""task_index"": 4, |
| ""required_machine_id"": ""B"", |
| ""task_duration"": 39 |
| }, |
| { |
| ""room_id"": ""J6"", |
| ""task_index"": 0, |
| ""required_machine_id"": ""D"", |
| ""task_duration"": 66 |
| }, |
| { |
| ""room_id"": ""J6"", |
| ""task_index"": 1, |
| ""required_machine_id"": ""C"", |
| ""task_duration"": 95 |
| }, |
| { |
| ""room_id"": ""J6"", |
| ""task_index"": 2, |
| ""required_machine_id"": ""A"", |
| ""task_duration"": 12 |
| }, |
| { |
| ""room_id"": ""J6"", |
| ""task_index"": 3, |
| ""required_machine_id"": ""B"", |
| ""task_duration"": 88 |
| }, |
| { |
| ""room_id"": ""J6"", |
| ""task_index"": 4, |
| ""required_machine_id"": ""E"", |
| ""task_duration"": 15 |
| } |
| ] |
| } |
|
|
| Also, to keep things neat when you send back a plan, please follow this simple JSON layout for the schedule: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it like a little form: ""solution"" holds all the rooms (jobs), each job entry names the job and then lists its steps. Each step shows which numbered step it is, when it starts, which machine it's on, and how long it runs. It's just a sketch of the shape I need, not the final schedule itself. |
|
|
| Please make sure to use the exact identifiers from the instance input β no renaming and no inventing new labels. |
| - for example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 5, 'nr_jobs': 6, 'jobs': [[[2, 1], [3, 65], [1, 49], [4, 72], [0, 90]], [[3, 42], [4, 3], [1, 19], [0, 21], [2, 19]], [[2, 49], [3, 34], [1, 73], [4, 49], [0, 30]], [[3, 77], [4, 86], [2, 33], [0, 49], [1, 87]], [[2, 95], [0, 53], [3, 33], [4, 1], [1, 39]], [[3, 66], [2, 95], [0, 12], [1, 88], [4, 15]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 49, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 111, 'machine': 3, 'duration': 65}, {'task': 2, 'start': 184, 'machine': 1, 'duration': 49}, {'task': 3, 'start': 287, 'machine': 4, 'duration': 72}, {'task': 4, 'start': 372, 'machine': 0, 'duration': 90}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 242, 'machine': 3, 'duration': 42}, {'task': 1, 'start': 284, 'machine': 4, 'duration': 3}, {'task': 2, 'start': 332, 'machine': 1, 'duration': 19}, {'task': 3, 'start': 351, 'machine': 0, 'duration': 21}, {'task': 4, 'start': 372, 'machine': 2, 'duration': 19}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 49}, {'task': 1, 'start': 77, 'machine': 3, 'duration': 34}, {'task': 2, 'start': 111, 'machine': 1, 'duration': 73}, {'task': 3, 'start': 184, 'machine': 4, 'duration': 49}, {'task': 4, 'start': 245, 'machine': 0, 'duration': 30}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 77}, {'task': 1, 'start': 77, 'machine': 4, 'duration': 86}, {'task': 2, 'start': 163, 'machine': 2, 'duration': 33}, {'task': 3, 'start': 196, 'machine': 0, 'duration': 49}, {'task': 4, 'start': 245, 'machine': 1, 'duration': 87}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 50, 'machine': 2, 'duration': 95}, {'task': 1, 'start': 275, 'machine': 0, 'duration': 53}, {'task': 2, 'start': 328, 'machine': 3, 'duration': 33}, {'task': 3, 'start': 361, 'machine': 4, 'duration': 1}, {'task': 4, 'start': 439, 'machine': 1, 'duration': 39}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 176, 'machine': 3, 'duration': 66}, {'task': 1, 'start': 242, 'machine': 2, 'duration': 95}, {'task': 2, 'start': 337, 'machine': 0, 'duration': 12}, {'task': 3, 'start': 351, 'machine': 1, 'duration': 88}, {'task': 4, 'start': 439, 'machine': 4, 'duration': 15}]}]",478.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 5, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': ['A', 'B', 'C', 'D', 'E'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'C', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'D', 'duration': 65}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'B', 'duration': 49}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 'E', 'duration': 72}, {'job_id': 'J1', 'task_id': 4, 'machine_id': 'A', 'duration': 90}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'D', 'duration': 42}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'E', 'duration': 3}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'B', 'duration': 19}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 'A', 'duration': 21}, {'job_id': 'J2', 'task_id': 4, 'machine_id': 'C', 'duration': 19}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'C', 'duration': 49}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'D', 'duration': 34}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'B', 'duration': 73}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 'E', 'duration': 49}, {'job_id': 'J3', 'task_id': 4, 'machine_id': 'A', 'duration': 30}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'D', 'duration': 77}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'E', 'duration': 86}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'C', 'duration': 33}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 'A', 'duration': 49}, {'job_id': 'J4', 'task_id': 4, 'machine_id': 'B', 'duration': 87}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'C', 'duration': 95}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'A', 'duration': 53}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'D', 'duration': 33}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 'E', 'duration': 1}, {'job_id': 'J5', 'task_id': 4, 'machine_id': 'B', 'duration': 39}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'D', 'duration': 66}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'C', 'duration': 95}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'A', 'duration': 12}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 'B', 'duration': 88}, {'job_id': 'J6', 'task_id': 4, 'machine_id': 'E', 'duration': 15}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 49, 'machine': 'C', 'duration': 1}, {'task': 1, 'start': 111, 'machine': 'D', 'duration': 65}, {'task': 2, 'start': 184, 'machine': 'B', 'duration': 49}, {'task': 3, 'start': 287, 'machine': 'E', 'duration': 72}, {'task': 4, 'start': 372, 'machine': 'A', 'duration': 90}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 242, 'machine': 'D', 'duration': 42}, {'task': 1, 'start': 284, 'machine': 'E', 'duration': 3}, {'task': 2, 'start': 332, 'machine': 'B', 'duration': 19}, {'task': 3, 'start': 351, 'machine': 'A', 'duration': 21}, {'task': 4, 'start': 372, 'machine': 'C', 'duration': 19}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 49}, {'task': 1, 'start': 77, 'machine': 'D', 'duration': 34}, {'task': 2, 'start': 111, 'machine': 'B', 'duration': 73}, {'task': 3, 'start': 184, 'machine': 'E', 'duration': 49}, {'task': 4, 'start': 245, 'machine': 'A', 'duration': 30}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 'D', 'duration': 77}, {'task': 1, 'start': 77, 'machine': 'E', 'duration': 86}, {'task': 2, 'start': 163, 'machine': 'C', 'duration': 33}, {'task': 3, 'start': 196, 'machine': 'A', 'duration': 49}, {'task': 4, 'start': 245, 'machine': 'B', 'duration': 87}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 50, 'machine': 'C', 'duration': 95}, {'task': 1, 'start': 275, 'machine': 'A', 'duration': 53}, {'task': 2, 'start': 328, 'machine': 'D', 'duration': 33}, {'task': 3, 'start': 361, 'machine': 'E', 'duration': 1}, {'task': 4, 'start': 439, 'machine': 'B', 'duration': 39}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 176, 'machine': 'D', 'duration': 66}, {'task': 1, 'start': 242, 'machine': 'C', 'duration': 95}, {'task': 2, 'start': 337, 'machine': 'A', 'duration': 12}, {'task': 3, 'start': 351, 'machine': 'B', 'duration': 88}, {'task': 4, 'start': 439, 'machine': 'E', 'duration': 15}]}]",2,json,names |
| JSP,JSP,"Lately the shop has been trying to speed things up: every coat and dress has a fixed series of treatments on particular machines for specific times, and none of those steps can be rearranged. The job is to schedule those treatments so machines arenβt double-booked and every step for every garment occurs once and in order. What counts is the clock reading when the final garment is finished β the earlier, the better. The exact instance details are listed below. |
|
|
| { |
| ""num_garments"": 7, |
| ""num_machines"": 3, |
| ""garment_ids"": [ |
| ""J1"", |
| ""J2"", |
| ""J3"", |
| ""J4"", |
| ""J5"", |
| ""J6"", |
| ""J7"" |
| ], |
| ""machine_ids"": [ |
| ""A"", |
| ""B"", |
| ""C"" |
| ], |
| ""tasks"": [ |
| { |
| ""garment_id"": ""J1"", |
| ""treatment_index"": 0, |
| ""required_machine_id"": ""B"", |
| ""treatment_duration"": 1 |
| }, |
| { |
| ""garment_id"": ""J1"", |
| ""treatment_index"": 1, |
| ""required_machine_id"": ""C"", |
| ""treatment_duration"": 78 |
| }, |
| { |
| ""garment_id"": ""J1"", |
| ""treatment_index"": 2, |
| ""required_machine_id"": ""A"", |
| ""treatment_duration"": 25 |
| }, |
| { |
| ""garment_id"": ""J2"", |
| ""treatment_index"": 0, |
| ""required_machine_id"": ""C"", |
| ""treatment_duration"": 18 |
| }, |
| { |
| ""garment_id"": ""J2"", |
| ""treatment_index"": 1, |
| ""required_machine_id"": ""B"", |
| ""treatment_duration"": 44 |
| }, |
| { |
| ""garment_id"": ""J2"", |
| ""treatment_index"": 2, |
| ""required_machine_id"": ""A"", |
| ""treatment_duration"": 63 |
| }, |
| { |
| ""garment_id"": ""J3"", |
| ""treatment_index"": 0, |
| ""required_machine_id"": ""B"", |
| ""treatment_duration"": 7 |
| }, |
| { |
| ""garment_id"": ""J3"", |
| ""treatment_index"": 1, |
| ""required_machine_id"": ""C"", |
| ""treatment_duration"": 87 |
| }, |
| { |
| ""garment_id"": ""J3"", |
| ""treatment_index"": 2, |
| ""required_machine_id"": ""A"", |
| ""treatment_duration"": 89 |
| }, |
| { |
| ""garment_id"": ""J4"", |
| ""treatment_index"": 0, |
| ""required_machine_id"": ""A"", |
| ""treatment_duration"": 13 |
| }, |
| { |
| ""garment_id"": ""J4"", |
| ""treatment_index"": 1, |
| ""required_machine_id"": ""C"", |
| ""treatment_duration"": 87 |
| }, |
| { |
| ""garment_id"": ""J4"", |
| ""treatment_index"": 2, |
| ""required_machine_id"": ""B"", |
| ""treatment_duration"": 85 |
| }, |
| { |
| ""garment_id"": ""J5"", |
| ""treatment_index"": 0, |
| ""required_machine_id"": ""B"", |
| ""treatment_duration"": 56 |
| }, |
| { |
| ""garment_id"": ""J5"", |
| ""treatment_index"": 1, |
| ""required_machine_id"": ""A"", |
| ""treatment_duration"": 52 |
| }, |
| { |
| ""garment_id"": ""J5"", |
| ""treatment_index"": 2, |
| ""required_machine_id"": ""C"", |
| ""treatment_duration"": 35 |
| }, |
| { |
| ""garment_id"": ""J6"", |
| ""treatment_index"": 0, |
| ""required_machine_id"": ""B"", |
| ""treatment_duration"": 31 |
| }, |
| { |
| ""garment_id"": ""J6"", |
| ""treatment_index"": 1, |
| ""required_machine_id"": ""A"", |
| ""treatment_duration"": 53 |
| }, |
| { |
| ""garment_id"": ""J6"", |
| ""treatment_index"": 2, |
| ""required_machine_id"": ""C"", |
| ""treatment_duration"": 34 |
| }, |
| { |
| ""garment_id"": ""J7"", |
| ""treatment_index"": 0, |
| ""required_machine_id"": ""B"", |
| ""treatment_duration"": 87 |
| }, |
| { |
| ""garment_id"": ""J7"", |
| ""treatment_index"": 1, |
| ""required_machine_id"": ""C"", |
| ""treatment_duration"": 94 |
| }, |
| { |
| ""garment_id"": ""J7"", |
| ""treatment_index"": 2, |
| ""required_machine_id"": ""A"", |
| ""treatment_duration"": 37 |
| } |
| ] |
| } |
|
|
| Also, when you send back the schedule, please use a simple JSON layout so it's easy to parse and check β something that looks like this: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it like a little form: each top-level entry is a job, ""job"" is the job identifier, ""tasks"" is the ordered list of steps for that job, and each step shows which task number it is, when it starts, which machine it runs on, and how long it lasts. It's just the shape I expect β not the real schedule yet. |
|
|
| Please be sure to use the exact identifiers from the instance input β do not rename them or invent new labels. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 3, 'nr_jobs': 7, 'jobs': [[[1, 1], [2, 78], [0, 25]], [[2, 18], [1, 44], [0, 63]], [[1, 7], [2, 87], [0, 89]], [[0, 13], [2, 87], [1, 85]], [[1, 56], [0, 52], [2, 35]], [[1, 31], [0, 53], [2, 34]], [[1, 87], [2, 94], [0, 37]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 31, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 105, 'machine': 2, 'duration': 78}, {'task': 2, 'start': 404, 'machine': 0, 'duration': 25}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 18}, {'task': 1, 'start': 119, 'machine': 1, 'duration': 44}, {'task': 2, 'start': 163, 'machine': 0, 'duration': 63}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 163, 'machine': 1, 'duration': 7}, {'task': 1, 'start': 183, 'machine': 2, 'duration': 87}, {'task': 2, 'start': 278, 'machine': 0, 'duration': 89}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 13}, {'task': 1, 'start': 18, 'machine': 2, 'duration': 87}, {'task': 2, 'start': 226, 'machine': 1, 'duration': 85}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 170, 'machine': 1, 'duration': 56}, {'task': 1, 'start': 226, 'machine': 0, 'duration': 52}, {'task': 2, 'start': 398, 'machine': 2, 'duration': 35}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 31}, {'task': 1, 'start': 31, 'machine': 0, 'duration': 53}, {'task': 2, 'start': 364, 'machine': 2, 'duration': 34}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 32, 'machine': 1, 'duration': 87}, {'task': 1, 'start': 270, 'machine': 2, 'duration': 94}, {'task': 2, 'start': 367, 'machine': 0, 'duration': 37}]}]",433.0,"{'problem_type': 'JSP', 'nr_jobs': 7, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7'], 'machines': ['A', 'B', 'C'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'B', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'C', 'duration': 78}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'A', 'duration': 25}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'C', 'duration': 18}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'B', 'duration': 44}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'A', 'duration': 63}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'B', 'duration': 7}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'C', 'duration': 87}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'A', 'duration': 89}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'A', 'duration': 13}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'C', 'duration': 87}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'B', 'duration': 85}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'B', 'duration': 56}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'A', 'duration': 52}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'C', 'duration': 35}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'B', 'duration': 31}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'A', 'duration': 53}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'C', 'duration': 34}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 'B', 'duration': 87}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 'C', 'duration': 94}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 'A', 'duration': 37}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 31, 'machine': 'B', 'duration': 1}, {'task': 1, 'start': 105, 'machine': 'C', 'duration': 78}, {'task': 2, 'start': 404, 'machine': 'A', 'duration': 25}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 18}, {'task': 1, 'start': 119, 'machine': 'B', 'duration': 44}, {'task': 2, 'start': 163, 'machine': 'A', 'duration': 63}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 163, 'machine': 'B', 'duration': 7}, {'task': 1, 'start': 183, 'machine': 'C', 'duration': 87}, {'task': 2, 'start': 278, 'machine': 'A', 'duration': 89}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 'A', 'duration': 13}, {'task': 1, 'start': 18, 'machine': 'C', 'duration': 87}, {'task': 2, 'start': 226, 'machine': 'B', 'duration': 85}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 170, 'machine': 'B', 'duration': 56}, {'task': 1, 'start': 226, 'machine': 'A', 'duration': 52}, {'task': 2, 'start': 398, 'machine': 'C', 'duration': 35}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 31}, {'task': 1, 'start': 31, 'machine': 'A', 'duration': 53}, {'task': 2, 'start': 364, 'machine': 'C', 'duration': 34}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 32, 'machine': 'B', 'duration': 87}, {'task': 1, 'start': 270, 'machine': 'C', 'duration': 94}, {'task': 2, 'start': 367, 'machine': 'A', 'duration': 37}]}]",3,json,names |
| JSP,JSP,"Iβm coordinating the bays today: each car has a set route through the shop β a defined order of tasks, each bound to a particular bay or tool for a set duration. The job is to pick start times so that no bay or tool is handling overlapping work, each vehicleβs steps happen in sequence, and every required operation is scheduled once. The aim is to have the last car leave as quickly as possible; the time when that last car finishes is the single number used to judge plans, and smaller is better. The concrete details are listed below. |
|
|
| |
| |
| |
| |
| vehicle_id,step_index,bay_id,step_duration |
| J1,0,B,1 |
| J1,1,C,92 |
| J1,2,A,1 |
| J2,0,B,64 |
| J2,1,C,97 |
| J2,2,A,85 |
| J3,0,C,12 |
| J3,1,A,55 |
| J3,2,B,57 |
| J4,0,C,7 |
| J4,1,A,26 |
| J4,2,B,37 |
| J5,0,A,39 |
| J5,1,C,56 |
| J5,2,B,41 |
| J6,0,C,83 |
| J6,1,B,20 |
| J6,2,A,35 |
|
|
| If you want to give me the plan in a tidy, machine-friendly way, just follow this relaxed JSON layout β something like this will do: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| This is just a little form to fill in: ""solution"" holds all the cars, each entry names the job, and inside ""tasks"" you list each step with which numbered task it is, when it starts, which bay/tool (machine) it uses, and how long it runs. Think of it like filling out a work order for each car β nothing fancy, just the basic fields. Itβs only a sketch of the expected shape, not the actual schedule. |
|
|
| Please use the exact identifiers from the instance input β donβt rename jobs or machines or invent new labels. |
| - for example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 3, 'nr_jobs': 6, 'jobs': [[[1, 1], [2, 92], [0, 1]], [[1, 64], [2, 97], [0, 85]], [[2, 12], [0, 55], [1, 57]], [[2, 7], [0, 26], [1, 37]], [[0, 39], [2, 56], [1, 41]], [[2, 83], [1, 20], [0, 35]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 64, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 255, 'machine': 2, 'duration': 92}, {'task': 2, 'start': 347, 'machine': 0, 'duration': 1}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 64}, {'task': 1, 'start': 95, 'machine': 2, 'duration': 97}, {'task': 2, 'start': 193, 'machine': 0, 'duration': 85}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 83, 'machine': 2, 'duration': 12}, {'task': 1, 'start': 138, 'machine': 0, 'duration': 55}, {'task': 2, 'start': 193, 'machine': 1, 'duration': 57}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 248, 'machine': 2, 'duration': 7}, {'task': 1, 'start': 278, 'machine': 0, 'duration': 26}, {'task': 2, 'start': 304, 'machine': 1, 'duration': 37}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 39}, {'task': 1, 'start': 192, 'machine': 2, 'duration': 56}, {'task': 2, 'start': 250, 'machine': 1, 'duration': 41}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 83}, {'task': 1, 'start': 83, 'machine': 1, 'duration': 20}, {'task': 2, 'start': 103, 'machine': 0, 'duration': 35}]}]",348.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': ['A', 'B', 'C'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'B', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'C', 'duration': 92}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'A', 'duration': 1}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'B', 'duration': 64}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'C', 'duration': 97}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'A', 'duration': 85}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'C', 'duration': 12}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'A', 'duration': 55}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'B', 'duration': 57}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'C', 'duration': 7}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'A', 'duration': 26}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'B', 'duration': 37}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'A', 'duration': 39}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'C', 'duration': 56}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'B', 'duration': 41}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'C', 'duration': 83}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'B', 'duration': 20}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'A', 'duration': 35}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 64, 'machine': 'B', 'duration': 1}, {'task': 1, 'start': 255, 'machine': 'C', 'duration': 92}, {'task': 2, 'start': 347, 'machine': 'A', 'duration': 1}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 64}, {'task': 1, 'start': 95, 'machine': 'C', 'duration': 97}, {'task': 2, 'start': 193, 'machine': 'A', 'duration': 85}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 83, 'machine': 'C', 'duration': 12}, {'task': 1, 'start': 138, 'machine': 'A', 'duration': 55}, {'task': 2, 'start': 193, 'machine': 'B', 'duration': 57}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 248, 'machine': 'C', 'duration': 7}, {'task': 1, 'start': 278, 'machine': 'A', 'duration': 26}, {'task': 2, 'start': 304, 'machine': 'B', 'duration': 37}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 'A', 'duration': 39}, {'task': 1, 'start': 192, 'machine': 'C', 'duration': 56}, {'task': 2, 'start': 250, 'machine': 'B', 'duration': 41}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 83}, {'task': 1, 'start': 83, 'machine': 'B', 'duration': 20}, {'task': 2, 'start': 103, 'machine': 'A', 'duration': 35}]}]",4,csv,names |
| JSP,JSP,"We treat the OR board like a slow-motion relay: every patient must run through a fixed chain of phases, each phase needs a particular room or machine for a set duration, and that room canβt be doing anything else at the same time. The task is to slot each phase into its assigned space, in order, without overlaps or repeats, so every phase happens exactly once in the right sequence. The thing that makes one schedule better than another is simple β how early does the final patient leave? The time when the last procedure ends is the number to minimize. The concrete list of cases and times follows below. |
|
|
| |
| |
| |
| |
| patient_id,phase_index,room_equipment_id,phase_duration_minutes |
| J1,0,B,1 |
| J1,1,C,6 |
| J1,2,A,76 |
| J2,0,A,10 |
| J2,1,B,51 |
| J2,2,C,8 |
| J3,0,C,17 |
| J3,1,B,23 |
| J3,2,A,25 |
| J4,0,A,99 |
| J4,1,C,64 |
| J4,2,B,89 |
| J5,0,C,23 |
| J5,1,B,59 |
| J5,2,A,46 |
| J6,0,C,37 |
| J6,1,A,87 |
| J6,2,B,36 |
| J7,0,B,64 |
| J7,1,A,8 |
| J7,2,C,21 |
| J8,0,B,59 |
| J8,1,C,10 |
| J8,2,A,80 |
|
|
| You can hand the schedule back to me in a simple JSON shape β nothing fancy, just that structure so I can read it straight away. Hereβs the exact layout I expect: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it like a little form: ""solution"" is the whole set of plans; each entry under it is one job (use the job's exact identifier), and inside each job you list its tasks in order. For each task you give the task index (which step it is in that job), the start time, the machine it runs on, and how long it runs. This is just a sketch of the shape I need, not the finished schedule. |
|
|
| Please make sure to use the exact identifiers from the instance β don't rename machines or jobs or invent new labels. |
| - for example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 3, 'nr_jobs': 8, 'jobs': [[[1, 1], [2, 6], [0, 76]], [[0, 10], [1, 51], [2, 8]], [[2, 17], [1, 23], [0, 25]], [[0, 99], [2, 64], [1, 89]], [[2, 23], [1, 59], [0, 46]], [[2, 37], [0, 87], [1, 36]], [[1, 64], [0, 8], [2, 21]], [[1, 59], [2, 10], [0, 80]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 271, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 272, 'machine': 2, 'duration': 6}, {'task': 2, 'start': 322, 'machine': 0, 'duration': 76}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 266, 'machine': 0, 'duration': 10}, {'task': 1, 'start': 295, 'machine': 1, 'duration': 51}, {'task': 2, 'start': 346, 'machine': 2, 'duration': 8}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 70, 'machine': 2, 'duration': 17}, {'task': 1, 'start': 272, 'machine': 1, 'duration': 23}, {'task': 2, 'start': 406, 'machine': 0, 'duration': 25}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 99}, {'task': 1, 'start': 99, 'machine': 2, 'duration': 64}, {'task': 2, 'start': 182, 'machine': 1, 'duration': 89}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 37, 'machine': 2, 'duration': 23}, {'task': 1, 'start': 123, 'machine': 1, 'duration': 59}, {'task': 2, 'start': 276, 'machine': 0, 'duration': 46}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 37}, {'task': 1, 'start': 99, 'machine': 0, 'duration': 87}, {'task': 2, 'start': 346, 'machine': 1, 'duration': 36}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 59, 'machine': 1, 'duration': 64}, {'task': 1, 'start': 398, 'machine': 0, 'duration': 8}, {'task': 2, 'start': 406, 'machine': 2, 'duration': 21}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 59}, {'task': 1, 'start': 60, 'machine': 2, 'duration': 10}, {'task': 2, 'start': 186, 'machine': 0, 'duration': 80}]}]",431.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': ['A', 'B', 'C'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'B', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'C', 'duration': 6}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'A', 'duration': 76}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'A', 'duration': 10}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'B', 'duration': 51}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'C', 'duration': 8}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'C', 'duration': 17}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'B', 'duration': 23}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'A', 'duration': 25}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'A', 'duration': 99}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'C', 'duration': 64}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'B', 'duration': 89}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'C', 'duration': 23}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'B', 'duration': 59}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'A', 'duration': 46}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'C', 'duration': 37}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'A', 'duration': 87}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'B', 'duration': 36}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 'B', 'duration': 64}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 'A', 'duration': 8}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 'C', 'duration': 21}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 'B', 'duration': 59}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 'C', 'duration': 10}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 'A', 'duration': 80}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 271, 'machine': 'B', 'duration': 1}, {'task': 1, 'start': 272, 'machine': 'C', 'duration': 6}, {'task': 2, 'start': 322, 'machine': 'A', 'duration': 76}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 266, 'machine': 'A', 'duration': 10}, {'task': 1, 'start': 295, 'machine': 'B', 'duration': 51}, {'task': 2, 'start': 346, 'machine': 'C', 'duration': 8}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 70, 'machine': 'C', 'duration': 17}, {'task': 1, 'start': 272, 'machine': 'B', 'duration': 23}, {'task': 2, 'start': 406, 'machine': 'A', 'duration': 25}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 'A', 'duration': 99}, {'task': 1, 'start': 99, 'machine': 'C', 'duration': 64}, {'task': 2, 'start': 182, 'machine': 'B', 'duration': 89}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 37, 'machine': 'C', 'duration': 23}, {'task': 1, 'start': 123, 'machine': 'B', 'duration': 59}, {'task': 2, 'start': 276, 'machine': 'A', 'duration': 46}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 37}, {'task': 1, 'start': 99, 'machine': 'A', 'duration': 87}, {'task': 2, 'start': 346, 'machine': 'B', 'duration': 36}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 59, 'machine': 'B', 'duration': 64}, {'task': 1, 'start': 398, 'machine': 'A', 'duration': 8}, {'task': 2, 'start': 406, 'machine': 'C', 'duration': 21}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 59}, {'task': 1, 'start': 60, 'machine': 'C', 'duration': 10}, {'task': 2, 'start': 186, 'machine': 'A', 'duration': 80}]}]",5,csv,names |
| JSP,JSP,"Many people think booking is just filling empty slots, but a salon schedule is really about sequencing fixed step-by-step treatments at specific stations for set durations. The plan needs to keep each clientβs steps in order, make sure each step uses its assigned chair for its required minutes, and never put two treatments on the same chair at once. The better the plan, the sooner the final customer is finished β that final finish time is how the whole day is judged. The concrete details are shown below. |
|
|
| { |
| ""num_clients"": 8, |
| ""num_stations"": 5, |
| ""client_ids"": [ |
| ""J1"", |
| ""J2"", |
| ""J3"", |
| ""J4"", |
| ""J5"", |
| ""J6"", |
| ""J7"", |
| ""J8"" |
| ], |
| ""station_ids"": [ |
| 0, |
| 1, |
| 2, |
| 3, |
| 4 |
| ], |
| ""tasks"": [ |
| { |
| ""client_id"": ""J1"", |
| ""step_index"": 0, |
| ""station_id"": 3, |
| ""duration_minutes"": 1 |
| }, |
| { |
| ""client_id"": ""J1"", |
| ""step_index"": 1, |
| ""station_id"": 4, |
| ""duration_minutes"": 19 |
| }, |
| { |
| ""client_id"": ""J1"", |
| ""step_index"": 2, |
| ""station_id"": 1, |
| ""duration_minutes"": 51 |
| }, |
| { |
| ""client_id"": ""J1"", |
| ""step_index"": 3, |
| ""station_id"": 2, |
| ""duration_minutes"": 56 |
| }, |
| { |
| ""client_id"": ""J1"", |
| ""step_index"": 4, |
| ""station_id"": 0, |
| ""duration_minutes"": 4 |
| }, |
| { |
| ""client_id"": ""J2"", |
| ""step_index"": 0, |
| ""station_id"": 0, |
| ""duration_minutes"": 29 |
| }, |
| { |
| ""client_id"": ""J2"", |
| ""step_index"": 1, |
| ""station_id"": 2, |
| ""duration_minutes"": 21 |
| }, |
| { |
| ""client_id"": ""J2"", |
| ""step_index"": 2, |
| ""station_id"": 1, |
| ""duration_minutes"": 90 |
| }, |
| { |
| ""client_id"": ""J2"", |
| ""step_index"": 3, |
| ""station_id"": 4, |
| ""duration_minutes"": 92 |
| }, |
| { |
| ""client_id"": ""J2"", |
| ""step_index"": 4, |
| ""station_id"": 3, |
| ""duration_minutes"": 93 |
| }, |
| { |
| ""client_id"": ""J3"", |
| ""step_index"": 0, |
| ""station_id"": 2, |
| ""duration_minutes"": 3 |
| }, |
| { |
| ""client_id"": ""J3"", |
| ""step_index"": 1, |
| ""station_id"": 1, |
| ""duration_minutes"": 41 |
| }, |
| { |
| ""client_id"": ""J3"", |
| ""step_index"": 2, |
| ""station_id"": 0, |
| ""duration_minutes"": 6 |
| }, |
| { |
| ""client_id"": ""J3"", |
| ""step_index"": 3, |
| ""station_id"": 3, |
| ""duration_minutes"": 62 |
| }, |
| { |
| ""client_id"": ""J3"", |
| ""step_index"": 4, |
| ""station_id"": 4, |
| ""duration_minutes"": 51 |
| }, |
| { |
| ""client_id"": ""J4"", |
| ""step_index"": 0, |
| ""station_id"": 2, |
| ""duration_minutes"": 89 |
| }, |
| { |
| ""client_id"": ""J4"", |
| ""step_index"": 1, |
| ""station_id"": 4, |
| ""duration_minutes"": 54 |
| }, |
| { |
| ""client_id"": ""J4"", |
| ""step_index"": 2, |
| ""station_id"": 0, |
| ""duration_minutes"": 36 |
| }, |
| { |
| ""client_id"": ""J4"", |
| ""step_index"": 3, |
| ""station_id"": 1, |
| ""duration_minutes"": 3 |
| }, |
| { |
| ""client_id"": ""J4"", |
| ""step_index"": 4, |
| ""station_id"": 3, |
| ""duration_minutes"": 15 |
| }, |
| { |
| ""client_id"": ""J5"", |
| ""step_index"": 0, |
| ""station_id"": 2, |
| ""duration_minutes"": 62 |
| }, |
| { |
| ""client_id"": ""J5"", |
| ""step_index"": 1, |
| ""station_id"": 3, |
| ""duration_minutes"": 28 |
| }, |
| { |
| ""client_id"": ""J5"", |
| ""step_index"": 2, |
| ""station_id"": 4, |
| ""duration_minutes"": 68 |
| }, |
| { |
| ""client_id"": ""J5"", |
| ""step_index"": 3, |
| ""station_id"": 1, |
| ""duration_minutes"": 73 |
| }, |
| { |
| ""client_id"": ""J5"", |
| ""step_index"": 4, |
| ""station_id"": 0, |
| ""duration_minutes"": 77 |
| }, |
| { |
| ""client_id"": ""J6"", |
| ""step_index"": 0, |
| ""station_id"": 4, |
| ""duration_minutes"": 76 |
| }, |
| { |
| ""client_id"": ""J6"", |
| ""step_index"": 1, |
| ""station_id"": 3, |
| ""duration_minutes"": 32 |
| }, |
| { |
| ""client_id"": ""J6"", |
| ""step_index"": 2, |
| ""station_id"": 1, |
| ""duration_minutes"": 73 |
| }, |
| { |
| ""client_id"": ""J6"", |
| ""step_index"": 3, |
| ""station_id"": 0, |
| ""duration_minutes"": 55 |
| }, |
| { |
| ""client_id"": ""J6"", |
| ""step_index"": 4, |
| ""station_id"": 2, |
| ""duration_minutes"": 95 |
| }, |
| { |
| ""client_id"": ""J7"", |
| ""step_index"": 0, |
| ""station_id"": 3, |
| ""duration_minutes"": 78 |
| }, |
| { |
| ""client_id"": ""J7"", |
| ""step_index"": 1, |
| ""station_id"": 1, |
| ""duration_minutes"": 82 |
| }, |
| { |
| ""client_id"": ""J7"", |
| ""step_index"": 2, |
| ""station_id"": 4, |
| ""duration_minutes"": 34 |
| }, |
| { |
| ""client_id"": ""J7"", |
| ""step_index"": 3, |
| ""station_id"": 0, |
| ""duration_minutes"": 23 |
| }, |
| { |
| ""client_id"": ""J7"", |
| ""step_index"": 4, |
| ""station_id"": 2, |
| ""duration_minutes"": 59 |
| }, |
| { |
| ""client_id"": ""J8"", |
| ""step_index"": 0, |
| ""station_id"": 0, |
| ""duration_minutes"": 43 |
| }, |
| { |
| ""client_id"": ""J8"", |
| ""step_index"": 1, |
| ""station_id"": 1, |
| ""duration_minutes"": 73 |
| }, |
| { |
| ""client_id"": ""J8"", |
| ""step_index"": 2, |
| ""station_id"": 4, |
| ""duration_minutes"": 55 |
| }, |
| { |
| ""client_id"": ""J8"", |
| ""step_index"": 3, |
| ""station_id"": 3, |
| ""duration_minutes"": 58 |
| }, |
| { |
| ""client_id"": ""J8"", |
| ""step_index"": 4, |
| ""station_id"": 2, |
| ""duration_minutes"": 17 |
| } |
| ] |
| } |
|
|
| If youβd like the result in a tidy, machine-friendly shape, I usually sketch it out like this: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of that as a simple form: ""solution"" holds every clientβs plan; each entry has the job id and a list of tasks. Each task says which step it is, when it starts, which chair/station (machine) it needs, and how long it runs. Itβs just the shape I expect the final schedule to follow β not the actual schedule itself. |
|
|
| Please use the exact identifiers from the instance input β donβt rename them or invent new labels. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 5, 'nr_jobs': 8, 'jobs': [[[3, 1], [4, 19], [1, 51], [2, 56], [0, 4]], [[0, 29], [2, 21], [1, 90], [4, 92], [3, 93]], [[2, 3], [1, 41], [0, 6], [3, 62], [4, 51]], [[2, 89], [4, 54], [0, 36], [1, 3], [3, 15]], [[2, 62], [3, 28], [4, 68], [1, 73], [0, 77]], [[4, 76], [3, 32], [1, 73], [0, 55], [2, 95]], [[3, 78], [1, 82], [4, 34], [0, 23], [2, 59]], [[0, 43], [1, 73], [4, 55], [3, 58], [2, 17]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 138, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 409, 'machine': 4, 'duration': 19}, {'task': 2, 'start': 435, 'machine': 1, 'duration': 51}, {'task': 3, 'start': 488, 'machine': 2, 'duration': 56}, {'task': 4, 'start': 544, 'machine': 0, 'duration': 4}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 43, 'machine': 0, 'duration': 29}, {'task': 1, 'start': 154, 'machine': 2, 'duration': 21}, {'task': 2, 'start': 190, 'machine': 1, 'duration': 90}, {'task': 3, 'start': 280, 'machine': 4, 'duration': 92}, {'task': 4, 'start': 387, 'machine': 3, 'duration': 93}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 3}, {'task': 1, 'start': 3, 'machine': 1, 'duration': 41}, {'task': 2, 'start': 72, 'machine': 0, 'duration': 6}, {'task': 3, 'start': 260, 'machine': 3, 'duration': 62}, {'task': 4, 'start': 454, 'machine': 4, 'duration': 51}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 3, 'machine': 2, 'duration': 89}, {'task': 1, 'start': 92, 'machine': 4, 'duration': 54}, {'task': 2, 'start': 294, 'machine': 0, 'duration': 36}, {'task': 3, 'start': 486, 'machine': 1, 'duration': 3}, {'task': 4, 'start': 489, 'machine': 3, 'duration': 15}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 92, 'machine': 2, 'duration': 62}, {'task': 1, 'start': 154, 'machine': 3, 'duration': 28}, {'task': 2, 'start': 201, 'machine': 4, 'duration': 68}, {'task': 3, 'start': 362, 'machine': 1, 'duration': 73}, {'task': 4, 'start': 435, 'machine': 0, 'duration': 77}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 76}, {'task': 1, 'start': 78, 'machine': 3, 'duration': 32}, {'task': 2, 'start': 117, 'machine': 1, 'duration': 73}, {'task': 3, 'start': 190, 'machine': 0, 'duration': 55}, {'task': 4, 'start': 245, 'machine': 2, 'duration': 95}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 78}, {'task': 1, 'start': 280, 'machine': 1, 'duration': 82}, {'task': 2, 'start': 372, 'machine': 4, 'duration': 34}, {'task': 3, 'start': 406, 'machine': 0, 'duration': 23}, {'task': 4, 'start': 429, 'machine': 2, 'duration': 59}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 43}, {'task': 1, 'start': 44, 'machine': 1, 'duration': 73}, {'task': 2, 'start': 146, 'machine': 4, 'duration': 55}, {'task': 3, 'start': 201, 'machine': 3, 'duration': 58}, {'task': 4, 'start': 340, 'machine': 2, 'duration': 17}]}]",548.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 5, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': [0, 1, 2, 3, 4], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 3, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 4, 'duration': 19}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 1, 'duration': 51}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 2, 'duration': 56}, {'job_id': 'J1', 'task_id': 4, 'machine_id': 0, 'duration': 4}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 0, 'duration': 29}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 2, 'duration': 21}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 1, 'duration': 90}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 4, 'duration': 92}, {'job_id': 'J2', 'task_id': 4, 'machine_id': 3, 'duration': 93}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 2, 'duration': 3}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 1, 'duration': 41}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 0, 'duration': 6}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 3, 'duration': 62}, {'job_id': 'J3', 'task_id': 4, 'machine_id': 4, 'duration': 51}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 2, 'duration': 89}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 4, 'duration': 54}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 0, 'duration': 36}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 1, 'duration': 3}, {'job_id': 'J4', 'task_id': 4, 'machine_id': 3, 'duration': 15}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 2, 'duration': 62}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 3, 'duration': 28}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 4, 'duration': 68}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 1, 'duration': 73}, {'job_id': 'J5', 'task_id': 4, 'machine_id': 0, 'duration': 77}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 4, 'duration': 76}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 3, 'duration': 32}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 1, 'duration': 73}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 0, 'duration': 55}, {'job_id': 'J6', 'task_id': 4, 'machine_id': 2, 'duration': 95}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 3, 'duration': 78}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 1, 'duration': 82}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 4, 'duration': 34}, {'job_id': 'J7', 'task_id': 3, 'machine_id': 0, 'duration': 23}, {'job_id': 'J7', 'task_id': 4, 'machine_id': 2, 'duration': 59}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 0, 'duration': 43}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 1, 'duration': 73}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 4, 'duration': 55}, {'job_id': 'J8', 'task_id': 3, 'machine_id': 3, 'duration': 58}, {'job_id': 'J8', 'task_id': 4, 'machine_id': 2, 'duration': 17}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 138, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 409, 'machine': 4, 'duration': 19}, {'task': 2, 'start': 435, 'machine': 1, 'duration': 51}, {'task': 3, 'start': 488, 'machine': 2, 'duration': 56}, {'task': 4, 'start': 544, 'machine': 0, 'duration': 4}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 43, 'machine': 0, 'duration': 29}, {'task': 1, 'start': 154, 'machine': 2, 'duration': 21}, {'task': 2, 'start': 190, 'machine': 1, 'duration': 90}, {'task': 3, 'start': 280, 'machine': 4, 'duration': 92}, {'task': 4, 'start': 387, 'machine': 3, 'duration': 93}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 3}, {'task': 1, 'start': 3, 'machine': 1, 'duration': 41}, {'task': 2, 'start': 72, 'machine': 0, 'duration': 6}, {'task': 3, 'start': 260, 'machine': 3, 'duration': 62}, {'task': 4, 'start': 454, 'machine': 4, 'duration': 51}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 3, 'machine': 2, 'duration': 89}, {'task': 1, 'start': 92, 'machine': 4, 'duration': 54}, {'task': 2, 'start': 294, 'machine': 0, 'duration': 36}, {'task': 3, 'start': 486, 'machine': 1, 'duration': 3}, {'task': 4, 'start': 489, 'machine': 3, 'duration': 15}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 92, 'machine': 2, 'duration': 62}, {'task': 1, 'start': 154, 'machine': 3, 'duration': 28}, {'task': 2, 'start': 201, 'machine': 4, 'duration': 68}, {'task': 3, 'start': 362, 'machine': 1, 'duration': 73}, {'task': 4, 'start': 435, 'machine': 0, 'duration': 77}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 76}, {'task': 1, 'start': 78, 'machine': 3, 'duration': 32}, {'task': 2, 'start': 117, 'machine': 1, 'duration': 73}, {'task': 3, 'start': 190, 'machine': 0, 'duration': 55}, {'task': 4, 'start': 245, 'machine': 2, 'duration': 95}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 78}, {'task': 1, 'start': 280, 'machine': 1, 'duration': 82}, {'task': 2, 'start': 372, 'machine': 4, 'duration': 34}, {'task': 3, 'start': 406, 'machine': 0, 'duration': 23}, {'task': 4, 'start': 429, 'machine': 2, 'duration': 59}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 43}, {'task': 1, 'start': 44, 'machine': 1, 'duration': 73}, {'task': 2, 'start': 146, 'machine': 4, 'duration': 55}, {'task': 3, 'start': 201, 'machine': 3, 'duration': 58}, {'task': 4, 'start': 340, 'machine': 2, 'duration': 17}]}]",6,json,0 |
| JSP,JSP,"I run the print shop and have a stack of jobs that each need a set sequence of steps β print, dry, trim, bind β and every step has to happen on a specific press or binder and takes a known amount of time. The job is to pick when each machine does each step so that no press is doing two things at once, every step for each job happens in the right order, and nothing is skipped or duplicated. A better schedule gets the whole batch finished earlier; the success is simply the clock time when the final operation finishes, and the aim is to make that finish time as small as possible. The exact jobs, machines and times are listed below. |
|
|
| I have 8 jobs and 3 stations: job ids J1, J2, J3, J4, J5, J6, J7, J8 and station ids 0, 1, 2. |
|
|
| | print_job_id | operation_index | station_id | processing_duration | |
| |---|---|---|---| |
| | J1 | 0 | 2 | 1 | |
| | J1 | 1 | 1 | 32 | |
| | J1 | 2 | 0 | 27 | |
| | J2 | 0 | 2 | 2 | |
| | J2 | 1 | 1 | 57 | |
| | J2 | 2 | 0 | 51 | |
| | J3 | 0 | 1 | 26 | |
| | J3 | 1 | 2 | 58 | |
| | J3 | 2 | 0 | 61 | |
| | J4 | 0 | 1 | 86 | |
| | J4 | 1 | 0 | 41 | |
| | J4 | 2 | 2 | 93 | |
| | J5 | 0 | 0 | 88 | |
| | J5 | 1 | 2 | 66 | |
| | J5 | 2 | 1 | 57 | |
| | J6 | 0 | 2 | 43 | |
| | J6 | 1 | 0 | 22 | |
| | J6 | 2 | 1 | 37 | |
| | J7 | 0 | 2 | 40 | |
| | J7 | 1 | 0 | 21 | |
| | J7 | 2 | 1 | 4 | |
| | J8 | 0 | 1 | 96 | |
| | J8 | 1 | 2 | 27 | |
| | J8 | 2 | 0 | 66 | |
|
|
| I need them scheduled so no station runs two tasks at once, each job's operations keep their order, and the whole batch finishes as early as possible. |
|
|
| Also, when you give the schedule back, keep it in a simple JSON layout so it's easy to parse β something like this: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| This just means: top-level ""solution"" is a list of jobs. For each job, put its job identifier under ""job"" and a ""tasks"" list with one entry per operation. Each task entry says which step number it is (""task""), when that step starts (""start""), which machine it runs on (""machine""), and how long it runs (""duration""). Think of it like filling out a little form for each job and each step. |
|
|
| Note: that JSON is only a sketch of the shape I expect, not the actual answer β you'll need to fill in the real values from the instance. Also, please use the exact identifiers from the instance input with no renaming and no new labels. |
| - for example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 3, 'nr_jobs': 8, 'jobs': [[[2, 1], [1, 32], [0, 27]], [[2, 2], [1, 57], [0, 51]], [[1, 26], [2, 58], [0, 61]], [[1, 86], [0, 41], [2, 93]], [[0, 88], [2, 66], [1, 57]], [[2, 43], [0, 22], [1, 37]], [[2, 40], [0, 21], [1, 4]], [[1, 96], [2, 27], [0, 66]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 85, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 322, 'machine': 1, 'duration': 32}, {'task': 2, 'start': 358, 'machine': 0, 'duration': 27}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 2}, {'task': 1, 'start': 112, 'machine': 1, 'duration': 57}, {'task': 2, 'start': 172, 'machine': 0, 'duration': 51}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 86, 'machine': 1, 'duration': 26}, {'task': 1, 'start': 154, 'machine': 2, 'duration': 58}, {'task': 2, 'start': 223, 'machine': 0, 'duration': 61}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 86}, {'task': 1, 'start': 88, 'machine': 0, 'duration': 41}, {'task': 2, 'start': 292, 'machine': 2, 'duration': 93}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 88}, {'task': 1, 'start': 88, 'machine': 2, 'duration': 66}, {'task': 2, 'start': 265, 'machine': 1, 'duration': 57}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 2, 'machine': 2, 'duration': 43}, {'task': 1, 'start': 129, 'machine': 0, 'duration': 22}, {'task': 2, 'start': 358, 'machine': 1, 'duration': 37}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 45, 'machine': 2, 'duration': 40}, {'task': 1, 'start': 151, 'machine': 0, 'duration': 21}, {'task': 2, 'start': 354, 'machine': 1, 'duration': 4}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 169, 'machine': 1, 'duration': 96}, {'task': 1, 'start': 265, 'machine': 2, 'duration': 27}, {'task': 2, 'start': 292, 'machine': 0, 'duration': 66}]}]",395.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': [0, 1, 2], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 2, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 1, 'duration': 32}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 0, 'duration': 27}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 2, 'duration': 2}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 1, 'duration': 57}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 0, 'duration': 51}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 1, 'duration': 26}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 2, 'duration': 58}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 0, 'duration': 61}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 1, 'duration': 86}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 0, 'duration': 41}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 2, 'duration': 93}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 0, 'duration': 88}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 2, 'duration': 66}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 1, 'duration': 57}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 2, 'duration': 43}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 0, 'duration': 22}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 1, 'duration': 37}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 2, 'duration': 40}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 0, 'duration': 21}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 1, 'duration': 4}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 1, 'duration': 96}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 2, 'duration': 27}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 0, 'duration': 66}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 85, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 322, 'machine': 1, 'duration': 32}, {'task': 2, 'start': 358, 'machine': 0, 'duration': 27}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 2}, {'task': 1, 'start': 112, 'machine': 1, 'duration': 57}, {'task': 2, 'start': 172, 'machine': 0, 'duration': 51}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 86, 'machine': 1, 'duration': 26}, {'task': 1, 'start': 154, 'machine': 2, 'duration': 58}, {'task': 2, 'start': 223, 'machine': 0, 'duration': 61}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 86}, {'task': 1, 'start': 88, 'machine': 0, 'duration': 41}, {'task': 2, 'start': 292, 'machine': 2, 'duration': 93}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 88}, {'task': 1, 'start': 88, 'machine': 2, 'duration': 66}, {'task': 2, 'start': 265, 'machine': 1, 'duration': 57}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 2, 'machine': 2, 'duration': 43}, {'task': 1, 'start': 129, 'machine': 0, 'duration': 22}, {'task': 2, 'start': 358, 'machine': 1, 'duration': 37}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 45, 'machine': 2, 'duration': 40}, {'task': 1, 'start': 151, 'machine': 0, 'duration': 21}, {'task': 2, 'start': 354, 'machine': 1, 'duration': 4}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 169, 'machine': 1, 'duration': 96}, {'task': 1, 'start': 265, 'machine': 2, 'duration': 27}, {'task': 2, 'start': 292, 'machine': 0, 'duration': 66}]}]",7,markdown_table,0 |
| JSP,JSP,"Someone has to be the shop scheduler: line up the development, drying, trimming and other steps for each print on their assigned machines, respect the order of steps, and never let a machine do two steps at once. The decision is choosing the timing for each step so nothingβs missed or duplicated and the whole batch finishes as quickly as possible. Performance is measured by the time the last print completes β you find every printβs end time and take the maximum; lower is preferable. The concrete job list and timings appear below. |
|
|
| There are 8 print runs and 4 processing stations; print run IDs: J1, J2, J3, J4, J5, J6, J7, J8; station IDs: A, B, C, D. |
| Print J1, step 0 on station B for 1 time units. |
| Print J1, step 1 on station D for 45 time units. |
| Print J1, step 2 on station C for 3 time units. |
| Print J1, step 3 on station A for 47 time units. |
| Print J2, step 0 on station B for 11 time units. |
| Print J2, step 1 on station A for 73 time units. |
| Print J2, step 2 on station C for 31 time units. |
| Print J2, step 3 on station D for 27 time units. |
| Print J3, step 0 on station B for 29 time units. |
| Print J3, step 1 on station A for 80 time units. |
| Print J3, step 2 on station C for 79 time units. |
| Print J3, step 3 on station D for 45 time units. |
| Print J4, step 0 on station A for 72 time units. |
| Print J4, step 1 on station B for 69 time units. |
| Print J4, step 2 on station D for 62 time units. |
| Print J4, step 3 on station C for 95 time units. |
| Print J5, step 0 on station C for 88 time units. |
| Print J5, step 1 on station A for 38 time units. |
| Print J5, step 2 on station D for 78 time units. |
| Print J5, step 3 on station B for 28 time units. |
| Print J6, step 0 on station C for 46 time units. |
| Print J6, step 1 on station A for 65 time units. |
| Print J6, step 2 on station B for 86 time units. |
| Print J6, step 3 on station D for 59 time units. |
| Print J7, step 0 on station B for 46 time units. |
| Print J7, step 1 on station A for 82 time units. |
| Print J7, step 2 on station C for 51 time units. |
| Print J7, step 3 on station D for 5 time units. |
| Print J8, step 0 on station A for 39 time units. |
| Print J8, step 1 on station C for 36 time units. |
| Print J8, step 2 on station D for 60 time units. |
| Print J8, step 3 on station B for 35 time units. |
| Arrange these steps so the last print finishes as early as possible. |
|
|
| When you hand me the schedule, just use a simple JSON shape β nothing fancy. Something like this will do: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of that as a little form: ""solution"" holds a list of jobs; each job has its id and a list of tasks; each task records which step it is, when it starts, which machine it uses, and how long it runs. Super casual β like filling in a schedule sheet. |
|
|
| This JSON is just a sketch of the expected shape, not the actual completed schedule. |
|
|
| Please make sure to use the exact identifiers from the instance input β do not rename or invent labels. |
| - for example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 4, 'nr_jobs': 8, 'jobs': [[[1, 1], [3, 45], [2, 3], [0, 47]], [[1, 11], [0, 73], [2, 31], [3, 27]], [[1, 29], [0, 80], [2, 79], [3, 45]], [[0, 72], [1, 69], [3, 62], [2, 95]], [[2, 88], [0, 38], [3, 78], [1, 28]], [[2, 46], [0, 65], [1, 86], [3, 59]], [[1, 46], [0, 82], [2, 51], [3, 5]], [[0, 39], [2, 36], [3, 60], [1, 35]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 11, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 12, 'machine': 3, 'duration': 45}, {'task': 2, 'start': 88, 'machine': 2, 'duration': 3}, {'task': 3, 'start': 449, 'machine': 0, 'duration': 47}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 11}, {'task': 1, 'start': 294, 'machine': 0, 'duration': 73}, {'task': 2, 'start': 403, 'machine': 2, 'duration': 31}, {'task': 3, 'start': 453, 'machine': 3, 'duration': 27}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 12, 'machine': 1, 'duration': 29}, {'task': 1, 'start': 149, 'machine': 0, 'duration': 80}, {'task': 2, 'start': 229, 'machine': 2, 'duration': 79}, {'task': 3, 'start': 349, 'machine': 3, 'duration': 45}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 72}, {'task': 1, 'start': 72, 'machine': 1, 'duration': 69}, {'task': 2, 'start': 227, 'machine': 3, 'duration': 62}, {'task': 3, 'start': 308, 'machine': 2, 'duration': 95}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 88}, {'task': 1, 'start': 111, 'machine': 0, 'duration': 38}, {'task': 2, 'start': 149, 'machine': 3, 'duration': 78}, {'task': 3, 'start': 227, 'machine': 1, 'duration': 28}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 91, 'machine': 2, 'duration': 46}, {'task': 1, 'start': 229, 'machine': 0, 'duration': 65}, {'task': 2, 'start': 294, 'machine': 1, 'duration': 86}, {'task': 3, 'start': 394, 'machine': 3, 'duration': 59}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 141, 'machine': 1, 'duration': 46}, {'task': 1, 'start': 367, 'machine': 0, 'duration': 82}, {'task': 2, 'start': 449, 'machine': 2, 'duration': 51}, {'task': 3, 'start': 500, 'machine': 3, 'duration': 5}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 72, 'machine': 0, 'duration': 39}, {'task': 1, 'start': 137, 'machine': 2, 'duration': 36}, {'task': 2, 'start': 289, 'machine': 3, 'duration': 60}, {'task': 3, 'start': 380, 'machine': 1, 'duration': 35}]}]",505.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 4, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': ['A', 'B', 'C', 'D'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'B', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'D', 'duration': 45}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'C', 'duration': 3}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 'A', 'duration': 47}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'B', 'duration': 11}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'A', 'duration': 73}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'C', 'duration': 31}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 'D', 'duration': 27}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'B', 'duration': 29}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'A', 'duration': 80}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'C', 'duration': 79}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 'D', 'duration': 45}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'A', 'duration': 72}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'B', 'duration': 69}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'D', 'duration': 62}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 'C', 'duration': 95}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'C', 'duration': 88}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'A', 'duration': 38}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'D', 'duration': 78}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 'B', 'duration': 28}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'C', 'duration': 46}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'A', 'duration': 65}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'B', 'duration': 86}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 'D', 'duration': 59}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 'B', 'duration': 46}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 'A', 'duration': 82}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 'C', 'duration': 51}, {'job_id': 'J7', 'task_id': 3, 'machine_id': 'D', 'duration': 5}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 'A', 'duration': 39}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 'C', 'duration': 36}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 'D', 'duration': 60}, {'job_id': 'J8', 'task_id': 3, 'machine_id': 'B', 'duration': 35}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 11, 'machine': 'B', 'duration': 1}, {'task': 1, 'start': 12, 'machine': 'D', 'duration': 45}, {'task': 2, 'start': 88, 'machine': 'C', 'duration': 3}, {'task': 3, 'start': 449, 'machine': 'A', 'duration': 47}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 11}, {'task': 1, 'start': 294, 'machine': 'A', 'duration': 73}, {'task': 2, 'start': 403, 'machine': 'C', 'duration': 31}, {'task': 3, 'start': 453, 'machine': 'D', 'duration': 27}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 12, 'machine': 'B', 'duration': 29}, {'task': 1, 'start': 149, 'machine': 'A', 'duration': 80}, {'task': 2, 'start': 229, 'machine': 'C', 'duration': 79}, {'task': 3, 'start': 349, 'machine': 'D', 'duration': 45}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 'A', 'duration': 72}, {'task': 1, 'start': 72, 'machine': 'B', 'duration': 69}, {'task': 2, 'start': 227, 'machine': 'D', 'duration': 62}, {'task': 3, 'start': 308, 'machine': 'C', 'duration': 95}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 88}, {'task': 1, 'start': 111, 'machine': 'A', 'duration': 38}, {'task': 2, 'start': 149, 'machine': 'D', 'duration': 78}, {'task': 3, 'start': 227, 'machine': 'B', 'duration': 28}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 91, 'machine': 'C', 'duration': 46}, {'task': 1, 'start': 229, 'machine': 'A', 'duration': 65}, {'task': 2, 'start': 294, 'machine': 'B', 'duration': 86}, {'task': 3, 'start': 394, 'machine': 'D', 'duration': 59}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 141, 'machine': 'B', 'duration': 46}, {'task': 1, 'start': 367, 'machine': 'A', 'duration': 82}, {'task': 2, 'start': 449, 'machine': 'C', 'duration': 51}, {'task': 3, 'start': 500, 'machine': 'D', 'duration': 5}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 72, 'machine': 'A', 'duration': 39}, {'task': 1, 'start': 137, 'machine': 'C', 'duration': 36}, {'task': 2, 'start': 289, 'machine': 'D', 'duration': 60}, {'task': 3, 'start': 380, 'machine': 'B', 'duration': 35}]}]",8,nl,names |
| JSP,JSP,"Thereβs a line of orders waiting and every pastry needs a chain of steps on specific machines, each taking a fixed amount of time. The trick is arranging those steps in time so each recipeβs sequence is preserved, no machine is asked to do two things at once, and nothing is skipped or duplicated. Success is judged by the moment the last item is done β that end time tells how efficient the plan was. The exact details of items, machines, and durations are shown below. |
|
|
| Below are the 6 orders and the 3 machines: order IDs J1, J2, J3, J4, J5, J6 and machine IDs 1, 2, 3. |
| Order J1, step 0 β requires machine 3 for 1 minutes. |
| Order J1, step 1 β requires machine 2 for 58 minutes. |
| Order J1, step 2 β requires machine 1 for 78 minutes. |
| Order J2, step 0 β requires machine 2 for 93 minutes. |
| Order J2, step 1 β requires machine 1 for 64 minutes. |
| Order J2, step 2 β requires machine 3 for 94 minutes. |
| Order J3, step 0 β requires machine 3 for 35 minutes. |
| Order J3, step 1 β requires machine 2 for 94 minutes. |
| Order J3, step 2 β requires machine 1 for 96 minutes. |
| Order J4, step 0 β requires machine 1 for 73 minutes. |
| Order J4, step 1 β requires machine 2 for 18 minutes. |
| Order J4, step 2 β requires machine 3 for 97 minutes. |
| Order J5, step 0 β requires machine 1 for 55 minutes. |
| Order J5, step 1 β requires machine 2 for 73 minutes. |
| Order J5, step 2 β requires machine 3 for 67 minutes. |
| Order J6, step 0 β requires machine 2 for 49 minutes. |
| Order J6, step 1 β requires machine 3 for 56 minutes. |
| Order J6, step 2 β requires machine 1 for 39 minutes. |
| They should be arranged so each recipe runs in sequence and no machine is double-booked. |
|
|
| Also, when you hand the schedule back, just follow this simple JSON shape so it's easy to read and check: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| This is just a sketch of the expected shape β each top-level entry is one job, and each job lists its tasks in order. For each task you give the task index (which task in the job), the planned start time, the machine it runs on, and how long it runs. Keep it simple and human-readable, like filling out a tiny form. |
|
|
| Please use the exact identifiers from the instance input β don't rename them or invent new ones. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 3, 'nr_jobs': 6, 'jobs': [[[2, 1], [1, 58], [0, 78]], [[1, 93], [0, 64], [2, 94]], [[2, 35], [1, 94], [0, 96]], [[0, 73], [1, 18], [2, 97]], [[0, 55], [1, 73], [2, 67]], [[1, 49], [2, 56], [0, 39]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 35, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 160, 'machine': 1, 'duration': 58}, {'task': 2, 'start': 263, 'machine': 0, 'duration': 78}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 49, 'machine': 1, 'duration': 93}, {'task': 1, 'start': 199, 'machine': 0, 'duration': 64}, {'task': 2, 'start': 263, 'machine': 2, 'duration': 94}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 35}, {'task': 1, 'start': 218, 'machine': 1, 'duration': 94}, {'task': 2, 'start': 341, 'machine': 0, 'duration': 96}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 73}, {'task': 1, 'start': 142, 'machine': 1, 'duration': 18}, {'task': 2, 'start': 160, 'machine': 2, 'duration': 97}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 144, 'machine': 0, 'duration': 55}, {'task': 1, 'start': 312, 'machine': 1, 'duration': 73}, {'task': 2, 'start': 385, 'machine': 2, 'duration': 67}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 49}, {'task': 1, 'start': 49, 'machine': 2, 'duration': 56}, {'task': 2, 'start': 105, 'machine': 0, 'duration': 39}]}]",452.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': [1, 2, 3], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 3, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 2, 'duration': 58}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 1, 'duration': 78}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 2, 'duration': 93}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 1, 'duration': 64}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 3, 'duration': 94}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 3, 'duration': 35}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 2, 'duration': 94}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 1, 'duration': 96}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 1, 'duration': 73}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 2, 'duration': 18}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 3, 'duration': 97}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 1, 'duration': 55}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 2, 'duration': 73}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 3, 'duration': 67}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 2, 'duration': 49}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 3, 'duration': 56}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 1, 'duration': 39}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 35, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 160, 'machine': 2, 'duration': 58}, {'task': 2, 'start': 263, 'machine': 1, 'duration': 78}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 49, 'machine': 2, 'duration': 93}, {'task': 1, 'start': 199, 'machine': 1, 'duration': 64}, {'task': 2, 'start': 263, 'machine': 3, 'duration': 94}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 35}, {'task': 1, 'start': 218, 'machine': 2, 'duration': 94}, {'task': 2, 'start': 341, 'machine': 1, 'duration': 96}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 73}, {'task': 1, 'start': 142, 'machine': 2, 'duration': 18}, {'task': 2, 'start': 160, 'machine': 3, 'duration': 97}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 144, 'machine': 1, 'duration': 55}, {'task': 1, 'start': 312, 'machine': 2, 'duration': 73}, {'task': 2, 'start': 385, 'machine': 3, 'duration': 67}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 49}, {'task': 1, 'start': 49, 'machine': 3, 'duration': 56}, {'task': 2, 'start': 105, 'machine': 1, 'duration': 39}]}]",9,nl,1 |
| JSP,JSP,"I run the render farm and my job is to pick start times for every little scene task so each one runs on its assigned server for however long it needs. Each shot is a chain of steps that have to happen in order, every task has to be scheduled exactly once, and no server can be asked to do two things at once. A better plan is simply the one that gets the whole project finished sooner β to check that, look at the finish times of all tasks and take the latest one; the smaller that time, the better. The concrete scene-by-scene details and runtimes are listed below. |
|
|
| { |
| ""total_shots"": 6, |
| ""total_servers"": 3, |
| ""shot_identifiers"": [ |
| ""J1"", |
| ""J2"", |
| ""J3"", |
| ""J4"", |
| ""J5"", |
| ""J6"" |
| ], |
| ""server_identifiers"": [ |
| 1, |
| 2, |
| 3 |
| ], |
| ""tasks"": [ |
| { |
| ""shot_id"": ""J1"", |
| ""step_index"": 0, |
| ""server_id"": 2, |
| ""expected_runtime"": 1 |
| }, |
| { |
| ""shot_id"": ""J1"", |
| ""step_index"": 1, |
| ""server_id"": 3, |
| ""expected_runtime"": 71 |
| }, |
| { |
| ""shot_id"": ""J1"", |
| ""step_index"": 2, |
| ""server_id"": 1, |
| ""expected_runtime"": 54 |
| }, |
| { |
| ""shot_id"": ""J2"", |
| ""step_index"": 0, |
| ""server_id"": 1, |
| ""expected_runtime"": 39 |
| }, |
| { |
| ""shot_id"": ""J2"", |
| ""step_index"": 1, |
| ""server_id"": 3, |
| ""expected_runtime"": 17 |
| }, |
| { |
| ""shot_id"": ""J2"", |
| ""step_index"": 2, |
| ""server_id"": 2, |
| ""expected_runtime"": 17 |
| }, |
| { |
| ""shot_id"": ""J3"", |
| ""step_index"": 0, |
| ""server_id"": 1, |
| ""expected_runtime"": 40 |
| }, |
| { |
| ""shot_id"": ""J3"", |
| ""step_index"": 1, |
| ""server_id"": 2, |
| ""expected_runtime"": 62 |
| }, |
| { |
| ""shot_id"": ""J3"", |
| ""step_index"": 2, |
| ""server_id"": 3, |
| ""expected_runtime"": 64 |
| }, |
| { |
| ""shot_id"": ""J4"", |
| ""step_index"": 0, |
| ""server_id"": 2, |
| ""expected_runtime"": 67 |
| }, |
| { |
| ""shot_id"": ""J4"", |
| ""step_index"": 1, |
| ""server_id"": 1, |
| ""expected_runtime"": 56 |
| }, |
| { |
| ""shot_id"": ""J4"", |
| ""step_index"": 2, |
| ""server_id"": 3, |
| ""expected_runtime"": 49 |
| }, |
| { |
| ""shot_id"": ""J5"", |
| ""step_index"": 0, |
| ""server_id"": 1, |
| ""expected_runtime"": 38 |
| }, |
| { |
| ""shot_id"": ""J5"", |
| ""step_index"": 1, |
| ""server_id"": 3, |
| ""expected_runtime"": 76 |
| }, |
| { |
| ""shot_id"": ""J5"", |
| ""step_index"": 2, |
| ""server_id"": 2, |
| ""expected_runtime"": 72 |
| }, |
| { |
| ""shot_id"": ""J6"", |
| ""step_index"": 0, |
| ""server_id"": 1, |
| ""expected_runtime"": 2 |
| }, |
| { |
| ""shot_id"": ""J6"", |
| ""step_index"": 1, |
| ""server_id"": 3, |
| ""expected_runtime"": 23 |
| }, |
| { |
| ""shot_id"": ""J6"", |
| ""step_index"": 2, |
| ""server_id"": 2, |
| ""expected_runtime"": 39 |
| } |
| ] |
| } |
|
|
| When you send the schedule back, just use this simple JSON shape so I can pick up the info cleanly: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it like a little form: the top-level ""solution"" holds one entry per shot (job). Each job entry names the job and then lists its tasks in order. For each task you give which step it is (""task""), when it starts (""start""), which server it runs on (""machine""), and how long it runs (""duration""). This block is just a sketch of the shape I expect, not the actual schedule β fill it with the real IDs and times when you reply. |
|
|
| Please use the exact identifiers from the instance input β do not rename or invent labels. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 3, 'nr_jobs': 6, 'jobs': [[[1, 1], [2, 71], [0, 54]], [[0, 39], [2, 17], [1, 17]], [[0, 40], [1, 62], [2, 64]], [[1, 67], [0, 56], [2, 49]], [[0, 38], [2, 76], [1, 72]], [[0, 2], [2, 23], [1, 39]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 1, 'machine': 2, 'duration': 71}, {'task': 2, 'start': 175, 'machine': 0, 'duration': 54}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 78, 'machine': 0, 'duration': 39}, {'task': 1, 'start': 148, 'machine': 2, 'duration': 17}, {'task': 2, 'start': 220, 'machine': 1, 'duration': 17}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 38, 'machine': 0, 'duration': 40}, {'task': 1, 'start': 78, 'machine': 1, 'duration': 62}, {'task': 2, 'start': 165, 'machine': 2, 'duration': 64}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 1, 'machine': 1, 'duration': 67}, {'task': 1, 'start': 117, 'machine': 0, 'duration': 56}, {'task': 2, 'start': 252, 'machine': 2, 'duration': 49}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 38}, {'task': 1, 'start': 72, 'machine': 2, 'duration': 76}, {'task': 2, 'start': 148, 'machine': 1, 'duration': 72}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 173, 'machine': 0, 'duration': 2}, {'task': 1, 'start': 229, 'machine': 2, 'duration': 23}, {'task': 2, 'start': 252, 'machine': 1, 'duration': 39}]}]",301.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': [1, 2, 3], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 2, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 3, 'duration': 71}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 1, 'duration': 54}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 1, 'duration': 39}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 3, 'duration': 17}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 2, 'duration': 17}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 1, 'duration': 40}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 2, 'duration': 62}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 3, 'duration': 64}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 2, 'duration': 67}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 1, 'duration': 56}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 3, 'duration': 49}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 1, 'duration': 38}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 3, 'duration': 76}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 2, 'duration': 72}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 1, 'duration': 2}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 3, 'duration': 23}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 2, 'duration': 39}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 1, 'machine': 3, 'duration': 71}, {'task': 2, 'start': 175, 'machine': 1, 'duration': 54}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 78, 'machine': 1, 'duration': 39}, {'task': 1, 'start': 148, 'machine': 3, 'duration': 17}, {'task': 2, 'start': 220, 'machine': 2, 'duration': 17}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 38, 'machine': 1, 'duration': 40}, {'task': 1, 'start': 78, 'machine': 2, 'duration': 62}, {'task': 2, 'start': 165, 'machine': 3, 'duration': 64}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 1, 'machine': 2, 'duration': 67}, {'task': 1, 'start': 117, 'machine': 1, 'duration': 56}, {'task': 2, 'start': 252, 'machine': 3, 'duration': 49}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 38}, {'task': 1, 'start': 72, 'machine': 3, 'duration': 76}, {'task': 2, 'start': 148, 'machine': 2, 'duration': 72}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 173, 'machine': 1, 'duration': 2}, {'task': 1, 'start': 229, 'machine': 3, 'duration': 23}, {'task': 2, 'start': 252, 'machine': 2, 'duration': 39}]}]",10,json,1 |
| JSP,JSP,"Iβm the lab coordinator trying to line up a stack of experiments so every procedure uses the right instrument for its listed time, with each experimentβs steps done in the order theyβre written. The choice to make is when to book each instrument for each step so nothing overlaps and every step happens exactly once. The good schedules are the ones that get all the experiments finished sooner β measure that by the clock time when the last experiment wraps up, and the earlier that finish time, the better. The specific experiments, steps, instruments, and durations are shown below. |
|
|
| I have 6 experiments and 5 instruments; their IDs are J1, J2, J3, J4, J5, J6 and 0, 1, 2, 3, 4. |
|
|
| | experiment_id | step_index | instrument_id | step_duration | |
| |---|---|---|---| |
| | J1 | 0 | 2 | 1 | |
| | J1 | 1 | 3 | 84 | |
| | J1 | 2 | 1 | 29 | |
| | J1 | 3 | 4 | 85 | |
| | J1 | 4 | 0 | 70 | |
| | J2 | 0 | 0 | 39 | |
| | J2 | 1 | 4 | 45 | |
| | J2 | 2 | 2 | 30 | |
| | J2 | 3 | 3 | 33 | |
| | J2 | 4 | 1 | 60 | |
| | J3 | 0 | 4 | 94 | |
| | J3 | 1 | 0 | 1 | |
| | J3 | 2 | 3 | 21 | |
| | J3 | 3 | 2 | 79 | |
| | J3 | 4 | 1 | 78 | |
| | J4 | 0 | 0 | 54 | |
| | J4 | 1 | 3 | 90 | |
| | J4 | 2 | 1 | 40 | |
| | J4 | 3 | 2 | 93 | |
| | J4 | 4 | 4 | 48 | |
| | J5 | 0 | 2 | 71 | |
| | J5 | 1 | 3 | 71 | |
| | J5 | 2 | 0 | 63 | |
| | J5 | 3 | 4 | 38 | |
| | J5 | 4 | 1 | 1 | |
| | J6 | 0 | 0 | 40 | |
| | J6 | 1 | 4 | 78 | |
| | J6 | 2 | 3 | 1 | |
| | J6 | 3 | 1 | 63 | |
| | J6 | 4 | 2 | 46 | |
|
|
| I'll schedule the bookings so every step runs once in order and no instrument is double-booked. |
|
|
| Also, when you send the schedule back, a handy way to format it is with a simple JSON shape so I can read each experiment (job) and its ordered steps. Something like this: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of that JSON as a little form: each top-level ""job"" is one experiment, ""tasks"" is the ordered list of steps, ""task"" is the step number, ""start"" is the clock time that step begins, ""machine"" is which instrument it uses, and ""duration"" is how long that step runs. It's just a sketch of the shape I need β not the actual schedule yet. |
|
|
| Please make sure to use the exact identifiers from the instance input β no renaming and no new labels. |
|
|
| ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 5, 'nr_jobs': 6, 'jobs': [[[2, 1], [3, 84], [1, 29], [4, 85], [0, 70]], [[0, 39], [4, 45], [2, 30], [3, 33], [1, 60]], [[4, 94], [0, 1], [3, 21], [2, 79], [1, 78]], [[0, 54], [3, 90], [1, 40], [2, 93], [4, 48]], [[2, 71], [3, 71], [0, 63], [4, 38], [1, 1]], [[0, 40], [4, 78], [3, 1], [1, 63], [2, 46]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 1, 'machine': 3, 'duration': 84}, {'task': 2, 'start': 85, 'machine': 1, 'duration': 29}, {'task': 3, 'start': 217, 'machine': 4, 'duration': 85}, {'task': 4, 'start': 352, 'machine': 0, 'duration': 70}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 54, 'machine': 0, 'duration': 39}, {'task': 1, 'start': 94, 'machine': 4, 'duration': 45}, {'task': 2, 'start': 139, 'machine': 2, 'duration': 30}, {'task': 3, 'start': 289, 'machine': 3, 'duration': 33}, {'task': 4, 'start': 359, 'machine': 1, 'duration': 60}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 94}, {'task': 1, 'start': 133, 'machine': 0, 'duration': 1}, {'task': 2, 'start': 175, 'machine': 3, 'duration': 21}, {'task': 3, 'start': 196, 'machine': 2, 'duration': 79}, {'task': 4, 'start': 281, 'machine': 1, 'duration': 78}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 54}, {'task': 1, 'start': 85, 'machine': 3, 'duration': 90}, {'task': 2, 'start': 175, 'machine': 1, 'duration': 40}, {'task': 3, 'start': 275, 'machine': 2, 'duration': 93}, {'task': 4, 'start': 390, 'machine': 4, 'duration': 48}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 1, 'machine': 2, 'duration': 71}, {'task': 1, 'start': 218, 'machine': 3, 'duration': 71}, {'task': 2, 'start': 289, 'machine': 0, 'duration': 63}, {'task': 3, 'start': 352, 'machine': 4, 'duration': 38}, {'task': 4, 'start': 419, 'machine': 1, 'duration': 1}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 93, 'machine': 0, 'duration': 40}, {'task': 1, 'start': 139, 'machine': 4, 'duration': 78}, {'task': 2, 'start': 217, 'machine': 3, 'duration': 1}, {'task': 3, 'start': 218, 'machine': 1, 'duration': 63}, {'task': 4, 'start': 368, 'machine': 2, 'duration': 46}]}]",438.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 5, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': [0, 1, 2, 3, 4], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 2, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 3, 'duration': 84}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 1, 'duration': 29}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 4, 'duration': 85}, {'job_id': 'J1', 'task_id': 4, 'machine_id': 0, 'duration': 70}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 0, 'duration': 39}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 4, 'duration': 45}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 2, 'duration': 30}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 3, 'duration': 33}, {'job_id': 'J2', 'task_id': 4, 'machine_id': 1, 'duration': 60}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 4, 'duration': 94}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 0, 'duration': 1}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 3, 'duration': 21}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 2, 'duration': 79}, {'job_id': 'J3', 'task_id': 4, 'machine_id': 1, 'duration': 78}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 0, 'duration': 54}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 3, 'duration': 90}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 1, 'duration': 40}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 2, 'duration': 93}, {'job_id': 'J4', 'task_id': 4, 'machine_id': 4, 'duration': 48}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 2, 'duration': 71}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 3, 'duration': 71}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 0, 'duration': 63}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 4, 'duration': 38}, {'job_id': 'J5', 'task_id': 4, 'machine_id': 1, 'duration': 1}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 0, 'duration': 40}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 4, 'duration': 78}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 3, 'duration': 1}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 1, 'duration': 63}, {'job_id': 'J6', 'task_id': 4, 'machine_id': 2, 'duration': 46}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 1, 'machine': 3, 'duration': 84}, {'task': 2, 'start': 85, 'machine': 1, 'duration': 29}, {'task': 3, 'start': 217, 'machine': 4, 'duration': 85}, {'task': 4, 'start': 352, 'machine': 0, 'duration': 70}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 54, 'machine': 0, 'duration': 39}, {'task': 1, 'start': 94, 'machine': 4, 'duration': 45}, {'task': 2, 'start': 139, 'machine': 2, 'duration': 30}, {'task': 3, 'start': 289, 'machine': 3, 'duration': 33}, {'task': 4, 'start': 359, 'machine': 1, 'duration': 60}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 94}, {'task': 1, 'start': 133, 'machine': 0, 'duration': 1}, {'task': 2, 'start': 175, 'machine': 3, 'duration': 21}, {'task': 3, 'start': 196, 'machine': 2, 'duration': 79}, {'task': 4, 'start': 281, 'machine': 1, 'duration': 78}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 54}, {'task': 1, 'start': 85, 'machine': 3, 'duration': 90}, {'task': 2, 'start': 175, 'machine': 1, 'duration': 40}, {'task': 3, 'start': 275, 'machine': 2, 'duration': 93}, {'task': 4, 'start': 390, 'machine': 4, 'duration': 48}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 1, 'machine': 2, 'duration': 71}, {'task': 1, 'start': 218, 'machine': 3, 'duration': 71}, {'task': 2, 'start': 289, 'machine': 0, 'duration': 63}, {'task': 3, 'start': 352, 'machine': 4, 'duration': 38}, {'task': 4, 'start': 419, 'machine': 1, 'duration': 1}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 93, 'machine': 0, 'duration': 40}, {'task': 1, 'start': 139, 'machine': 4, 'duration': 78}, {'task': 2, 'start': 217, 'machine': 3, 'duration': 1}, {'task': 3, 'start': 218, 'machine': 1, 'duration': 63}, {'task': 4, 'start': 368, 'machine': 2, 'duration': 46}]}]",11,markdown_table,0 |
| JSP,JSP,"Late one night the operations lead described the situation like a game: batches move through a fixed series of stations, each station is a certain server and each stop takes a set time, and a server can only serve one stop at a time. The game is to time every start so each stop gets its right server for the allotted time, the stops in a batch occur in their given order, nothing is left out or done twice, and the entire game ends as fast as possible β tracked by the moment the last stop finishes on the clock. The exact job and server specifics are shown below. |
|
|
| { |
| ""total_batch_jobs"": 8, |
| ""total_servers"": 3, |
| ""batch_job_ids"": [ |
| ""J1"", |
| ""J2"", |
| ""J3"", |
| ""J4"", |
| ""J5"", |
| ""J6"", |
| ""J7"", |
| ""J8"" |
| ], |
| ""server_ids"": [ |
| 0, |
| 1, |
| 2 |
| ], |
| ""tasks"": [ |
| { |
| ""batch_id"": ""J1"", |
| ""stage_index"": 0, |
| ""required_server_id"": 1, |
| ""expected_runtime"": 1 |
| }, |
| { |
| ""batch_id"": ""J1"", |
| ""stage_index"": 1, |
| ""required_server_id"": 2, |
| ""expected_runtime"": 97 |
| }, |
| { |
| ""batch_id"": ""J1"", |
| ""stage_index"": 2, |
| ""required_server_id"": 0, |
| ""expected_runtime"": 5 |
| }, |
| { |
| ""batch_id"": ""J2"", |
| ""stage_index"": 0, |
| ""required_server_id"": 2, |
| ""expected_runtime"": 31 |
| }, |
| { |
| ""batch_id"": ""J2"", |
| ""stage_index"": 1, |
| ""required_server_id"": 1, |
| ""expected_runtime"": 24 |
| }, |
| { |
| ""batch_id"": ""J2"", |
| ""stage_index"": 2, |
| ""required_server_id"": 0, |
| ""expected_runtime"": 60 |
| }, |
| { |
| ""batch_id"": ""J3"", |
| ""stage_index"": 0, |
| ""required_server_id"": 1, |
| ""expected_runtime"": 49 |
| }, |
| { |
| ""batch_id"": ""J3"", |
| ""stage_index"": 1, |
| ""required_server_id"": 0, |
| ""expected_runtime"": 98 |
| }, |
| { |
| ""batch_id"": ""J3"", |
| ""stage_index"": 2, |
| ""required_server_id"": 2, |
| ""expected_runtime"": 1 |
| }, |
| { |
| ""batch_id"": ""J4"", |
| ""stage_index"": 0, |
| ""required_server_id"": 0, |
| ""expected_runtime"": 54 |
| }, |
| { |
| ""batch_id"": ""J4"", |
| ""stage_index"": 1, |
| ""required_server_id"": 1, |
| ""expected_runtime"": 33 |
| }, |
| { |
| ""batch_id"": ""J4"", |
| ""stage_index"": 2, |
| ""required_server_id"": 2, |
| ""expected_runtime"": 53 |
| }, |
| { |
| ""batch_id"": ""J5"", |
| ""stage_index"": 0, |
| ""required_server_id"": 1, |
| ""expected_runtime"": 5 |
| }, |
| { |
| ""batch_id"": ""J5"", |
| ""stage_index"": 1, |
| ""required_server_id"": 0, |
| ""expected_runtime"": 83 |
| }, |
| { |
| ""batch_id"": ""J5"", |
| ""stage_index"": 2, |
| ""required_server_id"": 2, |
| ""expected_runtime"": 83 |
| }, |
| { |
| ""batch_id"": ""J6"", |
| ""stage_index"": 0, |
| ""required_server_id"": 0, |
| ""expected_runtime"": 8 |
| }, |
| { |
| ""batch_id"": ""J6"", |
| ""stage_index"": 1, |
| ""required_server_id"": 2, |
| ""expected_runtime"": 57 |
| }, |
| { |
| ""batch_id"": ""J6"", |
| ""stage_index"": 2, |
| ""required_server_id"": 1, |
| ""expected_runtime"": 41 |
| }, |
| { |
| ""batch_id"": ""J7"", |
| ""stage_index"": 0, |
| ""required_server_id"": 0, |
| ""expected_runtime"": 32 |
| }, |
| { |
| ""batch_id"": ""J7"", |
| ""stage_index"": 1, |
| ""required_server_id"": 1, |
| ""expected_runtime"": 54 |
| }, |
| { |
| ""batch_id"": ""J7"", |
| ""stage_index"": 2, |
| ""required_server_id"": 2, |
| ""expected_runtime"": 13 |
| }, |
| { |
| ""batch_id"": ""J8"", |
| ""stage_index"": 0, |
| ""required_server_id"": 2, |
| ""expected_runtime"": 40 |
| }, |
| { |
| ""batch_id"": ""J8"", |
| ""stage_index"": 1, |
| ""required_server_id"": 0, |
| ""expected_runtime"": 22 |
| }, |
| { |
| ""batch_id"": ""J8"", |
| ""stage_index"": 2, |
| ""required_server_id"": 1, |
| ""expected_runtime"": 32 |
| } |
| ] |
| } |
|
|
| Also, to keep things tidy when you send the schedule back, just follow this simple JSON shape: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it as a little form: ""solution"" is the list of jobs, each job has its id and a list of tasks, and each task entry says which numbered stop it is, the clock time it starts, which server (machine) it uses, and how long it runs. This is just the sketch of the shape I need β not the actual schedule itself. |
|
|
| Please make sure to use the exact identifiers from the instance input β donβt rename them and donβt invent new labels. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 3, 'nr_jobs': 8, 'jobs': [[[1, 1], [2, 97], [0, 5]], [[2, 31], [1, 24], [0, 60]], [[1, 49], [0, 98], [2, 1]], [[0, 54], [1, 33], [2, 53]], [[1, 5], [0, 83], [2, 83]], [[0, 8], [2, 57], [1, 41]], [[0, 32], [1, 54], [2, 13]], [[2, 40], [0, 22], [1, 32]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 54, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 71, 'machine': 2, 'duration': 97}, {'task': 2, 'start': 357, 'machine': 0, 'duration': 5}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 31}, {'task': 1, 'start': 88, 'machine': 1, 'duration': 24}, {'task': 2, 'start': 177, 'machine': 0, 'duration': 60}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 5, 'machine': 1, 'duration': 49}, {'task': 1, 'start': 259, 'machine': 0, 'duration': 98}, {'task': 2, 'start': 374, 'machine': 2, 'duration': 1}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 54}, {'task': 1, 'start': 55, 'machine': 1, 'duration': 33}, {'task': 2, 'start': 308, 'machine': 2, 'duration': 53}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 5}, {'task': 1, 'start': 54, 'machine': 0, 'duration': 83}, {'task': 2, 'start': 225, 'machine': 2, 'duration': 83}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 137, 'machine': 0, 'duration': 8}, {'task': 1, 'start': 168, 'machine': 2, 'duration': 57}, {'task': 2, 'start': 231, 'machine': 1, 'duration': 41}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 145, 'machine': 0, 'duration': 32}, {'task': 1, 'start': 177, 'machine': 1, 'duration': 54}, {'task': 2, 'start': 361, 'machine': 2, 'duration': 13}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 31, 'machine': 2, 'duration': 40}, {'task': 1, 'start': 237, 'machine': 0, 'duration': 22}, {'task': 2, 'start': 272, 'machine': 1, 'duration': 32}]}]",375.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': [0, 1, 2], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 1, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 2, 'duration': 97}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 0, 'duration': 5}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 2, 'duration': 31}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 1, 'duration': 24}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 0, 'duration': 60}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 1, 'duration': 49}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 0, 'duration': 98}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 2, 'duration': 1}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 0, 'duration': 54}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 1, 'duration': 33}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 2, 'duration': 53}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 1, 'duration': 5}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 0, 'duration': 83}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 2, 'duration': 83}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 0, 'duration': 8}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 2, 'duration': 57}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 1, 'duration': 41}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 0, 'duration': 32}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 1, 'duration': 54}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 2, 'duration': 13}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 2, 'duration': 40}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 0, 'duration': 22}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 1, 'duration': 32}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 54, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 71, 'machine': 2, 'duration': 97}, {'task': 2, 'start': 357, 'machine': 0, 'duration': 5}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 31}, {'task': 1, 'start': 88, 'machine': 1, 'duration': 24}, {'task': 2, 'start': 177, 'machine': 0, 'duration': 60}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 5, 'machine': 1, 'duration': 49}, {'task': 1, 'start': 259, 'machine': 0, 'duration': 98}, {'task': 2, 'start': 374, 'machine': 2, 'duration': 1}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 54}, {'task': 1, 'start': 55, 'machine': 1, 'duration': 33}, {'task': 2, 'start': 308, 'machine': 2, 'duration': 53}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 5}, {'task': 1, 'start': 54, 'machine': 0, 'duration': 83}, {'task': 2, 'start': 225, 'machine': 2, 'duration': 83}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 137, 'machine': 0, 'duration': 8}, {'task': 1, 'start': 168, 'machine': 2, 'duration': 57}, {'task': 2, 'start': 231, 'machine': 1, 'duration': 41}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 145, 'machine': 0, 'duration': 32}, {'task': 1, 'start': 177, 'machine': 1, 'duration': 54}, {'task': 2, 'start': 361, 'machine': 2, 'duration': 13}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 31, 'machine': 2, 'duration': 40}, {'task': 1, 'start': 237, 'machine': 0, 'duration': 22}, {'task': 2, 'start': 272, 'machine': 1, 'duration': 32}]}]",12,json,0 |
| JSP,JSP,"In the edit bay itβs down to sequencing: each scene needs a lineup of tasks done one after another, each task tied to a particular station and taking a fixed amount of time. Stations canβt do two tasks at once, and every required task must occur once and only once. The whole exercise is about getting the project fully wrapped ASAP β measured by the moment the last task finishes β so plans are judged by how early that finishing moment is. The concrete scene list and durations follow below. |
|
|
| { |
| ""nr_scenes"": 8, |
| ""nr_stations"": 3, |
| ""scenes"": [ |
| ""J1"", |
| ""J2"", |
| ""J3"", |
| ""J4"", |
| ""J5"", |
| ""J6"", |
| ""J7"", |
| ""J8"" |
| ], |
| ""stations"": [ |
| 1, |
| 2, |
| 3 |
| ], |
| ""tasks"": [ |
| { |
| ""scene_id"": ""J1"", |
| ""step_index"": 0, |
| ""station_id"": 2, |
| ""step_duration"": 1 |
| }, |
| { |
| ""scene_id"": ""J1"", |
| ""step_index"": 1, |
| ""station_id"": 3, |
| ""step_duration"": 11 |
| }, |
| { |
| ""scene_id"": ""J1"", |
| ""step_index"": 2, |
| ""station_id"": 1, |
| ""step_duration"": 80 |
| }, |
| { |
| ""scene_id"": ""J2"", |
| ""step_index"": 0, |
| ""station_id"": 2, |
| ""step_duration"": 76 |
| }, |
| { |
| ""scene_id"": ""J2"", |
| ""step_index"": 1, |
| ""station_id"": 1, |
| ""step_duration"": 77 |
| }, |
| { |
| ""scene_id"": ""J2"", |
| ""step_index"": 2, |
| ""station_id"": 3, |
| ""step_duration"": 82 |
| }, |
| { |
| ""scene_id"": ""J3"", |
| ""step_index"": 0, |
| ""station_id"": 3, |
| ""step_duration"": 54 |
| }, |
| { |
| ""scene_id"": ""J3"", |
| ""step_index"": 1, |
| ""station_id"": 1, |
| ""step_duration"": 66 |
| }, |
| { |
| ""scene_id"": ""J3"", |
| ""step_index"": 2, |
| ""station_id"": 2, |
| ""step_duration"": 68 |
| }, |
| { |
| ""scene_id"": ""J4"", |
| ""step_index"": 0, |
| ""station_id"": 2, |
| ""step_duration"": 47 |
| }, |
| { |
| ""scene_id"": ""J4"", |
| ""step_index"": 1, |
| ""station_id"": 1, |
| ""step_duration"": 71 |
| }, |
| { |
| ""scene_id"": ""J4"", |
| ""step_index"": 2, |
| ""station_id"": 3, |
| ""step_duration"": 5 |
| }, |
| { |
| ""scene_id"": ""J5"", |
| ""step_index"": 0, |
| ""station_id"": 3, |
| ""step_duration"": 87 |
| }, |
| { |
| ""scene_id"": ""J5"", |
| ""step_index"": 1, |
| ""station_id"": 1, |
| ""step_duration"": 86 |
| }, |
| { |
| ""scene_id"": ""J5"", |
| ""step_index"": 2, |
| ""station_id"": 2, |
| ""step_duration"": 88 |
| }, |
| { |
| ""scene_id"": ""J6"", |
| ""step_index"": 0, |
| ""station_id"": 2, |
| ""step_duration"": 60 |
| }, |
| { |
| ""scene_id"": ""J6"", |
| ""step_index"": 1, |
| ""station_id"": 1, |
| ""step_duration"": 24 |
| }, |
| { |
| ""scene_id"": ""J6"", |
| ""step_index"": 2, |
| ""station_id"": 3, |
| ""step_duration"": 42 |
| }, |
| { |
| ""scene_id"": ""J7"", |
| ""step_index"": 0, |
| ""station_id"": 1, |
| ""step_duration"": 70 |
| }, |
| { |
| ""scene_id"": ""J7"", |
| ""step_index"": 1, |
| ""station_id"": 3, |
| ""step_duration"": 61 |
| }, |
| { |
| ""scene_id"": ""J7"", |
| ""step_index"": 2, |
| ""station_id"": 2, |
| ""step_duration"": 54 |
| }, |
| { |
| ""scene_id"": ""J8"", |
| ""step_index"": 0, |
| ""station_id"": 1, |
| ""step_duration"": 9 |
| }, |
| { |
| ""scene_id"": ""J8"", |
| ""step_index"": 1, |
| ""station_id"": 3, |
| ""step_duration"": 80 |
| }, |
| { |
| ""scene_id"": ""J8"", |
| ""step_index"": 2, |
| ""station_id"": 2, |
| ""step_duration"": 25 |
| } |
| ] |
| } |
|
|
| Oh, and to keep things tidy, please shape your plan like this simple JSON layout so I can read it automatically: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it like a little form: each ""job"" is one of the scenes, ""tasks"" lists the steps for that scene, ""task"" is the step index, ""start"" is when that step begins, ""machine"" is the station that does the work, and ""duration"" is how long that step runs. Super casual β the JSON is just a sketch of the shape I need, not the actual answer itself. |
|
|
| Please also make sure to use the exact identifiers from the instance input β don't rename them or invent new ones. |
| - For example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 3, 'nr_jobs': 8, 'jobs': [[[1, 1], [2, 11], [0, 80]], [[1, 76], [0, 77], [2, 82]], [[2, 54], [0, 66], [1, 68]], [[1, 47], [0, 71], [2, 5]], [[2, 87], [0, 86], [1, 88]], [[1, 60], [0, 24], [2, 42]], [[0, 70], [2, 61], [1, 54]], [[0, 9], [2, 80], [1, 25]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 183, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 282, 'machine': 2, 'duration': 11}, {'task': 2, 'start': 403, 'machine': 0, 'duration': 80}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 76}, {'task': 1, 'start': 79, 'machine': 0, 'duration': 77}, {'task': 2, 'start': 293, 'machine': 2, 'duration': 82}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 87, 'machine': 2, 'duration': 54}, {'task': 1, 'start': 242, 'machine': 0, 'duration': 66}, {'task': 2, 'start': 344, 'machine': 1, 'duration': 68}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 136, 'machine': 1, 'duration': 47}, {'task': 1, 'start': 308, 'machine': 0, 'duration': 71}, {'task': 2, 'start': 459, 'machine': 2, 'duration': 5}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 87}, {'task': 1, 'start': 156, 'machine': 0, 'duration': 86}, {'task': 2, 'start': 256, 'machine': 1, 'duration': 88}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 76, 'machine': 1, 'duration': 60}, {'task': 1, 'start': 379, 'machine': 0, 'duration': 24}, {'task': 2, 'start': 403, 'machine': 2, 'duration': 42}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 70}, {'task': 1, 'start': 141, 'machine': 2, 'duration': 61}, {'task': 2, 'start': 202, 'machine': 1, 'duration': 54}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 70, 'machine': 0, 'duration': 9}, {'task': 1, 'start': 202, 'machine': 2, 'duration': 80}, {'task': 2, 'start': 412, 'machine': 1, 'duration': 25}]}]",483.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': [1, 2, 3], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 2, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 3, 'duration': 11}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 1, 'duration': 80}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 2, 'duration': 76}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 1, 'duration': 77}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 3, 'duration': 82}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 3, 'duration': 54}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 1, 'duration': 66}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 2, 'duration': 68}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 2, 'duration': 47}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 1, 'duration': 71}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 3, 'duration': 5}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 3, 'duration': 87}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 1, 'duration': 86}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 2, 'duration': 88}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 2, 'duration': 60}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 1, 'duration': 24}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 3, 'duration': 42}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 1, 'duration': 70}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 3, 'duration': 61}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 2, 'duration': 54}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 1, 'duration': 9}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 3, 'duration': 80}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 2, 'duration': 25}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 183, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 282, 'machine': 3, 'duration': 11}, {'task': 2, 'start': 403, 'machine': 1, 'duration': 80}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 76}, {'task': 1, 'start': 79, 'machine': 1, 'duration': 77}, {'task': 2, 'start': 293, 'machine': 3, 'duration': 82}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 87, 'machine': 3, 'duration': 54}, {'task': 1, 'start': 242, 'machine': 1, 'duration': 66}, {'task': 2, 'start': 344, 'machine': 2, 'duration': 68}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 136, 'machine': 2, 'duration': 47}, {'task': 1, 'start': 308, 'machine': 1, 'duration': 71}, {'task': 2, 'start': 459, 'machine': 3, 'duration': 5}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 87}, {'task': 1, 'start': 156, 'machine': 1, 'duration': 86}, {'task': 2, 'start': 256, 'machine': 2, 'duration': 88}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 76, 'machine': 2, 'duration': 60}, {'task': 1, 'start': 379, 'machine': 1, 'duration': 24}, {'task': 2, 'start': 403, 'machine': 3, 'duration': 42}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 70}, {'task': 1, 'start': 141, 'machine': 3, 'duration': 61}, {'task': 2, 'start': 202, 'machine': 2, 'duration': 54}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 70, 'machine': 1, 'duration': 9}, {'task': 1, 'start': 202, 'machine': 3, 'duration': 80}, {'task': 2, 'start': 412, 'machine': 2, 'duration': 25}]}]",13,json,1 |
| JSP,JSP,"On a normal morning at the workshop, every piece of clothing must pass through a fixed chain of stations, each taking its expected time on a particular machine. The task for the manager is to line up those stations across all garments so machines donβt collide, each operation occurs exactly once and in order, and the entire load is finished quickly. The straightforward way to judge two different line-ups is to look at the clock when the last garment is done β whichever clock time is earlier is the better line-up. The concrete details are shown below. |
|
|
| { |
| ""num_garments"": 8, |
| ""num_stations"": 5, |
| ""garment_ids"": [ |
| ""J1"", |
| ""J2"", |
| ""J3"", |
| ""J4"", |
| ""J5"", |
| ""J6"", |
| ""J7"", |
| ""J8"" |
| ], |
| ""station_ids"": [ |
| 0, |
| 1, |
| 2, |
| 3, |
| 4 |
| ], |
| ""tasks"": [ |
| { |
| ""garment_id"": ""J1"", |
| ""step_index"": 0, |
| ""station_id"": 4, |
| ""step_duration"": 1 |
| }, |
| { |
| ""garment_id"": ""J1"", |
| ""step_index"": 1, |
| ""station_id"": 3, |
| ""step_duration"": 24 |
| }, |
| { |
| ""garment_id"": ""J1"", |
| ""step_index"": 2, |
| ""station_id"": 1, |
| ""step_duration"": 56 |
| }, |
| { |
| ""garment_id"": ""J1"", |
| ""step_index"": 3, |
| ""station_id"": 2, |
| ""step_duration"": 23 |
| }, |
| { |
| ""garment_id"": ""J1"", |
| ""step_index"": 4, |
| ""station_id"": 0, |
| ""step_duration"": 30 |
| }, |
| { |
| ""garment_id"": ""J2"", |
| ""step_index"": 0, |
| ""station_id"": 3, |
| ""step_duration"": 5 |
| }, |
| { |
| ""garment_id"": ""J2"", |
| ""step_index"": 1, |
| ""station_id"": 1, |
| ""step_duration"": 59 |
| }, |
| { |
| ""garment_id"": ""J2"", |
| ""step_index"": 2, |
| ""station_id"": 0, |
| ""step_duration"": 34 |
| }, |
| { |
| ""garment_id"": ""J2"", |
| ""step_index"": 3, |
| ""station_id"": 2, |
| ""step_duration"": 36 |
| }, |
| { |
| ""garment_id"": ""J2"", |
| ""step_index"": 4, |
| ""station_id"": 4, |
| ""step_duration"": 41 |
| }, |
| { |
| ""garment_id"": ""J3"", |
| ""step_index"": 0, |
| ""station_id"": 2, |
| ""step_duration"": 10 |
| }, |
| { |
| ""garment_id"": ""J3"", |
| ""step_index"": 1, |
| ""station_id"": 3, |
| ""step_duration"": 57 |
| }, |
| { |
| ""garment_id"": ""J3"", |
| ""step_index"": 2, |
| ""station_id"": 0, |
| ""step_duration"": 70 |
| }, |
| { |
| ""garment_id"": ""J3"", |
| ""step_index"": 3, |
| ""station_id"": 4, |
| ""step_duration"": 90 |
| }, |
| { |
| ""garment_id"": ""J3"", |
| ""step_index"": 4, |
| ""station_id"": 1, |
| ""step_duration"": 94 |
| }, |
| { |
| ""garment_id"": ""J4"", |
| ""step_index"": 0, |
| ""station_id"": 3, |
| ""step_duration"": 14 |
| }, |
| { |
| ""garment_id"": ""J4"", |
| ""step_index"": 1, |
| ""station_id"": 0, |
| ""step_duration"": 91 |
| }, |
| { |
| ""garment_id"": ""J4"", |
| ""step_index"": 2, |
| ""station_id"": 4, |
| ""step_duration"": 42 |
| }, |
| { |
| ""garment_id"": ""J4"", |
| ""step_index"": 3, |
| ""station_id"": 2, |
| ""step_duration"": 9 |
| }, |
| { |
| ""garment_id"": ""J4"", |
| ""step_index"": 4, |
| ""station_id"": 1, |
| ""step_duration"": 67 |
| }, |
| { |
| ""garment_id"": ""J5"", |
| ""step_index"": 0, |
| ""station_id"": 3, |
| ""step_duration"": 96 |
| }, |
| { |
| ""garment_id"": ""J5"", |
| ""step_index"": 1, |
| ""station_id"": 4, |
| ""step_duration"": 77 |
| }, |
| { |
| ""garment_id"": ""J5"", |
| ""step_index"": 2, |
| ""station_id"": 0, |
| ""step_duration"": 39 |
| }, |
| { |
| ""garment_id"": ""J5"", |
| ""step_index"": 3, |
| ""station_id"": 1, |
| ""step_duration"": 18 |
| }, |
| { |
| ""garment_id"": ""J5"", |
| ""step_index"": 4, |
| ""station_id"": 2, |
| ""step_duration"": 54 |
| }, |
| { |
| ""garment_id"": ""J6"", |
| ""step_index"": 0, |
| ""station_id"": 2, |
| ""step_duration"": 98 |
| }, |
| { |
| ""garment_id"": ""J6"", |
| ""step_index"": 1, |
| ""station_id"": 3, |
| ""step_duration"": 6 |
| }, |
| { |
| ""garment_id"": ""J6"", |
| ""step_index"": 2, |
| ""station_id"": 0, |
| ""step_duration"": 96 |
| }, |
| { |
| ""garment_id"": ""J6"", |
| ""step_index"": 3, |
| ""station_id"": 1, |
| ""step_duration"": 88 |
| }, |
| { |
| ""garment_id"": ""J6"", |
| ""step_index"": 4, |
| ""station_id"": 4, |
| ""step_duration"": 56 |
| }, |
| { |
| ""garment_id"": ""J7"", |
| ""step_index"": 0, |
| ""station_id"": 3, |
| ""step_duration"": 7 |
| }, |
| { |
| ""garment_id"": ""J7"", |
| ""step_index"": 1, |
| ""station_id"": 0, |
| ""step_duration"": 92 |
| }, |
| { |
| ""garment_id"": ""J7"", |
| ""step_index"": 2, |
| ""station_id"": 2, |
| ""step_duration"": 44 |
| }, |
| { |
| ""garment_id"": ""J7"", |
| ""step_index"": 3, |
| ""station_id"": 4, |
| ""step_duration"": 61 |
| }, |
| { |
| ""garment_id"": ""J7"", |
| ""step_index"": 4, |
| ""station_id"": 1, |
| ""step_duration"": 48 |
| }, |
| { |
| ""garment_id"": ""J8"", |
| ""step_index"": 0, |
| ""station_id"": 2, |
| ""step_duration"": 6 |
| }, |
| { |
| ""garment_id"": ""J8"", |
| ""step_index"": 1, |
| ""station_id"": 3, |
| ""step_duration"": 79 |
| }, |
| { |
| ""garment_id"": ""J8"", |
| ""step_index"": 2, |
| ""station_id"": 0, |
| ""step_duration"": 60 |
| }, |
| { |
| ""garment_id"": ""J8"", |
| ""step_index"": 3, |
| ""station_id"": 1, |
| ""step_duration"": 51 |
| }, |
| { |
| ""garment_id"": ""J8"", |
| ""step_index"": 4, |
| ""station_id"": 4, |
| ""step_duration"": 10 |
| } |
| ] |
| } |
|
|
| And just so we're on the same page about how I'd like the final reply to look, here's a relaxed sketch of the exact JSON layout I expect you to follow when you give the schedule: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it like a simple form: each top-level entry is a job (a garment), and under each job there's a list of tasks in the order they must happen. For each task you record which operation it is (task), when it starts (start), which machine it uses (machine), and how long it runs (duration). This is just the shape I want β a sketch, not the actual filled-in schedule. |
|
|
| Please make sure all identifiers in your real schedule match the instance input exactly β no renaming, no new labels. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 5, 'nr_jobs': 8, 'jobs': [[[4, 1], [3, 24], [1, 56], [2, 23], [0, 30]], [[3, 5], [1, 59], [0, 34], [2, 36], [4, 41]], [[2, 10], [3, 57], [0, 70], [4, 90], [1, 94]], [[3, 14], [0, 91], [4, 42], [2, 9], [1, 67]], [[3, 96], [4, 77], [0, 39], [1, 18], [2, 54]], [[2, 98], [3, 6], [0, 96], [1, 88], [4, 56]], [[3, 7], [0, 92], [2, 44], [4, 61], [1, 48]], [[2, 6], [3, 79], [0, 60], [1, 51], [4, 10]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 1}, {'task': 1, 'start': 14, 'machine': 3, 'duration': 24}, {'task': 2, 'start': 71, 'machine': 1, 'duration': 56}, {'task': 3, 'start': 158, 'machine': 2, 'duration': 23}, {'task': 4, 'start': 496, 'machine': 0, 'duration': 30}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 95, 'machine': 3, 'duration': 5}, {'task': 1, 'start': 127, 'machine': 1, 'duration': 59}, {'task': 2, 'start': 423, 'machine': 0, 'duration': 34}, {'task': 3, 'start': 457, 'machine': 2, 'duration': 36}, {'task': 4, 'start': 507, 'machine': 4, 'duration': 41}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 10}, {'task': 1, 'start': 38, 'machine': 3, 'duration': 57}, {'task': 2, 'start': 105, 'machine': 0, 'duration': 70}, {'task': 3, 'start': 175, 'machine': 4, 'duration': 90}, {'task': 4, 'start': 265, 'machine': 1, 'duration': 94}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 14}, {'task': 1, 'start': 14, 'machine': 0, 'duration': 91}, {'task': 2, 'start': 105, 'machine': 4, 'duration': 42}, {'task': 3, 'start': 181, 'machine': 2, 'duration': 9}, {'task': 4, 'start': 190, 'machine': 1, 'duration': 67}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 114, 'machine': 3, 'duration': 96}, {'task': 1, 'start': 265, 'machine': 4, 'duration': 77}, {'task': 2, 'start': 457, 'machine': 0, 'duration': 39}, {'task': 3, 'start': 502, 'machine': 1, 'duration': 18}, {'task': 4, 'start': 520, 'machine': 2, 'duration': 54}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 10, 'machine': 2, 'duration': 98}, {'task': 1, 'start': 108, 'machine': 3, 'duration': 6}, {'task': 2, 'start': 267, 'machine': 0, 'duration': 96}, {'task': 3, 'start': 363, 'machine': 1, 'duration': 88}, {'task': 4, 'start': 451, 'machine': 4, 'duration': 56}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 100, 'machine': 3, 'duration': 7}, {'task': 1, 'start': 175, 'machine': 0, 'duration': 92}, {'task': 2, 'start': 267, 'machine': 2, 'duration': 44}, {'task': 3, 'start': 342, 'machine': 4, 'duration': 61}, {'task': 4, 'start': 520, 'machine': 1, 'duration': 48}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 152, 'machine': 2, 'duration': 6}, {'task': 1, 'start': 210, 'machine': 3, 'duration': 79}, {'task': 2, 'start': 363, 'machine': 0, 'duration': 60}, {'task': 3, 'start': 451, 'machine': 1, 'duration': 51}, {'task': 4, 'start': 548, 'machine': 4, 'duration': 10}]}]",574.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 5, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': [0, 1, 2, 3, 4], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 4, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 3, 'duration': 24}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 1, 'duration': 56}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 2, 'duration': 23}, {'job_id': 'J1', 'task_id': 4, 'machine_id': 0, 'duration': 30}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 3, 'duration': 5}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 1, 'duration': 59}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 0, 'duration': 34}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 2, 'duration': 36}, {'job_id': 'J2', 'task_id': 4, 'machine_id': 4, 'duration': 41}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 2, 'duration': 10}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 3, 'duration': 57}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 0, 'duration': 70}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 4, 'duration': 90}, {'job_id': 'J3', 'task_id': 4, 'machine_id': 1, 'duration': 94}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 3, 'duration': 14}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 0, 'duration': 91}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 4, 'duration': 42}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 2, 'duration': 9}, {'job_id': 'J4', 'task_id': 4, 'machine_id': 1, 'duration': 67}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 3, 'duration': 96}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 4, 'duration': 77}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 0, 'duration': 39}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 1, 'duration': 18}, {'job_id': 'J5', 'task_id': 4, 'machine_id': 2, 'duration': 54}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 2, 'duration': 98}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 3, 'duration': 6}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 0, 'duration': 96}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 1, 'duration': 88}, {'job_id': 'J6', 'task_id': 4, 'machine_id': 4, 'duration': 56}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 3, 'duration': 7}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 0, 'duration': 92}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 2, 'duration': 44}, {'job_id': 'J7', 'task_id': 3, 'machine_id': 4, 'duration': 61}, {'job_id': 'J7', 'task_id': 4, 'machine_id': 1, 'duration': 48}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 2, 'duration': 6}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 3, 'duration': 79}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 0, 'duration': 60}, {'job_id': 'J8', 'task_id': 3, 'machine_id': 1, 'duration': 51}, {'job_id': 'J8', 'task_id': 4, 'machine_id': 4, 'duration': 10}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 1}, {'task': 1, 'start': 14, 'machine': 3, 'duration': 24}, {'task': 2, 'start': 71, 'machine': 1, 'duration': 56}, {'task': 3, 'start': 158, 'machine': 2, 'duration': 23}, {'task': 4, 'start': 496, 'machine': 0, 'duration': 30}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 95, 'machine': 3, 'duration': 5}, {'task': 1, 'start': 127, 'machine': 1, 'duration': 59}, {'task': 2, 'start': 423, 'machine': 0, 'duration': 34}, {'task': 3, 'start': 457, 'machine': 2, 'duration': 36}, {'task': 4, 'start': 507, 'machine': 4, 'duration': 41}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 10}, {'task': 1, 'start': 38, 'machine': 3, 'duration': 57}, {'task': 2, 'start': 105, 'machine': 0, 'duration': 70}, {'task': 3, 'start': 175, 'machine': 4, 'duration': 90}, {'task': 4, 'start': 265, 'machine': 1, 'duration': 94}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 14}, {'task': 1, 'start': 14, 'machine': 0, 'duration': 91}, {'task': 2, 'start': 105, 'machine': 4, 'duration': 42}, {'task': 3, 'start': 181, 'machine': 2, 'duration': 9}, {'task': 4, 'start': 190, 'machine': 1, 'duration': 67}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 114, 'machine': 3, 'duration': 96}, {'task': 1, 'start': 265, 'machine': 4, 'duration': 77}, {'task': 2, 'start': 457, 'machine': 0, 'duration': 39}, {'task': 3, 'start': 502, 'machine': 1, 'duration': 18}, {'task': 4, 'start': 520, 'machine': 2, 'duration': 54}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 10, 'machine': 2, 'duration': 98}, {'task': 1, 'start': 108, 'machine': 3, 'duration': 6}, {'task': 2, 'start': 267, 'machine': 0, 'duration': 96}, {'task': 3, 'start': 363, 'machine': 1, 'duration': 88}, {'task': 4, 'start': 451, 'machine': 4, 'duration': 56}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 100, 'machine': 3, 'duration': 7}, {'task': 1, 'start': 175, 'machine': 0, 'duration': 92}, {'task': 2, 'start': 267, 'machine': 2, 'duration': 44}, {'task': 3, 'start': 342, 'machine': 4, 'duration': 61}, {'task': 4, 'start': 520, 'machine': 1, 'duration': 48}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 152, 'machine': 2, 'duration': 6}, {'task': 1, 'start': 210, 'machine': 3, 'duration': 79}, {'task': 2, 'start': 363, 'machine': 0, 'duration': 60}, {'task': 3, 'start': 451, 'machine': 1, 'duration': 51}, {'task': 4, 'start': 548, 'machine': 4, 'duration': 10}]}]",14,json,0 |
| JSP,JSP,"Weβre juggling several landscaping jobs at once, and the task is to slot each site activity onto its assigned machine and pick start times so things move smoothly. Each job has a fixed sequence of steps that must happen in order, machines canβt do overlapping work, and every step must be scheduled exactly once for its full duration. A schedule is judged by when the very last job wraps up β just check each jobβs finish time and use the latest one; the sooner that is, the better. The concrete project details and timings are shown below. |
|
|
| |
| |
| |
| |
| project_id,activity_index,required_machine_id,activity_duration |
| J1,0,D,1 |
| J1,1,E,37 |
| J1,2,B,32 |
| J1,3,C,68 |
| J1,4,A,83 |
| J2,0,E,26 |
| J2,1,B,63 |
| J2,2,A,2 |
| J2,3,D,5 |
| J2,4,C,34 |
| J3,0,C,48 |
| J3,1,E,9 |
| J3,2,D,53 |
| J3,3,B,93 |
| J3,4,A,99 |
| J4,0,E,66 |
| J4,1,D,58 |
| J4,2,B,43 |
| J4,3,C,47 |
| J4,4,A,74 |
| J5,0,C,38 |
| J5,1,E,46 |
| J5,2,D,98 |
| J5,3,B,11 |
| J5,4,A,39 |
| J6,0,E,51 |
| J6,1,D,15 |
| J6,2,C,62 |
| J6,3,A,30 |
| J6,4,B,27 |
| J7,0,E,97 |
| J7,1,B,68 |
| J7,2,C,70 |
| J7,3,D,66 |
| J7,4,A,22 |
| J8,0,C,38 |
| J8,1,E,43 |
| J8,2,D,36 |
| J8,3,A,50 |
| J8,4,B,46 |
|
|
| When you hand me the schedule, just drop it into a small JSON snippet like this so I can parse it easily: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| This shows the shape I expect: a top-level ""solution"" list with one entry per job, each job saying which job it is and listing its tasks; each task lists its index in the job, the start time, which machine it runs on, and how long it takes. Think of it like filling out a simple form for each job step β nothing fussy. |
|
|
| This JSON is only a sketch of the expected shape, not the actual answer. Please use the exact identifiers from the instance input β do not rename jobs or machines or invent new labels. |
| - for example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 5, 'nr_jobs': 8, 'jobs': [[[3, 1], [4, 37], [1, 32], [2, 68], [0, 83]], [[4, 26], [1, 63], [0, 2], [3, 5], [2, 34]], [[2, 48], [4, 9], [3, 53], [1, 93], [0, 99]], [[4, 66], [3, 58], [1, 43], [2, 47], [0, 74]], [[2, 38], [4, 46], [3, 98], [1, 11], [0, 39]], [[4, 51], [3, 15], [2, 62], [0, 30], [1, 27]], [[4, 97], [1, 68], [2, 70], [3, 66], [0, 22]], [[2, 38], [4, 43], [3, 36], [0, 50], [1, 46]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 1, 'machine': 4, 'duration': 37}, {'task': 2, 'start': 38, 'machine': 1, 'duration': 32}, {'task': 3, 'start': 70, 'machine': 2, 'duration': 68}, {'task': 4, 'start': 138, 'machine': 0, 'duration': 83}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 309, 'machine': 4, 'duration': 26}, {'task': 1, 'start': 335, 'machine': 1, 'duration': 63}, {'task': 2, 'start': 444, 'machine': 0, 'duration': 2}, {'task': 3, 'start': 446, 'machine': 3, 'duration': 5}, {'task': 4, 'start': 484, 'machine': 2, 'duration': 34}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 48}, {'task': 1, 'start': 48, 'machine': 4, 'duration': 9}, {'task': 2, 'start': 57, 'machine': 3, 'duration': 53}, {'task': 3, 'start': 110, 'machine': 1, 'duration': 93}, {'task': 4, 'start': 221, 'machine': 0, 'duration': 99}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 57, 'machine': 4, 'duration': 66}, {'task': 1, 'start': 123, 'machine': 3, 'duration': 58}, {'task': 2, 'start': 203, 'machine': 1, 'duration': 43}, {'task': 3, 'start': 246, 'machine': 2, 'duration': 47}, {'task': 4, 'start': 370, 'machine': 0, 'duration': 74}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 176, 'machine': 2, 'duration': 38}, {'task': 1, 'start': 263, 'machine': 4, 'duration': 46}, {'task': 2, 'start': 309, 'machine': 3, 'duration': 98}, {'task': 3, 'start': 407, 'machine': 1, 'duration': 11}, {'task': 4, 'start': 446, 'machine': 0, 'duration': 39}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 335, 'machine': 4, 'duration': 51}, {'task': 1, 'start': 407, 'machine': 3, 'duration': 15}, {'task': 2, 'start': 422, 'machine': 2, 'duration': 62}, {'task': 3, 'start': 485, 'machine': 0, 'duration': 30}, {'task': 4, 'start': 515, 'machine': 1, 'duration': 27}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 123, 'machine': 4, 'duration': 97}, {'task': 1, 'start': 246, 'machine': 1, 'duration': 68}, {'task': 2, 'start': 314, 'machine': 2, 'duration': 70}, {'task': 3, 'start': 451, 'machine': 3, 'duration': 66}, {'task': 4, 'start': 517, 'machine': 0, 'duration': 22}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 138, 'machine': 2, 'duration': 38}, {'task': 1, 'start': 220, 'machine': 4, 'duration': 43}, {'task': 2, 'start': 263, 'machine': 3, 'duration': 36}, {'task': 3, 'start': 320, 'machine': 0, 'duration': 50}, {'task': 4, 'start': 418, 'machine': 1, 'duration': 46}]}]",542.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 5, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': ['A', 'B', 'C', 'D', 'E'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'D', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'E', 'duration': 37}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'B', 'duration': 32}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 'C', 'duration': 68}, {'job_id': 'J1', 'task_id': 4, 'machine_id': 'A', 'duration': 83}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'E', 'duration': 26}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'B', 'duration': 63}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'A', 'duration': 2}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 'D', 'duration': 5}, {'job_id': 'J2', 'task_id': 4, 'machine_id': 'C', 'duration': 34}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'C', 'duration': 48}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'E', 'duration': 9}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'D', 'duration': 53}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 'B', 'duration': 93}, {'job_id': 'J3', 'task_id': 4, 'machine_id': 'A', 'duration': 99}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'E', 'duration': 66}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'D', 'duration': 58}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'B', 'duration': 43}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 'C', 'duration': 47}, {'job_id': 'J4', 'task_id': 4, 'machine_id': 'A', 'duration': 74}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'C', 'duration': 38}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'E', 'duration': 46}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'D', 'duration': 98}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 'B', 'duration': 11}, {'job_id': 'J5', 'task_id': 4, 'machine_id': 'A', 'duration': 39}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'E', 'duration': 51}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'D', 'duration': 15}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'C', 'duration': 62}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 'A', 'duration': 30}, {'job_id': 'J6', 'task_id': 4, 'machine_id': 'B', 'duration': 27}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 'E', 'duration': 97}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 'B', 'duration': 68}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 'C', 'duration': 70}, {'job_id': 'J7', 'task_id': 3, 'machine_id': 'D', 'duration': 66}, {'job_id': 'J7', 'task_id': 4, 'machine_id': 'A', 'duration': 22}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 'C', 'duration': 38}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 'E', 'duration': 43}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 'D', 'duration': 36}, {'job_id': 'J8', 'task_id': 3, 'machine_id': 'A', 'duration': 50}, {'job_id': 'J8', 'task_id': 4, 'machine_id': 'B', 'duration': 46}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 'D', 'duration': 1}, {'task': 1, 'start': 1, 'machine': 'E', 'duration': 37}, {'task': 2, 'start': 38, 'machine': 'B', 'duration': 32}, {'task': 3, 'start': 70, 'machine': 'C', 'duration': 68}, {'task': 4, 'start': 138, 'machine': 'A', 'duration': 83}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 309, 'machine': 'E', 'duration': 26}, {'task': 1, 'start': 335, 'machine': 'B', 'duration': 63}, {'task': 2, 'start': 444, 'machine': 'A', 'duration': 2}, {'task': 3, 'start': 446, 'machine': 'D', 'duration': 5}, {'task': 4, 'start': 484, 'machine': 'C', 'duration': 34}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 48}, {'task': 1, 'start': 48, 'machine': 'E', 'duration': 9}, {'task': 2, 'start': 57, 'machine': 'D', 'duration': 53}, {'task': 3, 'start': 110, 'machine': 'B', 'duration': 93}, {'task': 4, 'start': 221, 'machine': 'A', 'duration': 99}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 57, 'machine': 'E', 'duration': 66}, {'task': 1, 'start': 123, 'machine': 'D', 'duration': 58}, {'task': 2, 'start': 203, 'machine': 'B', 'duration': 43}, {'task': 3, 'start': 246, 'machine': 'C', 'duration': 47}, {'task': 4, 'start': 370, 'machine': 'A', 'duration': 74}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 176, 'machine': 'C', 'duration': 38}, {'task': 1, 'start': 263, 'machine': 'E', 'duration': 46}, {'task': 2, 'start': 309, 'machine': 'D', 'duration': 98}, {'task': 3, 'start': 407, 'machine': 'B', 'duration': 11}, {'task': 4, 'start': 446, 'machine': 'A', 'duration': 39}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 335, 'machine': 'E', 'duration': 51}, {'task': 1, 'start': 407, 'machine': 'D', 'duration': 15}, {'task': 2, 'start': 422, 'machine': 'C', 'duration': 62}, {'task': 3, 'start': 485, 'machine': 'A', 'duration': 30}, {'task': 4, 'start': 515, 'machine': 'B', 'duration': 27}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 123, 'machine': 'E', 'duration': 97}, {'task': 1, 'start': 246, 'machine': 'B', 'duration': 68}, {'task': 2, 'start': 314, 'machine': 'C', 'duration': 70}, {'task': 3, 'start': 451, 'machine': 'D', 'duration': 66}, {'task': 4, 'start': 517, 'machine': 'A', 'duration': 22}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 138, 'machine': 'C', 'duration': 38}, {'task': 1, 'start': 220, 'machine': 'E', 'duration': 43}, {'task': 2, 'start': 263, 'machine': 'D', 'duration': 36}, {'task': 3, 'start': 320, 'machine': 'A', 'duration': 50}, {'task': 4, 'start': 418, 'machine': 'B', 'duration': 46}]}]",15,csv,names |
| JSP,JSP,"We have a pile of circuit boards waiting and each board needs a fixed sequence of operations on specific stations β pick-and-place, solder, test, whatever β each taking a set time. Stations canβt be in two places at once and the operations for any individual board must happen in the order theyβre listed, so the challenge is arranging who goes where and when so the entire batch comes off the line as soon as possible; the score is simply the time when the final board is finished. Concrete details about which board needs which steps and how long they take appear below. |
|
|
| |
| |
| |
| |
| board_id,operation_index,station_id,processing_time |
| J1,0,C,1 |
| J1,1,B,50 |
| J1,2,A,7 |
| J2,0,C,15 |
| J2,1,B,37 |
| J2,2,A,48 |
| J3,0,B,68 |
| J3,1,C,69 |
| J3,2,A,72 |
| J4,0,B,28 |
| J4,1,C,86 |
| J4,2,A,61 |
| J5,0,B,37 |
| J5,1,A,97 |
| J5,2,C,5 |
| J6,0,A,20 |
| J6,1,B,26 |
| J6,2,C,44 |
| J7,0,C,85 |
| J7,1,B,81 |
| J7,2,A,79 |
|
|
| Also, when you send the actual schedule back, please stick to this JSON layout so everything lines up cleanly β nothing fancy, just that shape. |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of this like a simple form: ""solution"" is a list of boards (jobs). Each board entry has a job identifier and a list of its tasks. For each task you give the task index (which step it is for that board), the start time you schedule it, which machine/station it runs on, and how long it runs. Super casual β just fill in those fields for every job and task. |
|
|
| This JSON is only a sketch of the expected shape, not the actual schedule β fill it with the real numbers and ids when you submit the solution. |
|
|
| Make sure all identifiers match the instance input exactly β do not rename or invent labels. For example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 3, 'nr_jobs': 7, 'jobs': [[[2, 1], [1, 50], [0, 7]], [[2, 15], [1, 37], [0, 48]], [[1, 68], [2, 69], [0, 72]], [[1, 28], [2, 86], [0, 61]], [[1, 37], [0, 97], [2, 5]], [[0, 20], [1, 26], [2, 44]], [[2, 85], [1, 81], [0, 79]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 15, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 251, 'machine': 1, 'duration': 50}, {'task': 2, 'start': 323, 'machine': 0, 'duration': 7}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 15}, {'task': 1, 'start': 65, 'machine': 1, 'duration': 37}, {'task': 2, 'start': 134, 'machine': 0, 'duration': 48}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 183, 'machine': 1, 'duration': 68}, {'task': 1, 'start': 260, 'machine': 2, 'duration': 69}, {'task': 2, 'start': 330, 'machine': 0, 'duration': 72}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 37, 'machine': 1, 'duration': 28}, {'task': 1, 'start': 174, 'machine': 2, 'duration': 86}, {'task': 2, 'start': 262, 'machine': 0, 'duration': 61}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 37}, {'task': 1, 'start': 37, 'machine': 0, 'duration': 97}, {'task': 2, 'start': 134, 'machine': 2, 'duration': 5}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 20}, {'task': 1, 'start': 301, 'machine': 1, 'duration': 26}, {'task': 2, 'start': 329, 'machine': 2, 'duration': 44}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 16, 'machine': 2, 'duration': 85}, {'task': 1, 'start': 102, 'machine': 1, 'duration': 81}, {'task': 2, 'start': 183, 'machine': 0, 'duration': 79}]}]",402.0,"{'problem_type': 'JSP', 'nr_jobs': 7, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7'], 'machines': ['A', 'B', 'C'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'C', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'B', 'duration': 50}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'A', 'duration': 7}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'C', 'duration': 15}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'B', 'duration': 37}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'A', 'duration': 48}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'B', 'duration': 68}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'C', 'duration': 69}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'A', 'duration': 72}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'B', 'duration': 28}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'C', 'duration': 86}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'A', 'duration': 61}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'B', 'duration': 37}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'A', 'duration': 97}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'C', 'duration': 5}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'A', 'duration': 20}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'B', 'duration': 26}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'C', 'duration': 44}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 'C', 'duration': 85}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 'B', 'duration': 81}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 'A', 'duration': 79}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 15, 'machine': 'C', 'duration': 1}, {'task': 1, 'start': 251, 'machine': 'B', 'duration': 50}, {'task': 2, 'start': 323, 'machine': 'A', 'duration': 7}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 15}, {'task': 1, 'start': 65, 'machine': 'B', 'duration': 37}, {'task': 2, 'start': 134, 'machine': 'A', 'duration': 48}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 183, 'machine': 'B', 'duration': 68}, {'task': 1, 'start': 260, 'machine': 'C', 'duration': 69}, {'task': 2, 'start': 330, 'machine': 'A', 'duration': 72}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 37, 'machine': 'B', 'duration': 28}, {'task': 1, 'start': 174, 'machine': 'C', 'duration': 86}, {'task': 2, 'start': 262, 'machine': 'A', 'duration': 61}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 37}, {'task': 1, 'start': 37, 'machine': 'A', 'duration': 97}, {'task': 2, 'start': 134, 'machine': 'C', 'duration': 5}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 'A', 'duration': 20}, {'task': 1, 'start': 301, 'machine': 'B', 'duration': 26}, {'task': 2, 'start': 329, 'machine': 'C', 'duration': 44}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 16, 'machine': 'C', 'duration': 85}, {'task': 1, 'start': 102, 'machine': 'B', 'duration': 81}, {'task': 2, 'start': 183, 'machine': 'A', 'duration': 79}]}]",16,csv,names |
| JSP,JSP,"We juggle a bunch of tabletops and chairs through three stations: saw, sander, and finishing bench. The choice to make is when to start each cut, sand, and finish so every operation uses its designated machine for its full time, follows the pieceβs required order, and never shares a machine with another overlapping job. A good plan gets everything off the floor fast β judged by the moment the final job is completed; lower is better. Concrete details about items and times appear below. |
|
|
| { |
| ""nr_pieces"": 7, |
| ""nr_stations"": 5, |
| ""pieces"": [ |
| ""J1"", |
| ""J2"", |
| ""J3"", |
| ""J4"", |
| ""J5"", |
| ""J6"", |
| ""J7"" |
| ], |
| ""stations"": [ |
| ""A"", |
| ""B"", |
| ""C"", |
| ""D"", |
| ""E"" |
| ], |
| ""tasks"": [ |
| { |
| ""piece_id"": ""J1"", |
| ""step_index"": 0, |
| ""tool_id"": ""B"", |
| ""processing_time"": 1 |
| }, |
| { |
| ""piece_id"": ""J1"", |
| ""step_index"": 1, |
| ""tool_id"": ""D"", |
| ""processing_time"": 63 |
| }, |
| { |
| ""piece_id"": ""J1"", |
| ""step_index"": 2, |
| ""tool_id"": ""C"", |
| ""processing_time"": 82 |
| }, |
| { |
| ""piece_id"": ""J1"", |
| ""step_index"": 3, |
| ""tool_id"": ""E"", |
| ""processing_time"": 60 |
| }, |
| { |
| ""piece_id"": ""J1"", |
| ""step_index"": 4, |
| ""tool_id"": ""A"", |
| ""processing_time"": 90 |
| }, |
| { |
| ""piece_id"": ""J2"", |
| ""step_index"": 0, |
| ""tool_id"": ""D"", |
| ""processing_time"": 70 |
| }, |
| { |
| ""piece_id"": ""J2"", |
| ""step_index"": 1, |
| ""tool_id"": ""E"", |
| ""processing_time"": 73 |
| }, |
| { |
| ""piece_id"": ""J2"", |
| ""step_index"": 2, |
| ""tool_id"": ""A"", |
| ""processing_time"": 38 |
| }, |
| { |
| ""piece_id"": ""J2"", |
| ""step_index"": 3, |
| ""tool_id"": ""B"", |
| ""processing_time"": 40 |
| }, |
| { |
| ""piece_id"": ""J2"", |
| ""step_index"": 4, |
| ""tool_id"": ""C"", |
| ""processing_time"": 22 |
| }, |
| { |
| ""piece_id"": ""J3"", |
| ""step_index"": 0, |
| ""tool_id"": ""E"", |
| ""processing_time"": 25 |
| }, |
| { |
| ""piece_id"": ""J3"", |
| ""step_index"": 1, |
| ""tool_id"": ""C"", |
| ""processing_time"": 13 |
| }, |
| { |
| ""piece_id"": ""J3"", |
| ""step_index"": 2, |
| ""tool_id"": ""D"", |
| ""processing_time"": 20 |
| }, |
| { |
| ""piece_id"": ""J3"", |
| ""step_index"": 3, |
| ""tool_id"": ""A"", |
| ""processing_time"": 1 |
| }, |
| { |
| ""piece_id"": ""J3"", |
| ""step_index"": 4, |
| ""tool_id"": ""B"", |
| ""processing_time"": 10 |
| }, |
| { |
| ""piece_id"": ""J4"", |
| ""step_index"": 0, |
| ""tool_id"": ""A"", |
| ""processing_time"": 72 |
| }, |
| { |
| ""piece_id"": ""J4"", |
| ""step_index"": 1, |
| ""tool_id"": ""B"", |
| ""processing_time"": 92 |
| }, |
| { |
| ""piece_id"": ""J4"", |
| ""step_index"": 2, |
| ""tool_id"": ""D"", |
| ""processing_time"": 45 |
| }, |
| { |
| ""piece_id"": ""J4"", |
| ""step_index"": 3, |
| ""tool_id"": ""C"", |
| ""processing_time"": 24 |
| }, |
| { |
| ""piece_id"": ""J4"", |
| ""step_index"": 4, |
| ""tool_id"": ""E"", |
| ""processing_time"": 87 |
| }, |
| { |
| ""piece_id"": ""J5"", |
| ""step_index"": 0, |
| ""tool_id"": ""E"", |
| ""processing_time"": 22 |
| }, |
| { |
| ""piece_id"": ""J5"", |
| ""step_index"": 1, |
| ""tool_id"": ""A"", |
| ""processing_time"": 83 |
| }, |
| { |
| ""piece_id"": ""J5"", |
| ""step_index"": 2, |
| ""tool_id"": ""D"", |
| ""processing_time"": 16 |
| }, |
| { |
| ""piece_id"": ""J5"", |
| ""step_index"": 3, |
| ""tool_id"": ""B"", |
| ""processing_time"": 96 |
| }, |
| { |
| ""piece_id"": ""J5"", |
| ""step_index"": 4, |
| ""tool_id"": ""C"", |
| ""processing_time"": 8 |
| }, |
| { |
| ""piece_id"": ""J6"", |
| ""step_index"": 0, |
| ""tool_id"": ""B"", |
| ""processing_time"": 56 |
| }, |
| { |
| ""piece_id"": ""J6"", |
| ""step_index"": 1, |
| ""tool_id"": ""E"", |
| ""processing_time"": 34 |
| }, |
| { |
| ""piece_id"": ""J6"", |
| ""step_index"": 2, |
| ""tool_id"": ""D"", |
| ""processing_time"": 92 |
| }, |
| { |
| ""piece_id"": ""J6"", |
| ""step_index"": 3, |
| ""tool_id"": ""C"", |
| ""processing_time"": 13 |
| }, |
| { |
| ""piece_id"": ""J6"", |
| ""step_index"": 4, |
| ""tool_id"": ""A"", |
| ""processing_time"": 67 |
| }, |
| { |
| ""piece_id"": ""J7"", |
| ""step_index"": 0, |
| ""tool_id"": ""B"", |
| ""processing_time"": 80 |
| }, |
| { |
| ""piece_id"": ""J7"", |
| ""step_index"": 1, |
| ""tool_id"": ""A"", |
| ""processing_time"": 21 |
| }, |
| { |
| ""piece_id"": ""J7"", |
| ""step_index"": 2, |
| ""tool_id"": ""C"", |
| ""processing_time"": 23 |
| }, |
| { |
| ""piece_id"": ""J7"", |
| ""step_index"": 3, |
| ""tool_id"": ""E"", |
| ""processing_time"": 75 |
| }, |
| { |
| ""piece_id"": ""J7"", |
| ""step_index"": 4, |
| ""tool_id"": ""D"", |
| ""processing_time"": 69 |
| } |
| ] |
| } |
|
|
| Also, when you send the schedule back, just drop it in this JSON shape β easy to read and easy to check. Here's the exact layout I expect: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Quick, informal guide to the fields: ""solution"" is a list of pieces we need to schedule. Each item has a ""job"" id and a ""tasks"" list. Each task entry says which step of the job it is (""task""), when that step begins (""start""), which machine it runs on (""machine""), and how long it takes (""duration""). Think of it like filling out a simple form for each operation. |
|
|
| This JSON is just the sketch of the shape I want β fill it with the actual ids and numbers from the instance when you respond. Make sure all identifiers are used exactly as they appear in the instance input β no renaming and no new labels. |
|
|
| Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 5, 'nr_jobs': 7, 'jobs': [[[1, 1], [3, 63], [2, 82], [4, 60], [0, 90]], [[3, 70], [4, 73], [0, 38], [1, 40], [2, 22]], [[4, 25], [2, 13], [3, 20], [0, 1], [1, 10]], [[0, 72], [1, 92], [3, 45], [2, 24], [4, 87]], [[4, 22], [0, 83], [3, 16], [1, 96], [2, 8]], [[1, 56], [4, 34], [3, 92], [2, 13], [0, 67]], [[1, 80], [0, 21], [2, 23], [4, 75], [3, 69]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 1, 'machine': 3, 'duration': 63}, {'task': 2, 'start': 64, 'machine': 2, 'duration': 82}, {'task': 3, 'start': 207, 'machine': 4, 'duration': 60}, {'task': 4, 'start': 267, 'machine': 0, 'duration': 90}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 64, 'machine': 3, 'duration': 70}, {'task': 1, 'start': 134, 'machine': 4, 'duration': 73}, {'task': 2, 'start': 207, 'machine': 0, 'duration': 38}, {'task': 3, 'start': 325, 'machine': 1, 'duration': 40}, {'task': 4, 'start': 365, 'machine': 2, 'duration': 22}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 22, 'machine': 4, 'duration': 25}, {'task': 1, 'start': 47, 'machine': 2, 'duration': 13}, {'task': 2, 'start': 134, 'machine': 3, 'duration': 20}, {'task': 3, 'start': 176, 'machine': 0, 'duration': 1}, {'task': 4, 'start': 365, 'machine': 1, 'duration': 10}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 72}, {'task': 1, 'start': 137, 'machine': 1, 'duration': 92}, {'task': 2, 'start': 263, 'machine': 3, 'duration': 45}, {'task': 3, 'start': 308, 'machine': 2, 'duration': 24}, {'task': 4, 'start': 342, 'machine': 4, 'duration': 87}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 22}, {'task': 1, 'start': 72, 'machine': 0, 'duration': 83}, {'task': 2, 'start': 155, 'machine': 3, 'duration': 16}, {'task': 3, 'start': 229, 'machine': 1, 'duration': 96}, {'task': 4, 'start': 332, 'machine': 2, 'duration': 8}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 1, 'machine': 1, 'duration': 56}, {'task': 1, 'start': 57, 'machine': 4, 'duration': 34}, {'task': 2, 'start': 171, 'machine': 3, 'duration': 92}, {'task': 3, 'start': 263, 'machine': 2, 'duration': 13}, {'task': 4, 'start': 357, 'machine': 0, 'duration': 67}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 57, 'machine': 1, 'duration': 80}, {'task': 1, 'start': 155, 'machine': 0, 'duration': 21}, {'task': 2, 'start': 176, 'machine': 2, 'duration': 23}, {'task': 3, 'start': 267, 'machine': 4, 'duration': 75}, {'task': 4, 'start': 342, 'machine': 3, 'duration': 69}]}]",429.0,"{'problem_type': 'JSP', 'nr_jobs': 7, 'nr_machines': 5, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7'], 'machines': ['A', 'B', 'C', 'D', 'E'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'B', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'D', 'duration': 63}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'C', 'duration': 82}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 'E', 'duration': 60}, {'job_id': 'J1', 'task_id': 4, 'machine_id': 'A', 'duration': 90}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'D', 'duration': 70}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'E', 'duration': 73}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'A', 'duration': 38}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 'B', 'duration': 40}, {'job_id': 'J2', 'task_id': 4, 'machine_id': 'C', 'duration': 22}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'E', 'duration': 25}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'C', 'duration': 13}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'D', 'duration': 20}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 'A', 'duration': 1}, {'job_id': 'J3', 'task_id': 4, 'machine_id': 'B', 'duration': 10}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'A', 'duration': 72}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'B', 'duration': 92}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'D', 'duration': 45}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 'C', 'duration': 24}, {'job_id': 'J4', 'task_id': 4, 'machine_id': 'E', 'duration': 87}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'E', 'duration': 22}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'A', 'duration': 83}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'D', 'duration': 16}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 'B', 'duration': 96}, {'job_id': 'J5', 'task_id': 4, 'machine_id': 'C', 'duration': 8}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'B', 'duration': 56}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'E', 'duration': 34}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'D', 'duration': 92}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 'C', 'duration': 13}, {'job_id': 'J6', 'task_id': 4, 'machine_id': 'A', 'duration': 67}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 'B', 'duration': 80}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 'A', 'duration': 21}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 'C', 'duration': 23}, {'job_id': 'J7', 'task_id': 3, 'machine_id': 'E', 'duration': 75}, {'job_id': 'J7', 'task_id': 4, 'machine_id': 'D', 'duration': 69}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 1}, {'task': 1, 'start': 1, 'machine': 'D', 'duration': 63}, {'task': 2, 'start': 64, 'machine': 'C', 'duration': 82}, {'task': 3, 'start': 207, 'machine': 'E', 'duration': 60}, {'task': 4, 'start': 267, 'machine': 'A', 'duration': 90}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 64, 'machine': 'D', 'duration': 70}, {'task': 1, 'start': 134, 'machine': 'E', 'duration': 73}, {'task': 2, 'start': 207, 'machine': 'A', 'duration': 38}, {'task': 3, 'start': 325, 'machine': 'B', 'duration': 40}, {'task': 4, 'start': 365, 'machine': 'C', 'duration': 22}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 22, 'machine': 'E', 'duration': 25}, {'task': 1, 'start': 47, 'machine': 'C', 'duration': 13}, {'task': 2, 'start': 134, 'machine': 'D', 'duration': 20}, {'task': 3, 'start': 176, 'machine': 'A', 'duration': 1}, {'task': 4, 'start': 365, 'machine': 'B', 'duration': 10}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 'A', 'duration': 72}, {'task': 1, 'start': 137, 'machine': 'B', 'duration': 92}, {'task': 2, 'start': 263, 'machine': 'D', 'duration': 45}, {'task': 3, 'start': 308, 'machine': 'C', 'duration': 24}, {'task': 4, 'start': 342, 'machine': 'E', 'duration': 87}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 'E', 'duration': 22}, {'task': 1, 'start': 72, 'machine': 'A', 'duration': 83}, {'task': 2, 'start': 155, 'machine': 'D', 'duration': 16}, {'task': 3, 'start': 229, 'machine': 'B', 'duration': 96}, {'task': 4, 'start': 332, 'machine': 'C', 'duration': 8}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 1, 'machine': 'B', 'duration': 56}, {'task': 1, 'start': 57, 'machine': 'E', 'duration': 34}, {'task': 2, 'start': 171, 'machine': 'D', 'duration': 92}, {'task': 3, 'start': 263, 'machine': 'C', 'duration': 13}, {'task': 4, 'start': 357, 'machine': 'A', 'duration': 67}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 57, 'machine': 'B', 'duration': 80}, {'task': 1, 'start': 155, 'machine': 'A', 'duration': 21}, {'task': 2, 'start': 176, 'machine': 'C', 'duration': 23}, {'task': 3, 'start': 267, 'machine': 'E', 'duration': 75}, {'task': 4, 'start': 342, 'machine': 'D', 'duration': 69}]}]",17,json,names |
| JSP,JSP,"Weβre juggling a pile of parcels through a handful of pieces of equipment; each parcel has its own to-do list of scans and handling actions that must happen one after another on specific gear for set amounts of time. The decision is about the order and timing: arrange those actions so the moment the final parcel leaves the line is as early as possible β in other words, minimize the finish time of the last parcel. Every required step for each parcel must be done exactly once, and a machine can only run one step at a time. The exact parcel steps and timings are listed below. |
|
|
| |
| |
| |
| |
| parcel_id,step_index,equipment_id,operation_duration |
| J1,0,2,1 |
| J1,1,3,76 |
| J1,2,1,58 |
| J2,0,1,6 |
| J2,1,3,43 |
| J2,2,2,91 |
| J3,0,3,77 |
| J3,1,2,6 |
| J3,2,1,8 |
| J4,0,3,15 |
| J4,1,2,63 |
| J4,2,1,64 |
| J5,0,2,3 |
| J5,1,3,4 |
| J5,2,1,16 |
| J6,0,1,25 |
| J6,1,3,60 |
| J6,2,2,45 |
| J7,0,1,62 |
| J7,1,2,94 |
| J7,2,3,63 |
|
|
| Also, when you send back the schedule, please use this simple JSON shape so everything lines up with the rest of the system: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it as a little form: ""solution"" is a list of the parcels (jobs) and, for each one, the ""tasks"" array lists its ordered steps. Each task entry just says which step it is (""task""), when it starts (""start""), which piece of equipment it uses (""machine""), and how long it runs (""duration""). Super simple β this block is just the expected shape, not the actual schedule. |
|
|
| Please make sure to use the exact identifiers from the instance input β donβt rename them or invent new labels. |
| - for example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 3, 'nr_jobs': 7, 'jobs': [[[1, 1], [2, 76], [0, 58]], [[0, 6], [2, 43], [1, 91]], [[2, 77], [1, 6], [0, 8]], [[2, 15], [1, 63], [0, 64]], [[1, 3], [2, 4], [0, 16]], [[0, 25], [2, 60], [1, 45]], [[0, 62], [1, 94], [2, 63]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 15, 'machine': 2, 'duration': 76}, {'task': 2, 'start': 157, 'machine': 0, 'duration': 58}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 62, 'machine': 0, 'duration': 6}, {'task': 1, 'start': 91, 'machine': 2, 'duration': 43}, {'task': 2, 'start': 172, 'machine': 1, 'duration': 91}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 194, 'machine': 2, 'duration': 77}, {'task': 1, 'start': 308, 'machine': 1, 'duration': 6}, {'task': 2, 'start': 314, 'machine': 0, 'duration': 8}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 15}, {'task': 1, 'start': 15, 'machine': 1, 'duration': 63}, {'task': 2, 'start': 93, 'machine': 0, 'duration': 64}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 1, 'machine': 1, 'duration': 3}, {'task': 1, 'start': 271, 'machine': 2, 'duration': 4}, {'task': 2, 'start': 275, 'machine': 0, 'duration': 16}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 68, 'machine': 0, 'duration': 25}, {'task': 1, 'start': 134, 'machine': 2, 'duration': 60}, {'task': 2, 'start': 263, 'machine': 1, 'duration': 45}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 62}, {'task': 1, 'start': 78, 'machine': 1, 'duration': 94}, {'task': 2, 'start': 275, 'machine': 2, 'duration': 63}]}]",338.0,"{'problem_type': 'JSP', 'nr_jobs': 7, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7'], 'machines': [1, 2, 3], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 2, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 3, 'duration': 76}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 1, 'duration': 58}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 1, 'duration': 6}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 3, 'duration': 43}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 2, 'duration': 91}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 3, 'duration': 77}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 2, 'duration': 6}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 1, 'duration': 8}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 3, 'duration': 15}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 2, 'duration': 63}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 1, 'duration': 64}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 2, 'duration': 3}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 3, 'duration': 4}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 1, 'duration': 16}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 1, 'duration': 25}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 3, 'duration': 60}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 2, 'duration': 45}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 1, 'duration': 62}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 2, 'duration': 94}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 3, 'duration': 63}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 15, 'machine': 3, 'duration': 76}, {'task': 2, 'start': 157, 'machine': 1, 'duration': 58}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 62, 'machine': 1, 'duration': 6}, {'task': 1, 'start': 91, 'machine': 3, 'duration': 43}, {'task': 2, 'start': 172, 'machine': 2, 'duration': 91}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 194, 'machine': 3, 'duration': 77}, {'task': 1, 'start': 308, 'machine': 2, 'duration': 6}, {'task': 2, 'start': 314, 'machine': 1, 'duration': 8}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 15}, {'task': 1, 'start': 15, 'machine': 2, 'duration': 63}, {'task': 2, 'start': 93, 'machine': 1, 'duration': 64}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 1, 'machine': 2, 'duration': 3}, {'task': 1, 'start': 271, 'machine': 3, 'duration': 4}, {'task': 2, 'start': 275, 'machine': 1, 'duration': 16}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 68, 'machine': 1, 'duration': 25}, {'task': 1, 'start': 134, 'machine': 3, 'duration': 60}, {'task': 2, 'start': 263, 'machine': 2, 'duration': 45}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 62}, {'task': 1, 'start': 78, 'machine': 2, 'duration': 94}, {'task': 2, 'start': 275, 'machine': 3, 'duration': 63}]}]",18,csv,1 |
| JSP,JSP,"Recently the setup team needed a clear plan: each booth has a fixed run of assembly jobs, every job uses a named lift or tool for a fixed time, and no two jobs can use the same gear at once. The task was to set start times so every boothβs steps stay in order, nothingβs missed or duplicated, and the entire exhibition is ready as fast as possible β judged by the instant the last booth is finished. The concrete booth-task lists and durations follow below. |
|
|
| |
| |
| |
| |
| booth_id,step_index,tool_or_lift_id,assembly_duration |
| J1,0,2,1 |
| J1,1,4,89 |
| J1,2,3,34 |
| J1,3,1,52 |
| J1,4,0,96 |
| J2,0,1,14 |
| J2,1,4,82 |
| J2,2,0,73 |
| J2,3,2,76 |
| J2,4,3,9 |
| J3,0,1,2 |
| J3,1,2,17 |
| J3,2,4,85 |
| J3,3,0,8 |
| J3,4,3,21 |
| J4,0,0,78 |
| J4,1,1,27 |
| J4,2,4,46 |
| J4,3,3,1 |
| J4,4,2,2 |
| J5,0,4,5 |
| J5,1,2,21 |
| J5,2,0,34 |
| J5,3,1,82 |
| J5,4,3,77 |
| J6,0,1,61 |
| J6,1,2,52 |
| J6,2,0,24 |
| J6,3,3,96 |
| J6,4,4,8 |
|
|
| Also, when you send the actual schedule back, please use this simple JSON layout so itβs easy to parse and check: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| This is just a sketch of the shape I need. In plain terms: each entry in ""solution"" is one booth/job; ""tasks"" is the ordered list of steps for that job; ""task"" is the step index within the job; ""start"" is the planned start time for that step; ""machine"" is which lift/tool it needs; and ""duration"" is how long that step runs. Keep it informal β think of it as filling out a little form for each job. |
|
|
| Please make sure you use the exact identifiers from the instance input β donβt rename them or invent new labels. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 5, 'nr_jobs': 6, 'jobs': [[[2, 1], [4, 89], [3, 34], [1, 52], [0, 96]], [[1, 14], [4, 82], [0, 73], [2, 76], [3, 9]], [[1, 2], [2, 17], [4, 85], [0, 8], [3, 21]], [[0, 78], [1, 27], [4, 46], [3, 1], [2, 2]], [[4, 5], [2, 21], [0, 34], [1, 82], [3, 77]], [[1, 61], [2, 52], [0, 24], [3, 96], [4, 8]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 5, 'machine': 4, 'duration': 89}, {'task': 2, 'start': 94, 'machine': 3, 'duration': 34}, {'task': 3, 'start': 194, 'machine': 1, 'duration': 52}, {'task': 4, 'start': 269, 'machine': 0, 'duration': 96}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 14}, {'task': 1, 'start': 94, 'machine': 4, 'duration': 82}, {'task': 2, 'start': 176, 'machine': 0, 'duration': 73}, {'task': 3, 'start': 249, 'machine': 2, 'duration': 76}, {'task': 4, 'start': 325, 'machine': 3, 'duration': 9}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 75, 'machine': 1, 'duration': 2}, {'task': 1, 'start': 127, 'machine': 2, 'duration': 17}, {'task': 2, 'start': 176, 'machine': 4, 'duration': 85}, {'task': 3, 'start': 261, 'machine': 0, 'duration': 8}, {'task': 4, 'start': 334, 'machine': 3, 'duration': 21}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 78}, {'task': 1, 'start': 78, 'machine': 1, 'duration': 27}, {'task': 2, 'start': 261, 'machine': 4, 'duration': 46}, {'task': 3, 'start': 324, 'machine': 3, 'duration': 1}, {'task': 4, 'start': 325, 'machine': 2, 'duration': 2}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 5}, {'task': 1, 'start': 5, 'machine': 2, 'duration': 21}, {'task': 2, 'start': 78, 'machine': 0, 'duration': 34}, {'task': 3, 'start': 112, 'machine': 1, 'duration': 82}, {'task': 4, 'start': 247, 'machine': 3, 'duration': 77}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 14, 'machine': 1, 'duration': 61}, {'task': 1, 'start': 75, 'machine': 2, 'duration': 52}, {'task': 2, 'start': 127, 'machine': 0, 'duration': 24}, {'task': 3, 'start': 151, 'machine': 3, 'duration': 96}, {'task': 4, 'start': 307, 'machine': 4, 'duration': 8}]}]",365.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 5, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': [0, 1, 2, 3, 4], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 2, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 4, 'duration': 89}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 3, 'duration': 34}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 1, 'duration': 52}, {'job_id': 'J1', 'task_id': 4, 'machine_id': 0, 'duration': 96}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 1, 'duration': 14}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 4, 'duration': 82}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 0, 'duration': 73}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 2, 'duration': 76}, {'job_id': 'J2', 'task_id': 4, 'machine_id': 3, 'duration': 9}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 1, 'duration': 2}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 2, 'duration': 17}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 4, 'duration': 85}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 0, 'duration': 8}, {'job_id': 'J3', 'task_id': 4, 'machine_id': 3, 'duration': 21}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 0, 'duration': 78}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 1, 'duration': 27}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 4, 'duration': 46}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 3, 'duration': 1}, {'job_id': 'J4', 'task_id': 4, 'machine_id': 2, 'duration': 2}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 4, 'duration': 5}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 2, 'duration': 21}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 0, 'duration': 34}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 1, 'duration': 82}, {'job_id': 'J5', 'task_id': 4, 'machine_id': 3, 'duration': 77}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 1, 'duration': 61}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 2, 'duration': 52}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 0, 'duration': 24}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 3, 'duration': 96}, {'job_id': 'J6', 'task_id': 4, 'machine_id': 4, 'duration': 8}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 5, 'machine': 4, 'duration': 89}, {'task': 2, 'start': 94, 'machine': 3, 'duration': 34}, {'task': 3, 'start': 194, 'machine': 1, 'duration': 52}, {'task': 4, 'start': 269, 'machine': 0, 'duration': 96}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 14}, {'task': 1, 'start': 94, 'machine': 4, 'duration': 82}, {'task': 2, 'start': 176, 'machine': 0, 'duration': 73}, {'task': 3, 'start': 249, 'machine': 2, 'duration': 76}, {'task': 4, 'start': 325, 'machine': 3, 'duration': 9}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 75, 'machine': 1, 'duration': 2}, {'task': 1, 'start': 127, 'machine': 2, 'duration': 17}, {'task': 2, 'start': 176, 'machine': 4, 'duration': 85}, {'task': 3, 'start': 261, 'machine': 0, 'duration': 8}, {'task': 4, 'start': 334, 'machine': 3, 'duration': 21}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 78}, {'task': 1, 'start': 78, 'machine': 1, 'duration': 27}, {'task': 2, 'start': 261, 'machine': 4, 'duration': 46}, {'task': 3, 'start': 324, 'machine': 3, 'duration': 1}, {'task': 4, 'start': 325, 'machine': 2, 'duration': 2}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 5}, {'task': 1, 'start': 5, 'machine': 2, 'duration': 21}, {'task': 2, 'start': 78, 'machine': 0, 'duration': 34}, {'task': 3, 'start': 112, 'machine': 1, 'duration': 82}, {'task': 4, 'start': 247, 'machine': 3, 'duration': 77}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 14, 'machine': 1, 'duration': 61}, {'task': 1, 'start': 75, 'machine': 2, 'duration': 52}, {'task': 2, 'start': 127, 'machine': 0, 'duration': 24}, {'task': 3, 'start': 151, 'machine': 3, 'duration': 96}, {'task': 4, 'start': 307, 'machine': 4, 'duration': 8}]}]",19,csv,0 |
| JSP,JSP,"I once tried to get three different dinners out of a tiny kitchen at the same time: each recipe has its own list of steps that must happen in order, and each step needs a certain appliance for a set amount of time. The choice to make is who uses which appliance when so all dishes finish as soon as possible β the success of a plan is simply the time when the last dish is done (so the lower that time, the better). Every step has to be done exactly once, in its recipe order, and an appliance can only run one step at a time. The exact recipes, step times, and appliance availability are listed below. |
|
|
| { |
| ""nr_recipes"": 7, |
| ""nr_appliances"": 4, |
| ""recipe_ids"": [ |
| ""J1"", |
| ""J2"", |
| ""J3"", |
| ""J4"", |
| ""J5"", |
| ""J6"", |
| ""J7"" |
| ], |
| ""appliance_ids"": [ |
| 0, |
| 1, |
| 2, |
| 3 |
| ], |
| ""tasks"": [ |
| { |
| ""recipe_id"": ""J1"", |
| ""step_index"": 0, |
| ""required_appliance_id"": 2, |
| ""step_duration"": 1 |
| }, |
| { |
| ""recipe_id"": ""J1"", |
| ""step_index"": 1, |
| ""required_appliance_id"": 3, |
| ""step_duration"": 3 |
| }, |
| { |
| ""recipe_id"": ""J1"", |
| ""step_index"": 2, |
| ""required_appliance_id"": 1, |
| ""step_duration"": 10 |
| }, |
| { |
| ""recipe_id"": ""J1"", |
| ""step_index"": 3, |
| ""required_appliance_id"": 0, |
| ""step_duration"": 97 |
| }, |
| { |
| ""recipe_id"": ""J2"", |
| ""step_index"": 0, |
| ""required_appliance_id"": 2, |
| ""step_duration"": 50 |
| }, |
| { |
| ""recipe_id"": ""J2"", |
| ""step_index"": 1, |
| ""required_appliance_id"": 3, |
| ""step_duration"": 36 |
| }, |
| { |
| ""recipe_id"": ""J2"", |
| ""step_index"": 2, |
| ""required_appliance_id"": 0, |
| ""step_duration"": 87 |
| }, |
| { |
| ""recipe_id"": ""J2"", |
| ""step_index"": 3, |
| ""required_appliance_id"": 1, |
| ""step_duration"": 41 |
| }, |
| { |
| ""recipe_id"": ""J3"", |
| ""step_index"": 0, |
| ""required_appliance_id"": 3, |
| ""step_duration"": 44 |
| }, |
| { |
| ""recipe_id"": ""J3"", |
| ""step_index"": 1, |
| ""required_appliance_id"": 2, |
| ""step_duration"": 2 |
| }, |
| { |
| ""recipe_id"": ""J3"", |
| ""step_index"": 2, |
| ""required_appliance_id"": 0, |
| ""step_duration"": 39 |
| }, |
| { |
| ""recipe_id"": ""J3"", |
| ""step_index"": 3, |
| ""required_appliance_id"": 1, |
| ""step_duration"": 68 |
| }, |
| { |
| ""recipe_id"": ""J4"", |
| ""step_index"": 0, |
| ""required_appliance_id"": 0, |
| ""step_duration"": 69 |
| }, |
| { |
| ""recipe_id"": ""J4"", |
| ""step_index"": 1, |
| ""required_appliance_id"": 2, |
| ""step_duration"": 11 |
| }, |
| { |
| ""recipe_id"": ""J4"", |
| ""step_index"": 2, |
| ""required_appliance_id"": 1, |
| ""step_duration"": 26 |
| }, |
| { |
| ""recipe_id"": ""J4"", |
| ""step_index"": 3, |
| ""required_appliance_id"": 3, |
| ""step_duration"": 31 |
| }, |
| { |
| ""recipe_id"": ""J5"", |
| ""step_index"": 0, |
| ""required_appliance_id"": 0, |
| ""step_duration"": 94 |
| }, |
| { |
| ""recipe_id"": ""J5"", |
| ""step_index"": 1, |
| ""required_appliance_id"": 3, |
| ""step_duration"": 47 |
| }, |
| { |
| ""recipe_id"": ""J5"", |
| ""step_index"": 2, |
| ""required_appliance_id"": 2, |
| ""step_duration"": 39 |
| }, |
| { |
| ""recipe_id"": ""J5"", |
| ""step_index"": 3, |
| ""required_appliance_id"": 1, |
| ""step_duration"": 8 |
| }, |
| { |
| ""recipe_id"": ""J6"", |
| ""step_index"": 0, |
| ""required_appliance_id"": 2, |
| ""step_duration"": 47 |
| }, |
| { |
| ""recipe_id"": ""J6"", |
| ""step_index"": 1, |
| ""required_appliance_id"": 0, |
| ""step_duration"": 89 |
| }, |
| { |
| ""recipe_id"": ""J6"", |
| ""step_index"": 2, |
| ""required_appliance_id"": 3, |
| ""step_duration"": 92 |
| }, |
| { |
| ""recipe_id"": ""J6"", |
| ""step_index"": 3, |
| ""required_appliance_id"": 1, |
| ""step_duration"": 75 |
| }, |
| { |
| ""recipe_id"": ""J7"", |
| ""step_index"": 0, |
| ""required_appliance_id"": 3, |
| ""step_duration"": 62 |
| }, |
| { |
| ""recipe_id"": ""J7"", |
| ""step_index"": 1, |
| ""required_appliance_id"": 0, |
| ""step_duration"": 15 |
| }, |
| { |
| ""recipe_id"": ""J7"", |
| ""step_index"": 2, |
| ""required_appliance_id"": 1, |
| ""step_duration"": 61 |
| }, |
| { |
| ""recipe_id"": ""J7"", |
| ""step_index"": 3, |
| ""required_appliance_id"": 2, |
| ""step_duration"": 89 |
| } |
| ] |
| } |
|
|
| Oh, and when you send the schedule back, a little JSON like this is perfect β just a simple shape to fill in: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| This is just a sketch of the shape Iβm expecting, not the actual schedule. In plain terms: the top-level ""solution"" is a list of dishes (jobs). Each dish object says which job it is and then lists its steps. Each step has the step number (""task""), when that step starts (""start""), which appliance it needs (""machine""), and how long it runs (""duration""). Keep it simple and human-readable. |
|
|
| Please use the exact identifiers from the instance input β donβt rename anything or invent new labels. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 4, 'nr_jobs': 7, 'jobs': [[[2, 1], [3, 3], [1, 10], [0, 97]], [[2, 50], [3, 36], [0, 87], [1, 41]], [[3, 44], [2, 2], [0, 39], [1, 68]], [[0, 69], [2, 11], [1, 26], [3, 31]], [[0, 94], [3, 47], [2, 39], [1, 8]], [[2, 47], [0, 89], [3, 92], [1, 75]], [[3, 62], [0, 15], [1, 61], [2, 89]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 97, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 133, 'machine': 3, 'duration': 3}, {'task': 2, 'start': 136, 'machine': 1, 'duration': 10}, {'task': 3, 'start': 393, 'machine': 0, 'duration': 97}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 47, 'machine': 2, 'duration': 50}, {'task': 1, 'start': 97, 'machine': 3, 'duration': 36}, {'task': 2, 'start': 267, 'machine': 0, 'duration': 87}, {'task': 3, 'start': 376, 'machine': 1, 'duration': 41}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 275, 'machine': 3, 'duration': 44}, {'task': 1, 'start': 319, 'machine': 2, 'duration': 2}, {'task': 2, 'start': 354, 'machine': 0, 'duration': 39}, {'task': 3, 'start': 417, 'machine': 1, 'duration': 68}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 198, 'machine': 0, 'duration': 69}, {'task': 1, 'start': 267, 'machine': 2, 'duration': 11}, {'task': 2, 'start': 350, 'machine': 1, 'duration': 26}, {'task': 3, 'start': 376, 'machine': 3, 'duration': 31}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 94}, {'task': 1, 'start': 136, 'machine': 3, 'duration': 47}, {'task': 2, 'start': 183, 'machine': 2, 'duration': 39}, {'task': 3, 'start': 259, 'machine': 1, 'duration': 8}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 47}, {'task': 1, 'start': 94, 'machine': 0, 'duration': 89}, {'task': 2, 'start': 183, 'machine': 3, 'duration': 92}, {'task': 3, 'start': 275, 'machine': 1, 'duration': 75}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 62}, {'task': 1, 'start': 183, 'machine': 0, 'duration': 15}, {'task': 2, 'start': 198, 'machine': 1, 'duration': 61}, {'task': 3, 'start': 321, 'machine': 2, 'duration': 89}]}]",490.0,"{'problem_type': 'JSP', 'nr_jobs': 7, 'nr_machines': 4, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7'], 'machines': [0, 1, 2, 3], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 2, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 3, 'duration': 3}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 1, 'duration': 10}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 0, 'duration': 97}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 2, 'duration': 50}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 3, 'duration': 36}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 0, 'duration': 87}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 1, 'duration': 41}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 3, 'duration': 44}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 2, 'duration': 2}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 0, 'duration': 39}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 1, 'duration': 68}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 0, 'duration': 69}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 2, 'duration': 11}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 1, 'duration': 26}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 3, 'duration': 31}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 0, 'duration': 94}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 3, 'duration': 47}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 2, 'duration': 39}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 1, 'duration': 8}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 2, 'duration': 47}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 0, 'duration': 89}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 3, 'duration': 92}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 1, 'duration': 75}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 3, 'duration': 62}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 0, 'duration': 15}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 1, 'duration': 61}, {'job_id': 'J7', 'task_id': 3, 'machine_id': 2, 'duration': 89}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 97, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 133, 'machine': 3, 'duration': 3}, {'task': 2, 'start': 136, 'machine': 1, 'duration': 10}, {'task': 3, 'start': 393, 'machine': 0, 'duration': 97}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 47, 'machine': 2, 'duration': 50}, {'task': 1, 'start': 97, 'machine': 3, 'duration': 36}, {'task': 2, 'start': 267, 'machine': 0, 'duration': 87}, {'task': 3, 'start': 376, 'machine': 1, 'duration': 41}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 275, 'machine': 3, 'duration': 44}, {'task': 1, 'start': 319, 'machine': 2, 'duration': 2}, {'task': 2, 'start': 354, 'machine': 0, 'duration': 39}, {'task': 3, 'start': 417, 'machine': 1, 'duration': 68}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 198, 'machine': 0, 'duration': 69}, {'task': 1, 'start': 267, 'machine': 2, 'duration': 11}, {'task': 2, 'start': 350, 'machine': 1, 'duration': 26}, {'task': 3, 'start': 376, 'machine': 3, 'duration': 31}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 94}, {'task': 1, 'start': 136, 'machine': 3, 'duration': 47}, {'task': 2, 'start': 183, 'machine': 2, 'duration': 39}, {'task': 3, 'start': 259, 'machine': 1, 'duration': 8}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 47}, {'task': 1, 'start': 94, 'machine': 0, 'duration': 89}, {'task': 2, 'start': 183, 'machine': 3, 'duration': 92}, {'task': 3, 'start': 275, 'machine': 1, 'duration': 75}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 62}, {'task': 1, 'start': 183, 'machine': 0, 'duration': 15}, {'task': 2, 'start': 198, 'machine': 1, 'duration': 61}, {'task': 3, 'start': 321, 'machine': 2, 'duration': 89}]}]",20,json,0 |
| JSP,JSP,"Recently the team wondered how to tighten up turnover: each patient has a set list of stages to go through, every stage takes a fixed amount of time, and rooms canβt be double-booked. The question is how to slot everyone into the rooms over the day so the whole group is done with recovery as soon as possible β the plan is judged by the time the last person finishes recovery β and every required stage must occur once for each patient, in sequence, with no overlaps in a room. The full case and timing details are shown below. |
|
|
| It specifies 7 patients and 3 rooms, listed as J1, J2, J3, J4, J5, J6, J7 and 0, 1, 2. |
| Patient J1, stage 0: must be scheduled in room 2 for 1. |
| Patient J1, stage 1: must be scheduled in room 1 for 16. |
| Patient J1, stage 2: must be scheduled in room 0 for 84. |
| Patient J2, stage 0: must be scheduled in room 0 for 44. |
| Patient J2, stage 1: must be scheduled in room 1 for 4. |
| Patient J2, stage 2: must be scheduled in room 2 for 57. |
| Patient J3, stage 0: must be scheduled in room 1 for 91. |
| Patient J3, stage 1: must be scheduled in room 0 for 9. |
| Patient J3, stage 2: must be scheduled in room 2 for 12. |
| Patient J4, stage 0: must be scheduled in room 0 for 95. |
| Patient J4, stage 1: must be scheduled in room 2 for 77. |
| Patient J4, stage 2: must be scheduled in room 1 for 21. |
| Patient J5, stage 0: must be scheduled in room 2 for 52. |
| Patient J5, stage 1: must be scheduled in room 1 for 15. |
| Patient J5, stage 2: must be scheduled in room 0 for 32. |
| Patient J6, stage 0: must be scheduled in room 1 for 84. |
| Patient J6, stage 1: must be scheduled in room 0 for 61. |
| Patient J6, stage 2: must be scheduled in room 2 for 48. |
| Patient J7, stage 0: must be scheduled in room 2 for 77. |
| Patient J7, stage 1: must be scheduled in room 1 for 15. |
| Patient J7, stage 2: must be scheduled in room 0 for 88. |
| Each listed stage must occur once per patient in sequence, and rooms cannot be double-booked. |
|
|
| If you want the schedule back in a tidy, machine-friendly way, just send it in this little JSON shape β nothing fancy, just a list of each job and its tasks with start times and machines. Here's the shape I expect: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it like a simple form: ""solution"" is a list of patients (jobs), each patient entry has a ""tasks"" list, and each task says which step it is, when it starts, which room (machine) it's in, and how long it lasts. This is just a sketch of the shape I need β not the real schedule yet. |
|
|
| Please use the exact identifiers from the instance input β don't rename them or invent new labels. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 3, 'nr_jobs': 7, 'jobs': [[[2, 1], [1, 16], [0, 84]], [[0, 44], [1, 4], [2, 57]], [[1, 91], [0, 9], [2, 12]], [[0, 95], [2, 77], [1, 21]], [[2, 52], [1, 15], [0, 32]], [[1, 84], [0, 61], [2, 48]], [[2, 77], [1, 15], [0, 88]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 77, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 190, 'machine': 1, 'duration': 16}, {'task': 2, 'start': 209, 'machine': 0, 'duration': 84}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 156, 'machine': 0, 'duration': 44}, {'task': 1, 'start': 206, 'machine': 1, 'duration': 4}, {'task': 2, 'start': 255, 'machine': 2, 'duration': 57}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 84, 'machine': 1, 'duration': 91}, {'task': 1, 'start': 200, 'machine': 0, 'duration': 9}, {'task': 2, 'start': 312, 'machine': 2, 'duration': 12}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 95}, {'task': 1, 'start': 130, 'machine': 2, 'duration': 77}, {'task': 2, 'start': 225, 'machine': 1, 'duration': 21}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 78, 'machine': 2, 'duration': 52}, {'task': 1, 'start': 210, 'machine': 1, 'duration': 15}, {'task': 2, 'start': 293, 'machine': 0, 'duration': 32}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 84}, {'task': 1, 'start': 95, 'machine': 0, 'duration': 61}, {'task': 2, 'start': 207, 'machine': 2, 'duration': 48}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 77}, {'task': 1, 'start': 175, 'machine': 1, 'duration': 15}, {'task': 2, 'start': 325, 'machine': 0, 'duration': 88}]}]",413.0,"{'problem_type': 'JSP', 'nr_jobs': 7, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7'], 'machines': [0, 1, 2], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 2, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 1, 'duration': 16}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 0, 'duration': 84}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 0, 'duration': 44}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 1, 'duration': 4}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 2, 'duration': 57}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 1, 'duration': 91}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 0, 'duration': 9}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 2, 'duration': 12}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 0, 'duration': 95}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 2, 'duration': 77}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 1, 'duration': 21}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 2, 'duration': 52}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 1, 'duration': 15}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 0, 'duration': 32}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 1, 'duration': 84}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 0, 'duration': 61}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 2, 'duration': 48}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 2, 'duration': 77}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 1, 'duration': 15}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 0, 'duration': 88}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 77, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 190, 'machine': 1, 'duration': 16}, {'task': 2, 'start': 209, 'machine': 0, 'duration': 84}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 156, 'machine': 0, 'duration': 44}, {'task': 1, 'start': 206, 'machine': 1, 'duration': 4}, {'task': 2, 'start': 255, 'machine': 2, 'duration': 57}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 84, 'machine': 1, 'duration': 91}, {'task': 1, 'start': 200, 'machine': 0, 'duration': 9}, {'task': 2, 'start': 312, 'machine': 2, 'duration': 12}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 95}, {'task': 1, 'start': 130, 'machine': 2, 'duration': 77}, {'task': 2, 'start': 225, 'machine': 1, 'duration': 21}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 78, 'machine': 2, 'duration': 52}, {'task': 1, 'start': 210, 'machine': 1, 'duration': 15}, {'task': 2, 'start': 293, 'machine': 0, 'duration': 32}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 84}, {'task': 1, 'start': 95, 'machine': 0, 'duration': 61}, {'task': 2, 'start': 207, 'machine': 2, 'duration': 48}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 77}, {'task': 1, 'start': 175, 'machine': 1, 'duration': 15}, {'task': 2, 'start': 325, 'machine': 0, 'duration': 88}]}]",21,nl,0 |
| JSP,JSP,"We had to map out the crew and equipment so several construction units could get finished without wasting time: each operation on a unit has a fixed duration, machines canβt split themselves between tasks, and the steps for every unit must happen in the order theyβre laid out. The decision is the sequence and timing of assignments across crews and machines so the last unit is completed as soon as possible β the key metric is the time stamp when the final job ends. The exact numbers and tasks are listed below. |
|
|
| |
| |
| |
| |
| unit_id,step_index,required_equipment_id,operation_duration |
| J1,0,3,1 |
| J1,1,2,29 |
| J1,2,1,60 |
| J1,3,0,89 |
| J2,0,3,56 |
| J2,1,2,79 |
| J2,2,0,96 |
| J2,3,1,77 |
| J3,0,0,79 |
| J3,1,2,88 |
| J3,2,3,16 |
| J3,3,1,72 |
| J4,0,2,35 |
| J4,1,1,18 |
| J4,2,0,37 |
| J4,3,3,37 |
| J5,0,3,28 |
| J5,1,1,49 |
| J5,2,2,16 |
| J5,3,0,21 |
| J6,0,3,30 |
| J6,1,0,27 |
| J6,2,2,11 |
| J6,3,1,62 |
|
|
| Also, to keep things tidy, please return the planned schedule in this simple JSON shape when you submit the solution: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it like a small form: ""solution"" is a list of jobs, each job entry names which job it is and then lists its tasks; every task line just says which step it is, when it starts, which machine it runs on, and how long it takes. Super casual β it's just the shape I need, not the actual schedule yet. |
|
|
| This JSON is only a sketch of the expected format, not the final answer. Please make sure all identifiers are used exactly as they appear in the instance input β no renaming and no new labels. |
|
|
| - for example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 4, 'nr_jobs': 6, 'jobs': [[[3, 1], [2, 29], [1, 60], [0, 89]], [[3, 56], [2, 79], [0, 96], [1, 77]], [[0, 79], [2, 88], [3, 16], [1, 72]], [[2, 35], [1, 18], [0, 37], [3, 37]], [[3, 28], [1, 49], [2, 16], [0, 21]], [[3, 30], [0, 27], [2, 11], [1, 62]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 1, 'machine': 2, 'duration': 29}, {'task': 2, 'start': 30, 'machine': 1, 'duration': 60}, {'task': 3, 'start': 296, 'machine': 0, 'duration': 89}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 1, 'machine': 3, 'duration': 56}, {'task': 1, 'start': 57, 'machine': 2, 'duration': 79}, {'task': 2, 'start': 142, 'machine': 0, 'duration': 96}, {'task': 3, 'start': 238, 'machine': 1, 'duration': 77}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 79}, {'task': 1, 'start': 204, 'machine': 2, 'duration': 88}, {'task': 2, 'start': 292, 'machine': 3, 'duration': 16}, {'task': 3, 'start': 315, 'machine': 1, 'duration': 72}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 153, 'machine': 2, 'duration': 35}, {'task': 1, 'start': 215, 'machine': 1, 'duration': 18}, {'task': 2, 'start': 259, 'machine': 0, 'duration': 37}, {'task': 3, 'start': 308, 'machine': 3, 'duration': 37}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 57, 'machine': 3, 'duration': 28}, {'task': 1, 'start': 90, 'machine': 1, 'duration': 49}, {'task': 2, 'start': 188, 'machine': 2, 'duration': 16}, {'task': 3, 'start': 238, 'machine': 0, 'duration': 21}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 85, 'machine': 3, 'duration': 30}, {'task': 1, 'start': 115, 'machine': 0, 'duration': 27}, {'task': 2, 'start': 142, 'machine': 2, 'duration': 11}, {'task': 3, 'start': 153, 'machine': 1, 'duration': 62}]}]",387.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 4, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': [0, 1, 2, 3], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 3, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 2, 'duration': 29}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 1, 'duration': 60}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 0, 'duration': 89}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 3, 'duration': 56}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 2, 'duration': 79}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 0, 'duration': 96}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 1, 'duration': 77}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 0, 'duration': 79}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 2, 'duration': 88}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 3, 'duration': 16}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 1, 'duration': 72}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 2, 'duration': 35}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 1, 'duration': 18}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 0, 'duration': 37}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 3, 'duration': 37}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 3, 'duration': 28}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 1, 'duration': 49}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 2, 'duration': 16}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 0, 'duration': 21}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 3, 'duration': 30}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 0, 'duration': 27}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 2, 'duration': 11}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 1, 'duration': 62}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 1, 'machine': 2, 'duration': 29}, {'task': 2, 'start': 30, 'machine': 1, 'duration': 60}, {'task': 3, 'start': 296, 'machine': 0, 'duration': 89}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 1, 'machine': 3, 'duration': 56}, {'task': 1, 'start': 57, 'machine': 2, 'duration': 79}, {'task': 2, 'start': 142, 'machine': 0, 'duration': 96}, {'task': 3, 'start': 238, 'machine': 1, 'duration': 77}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 79}, {'task': 1, 'start': 204, 'machine': 2, 'duration': 88}, {'task': 2, 'start': 292, 'machine': 3, 'duration': 16}, {'task': 3, 'start': 315, 'machine': 1, 'duration': 72}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 153, 'machine': 2, 'duration': 35}, {'task': 1, 'start': 215, 'machine': 1, 'duration': 18}, {'task': 2, 'start': 259, 'machine': 0, 'duration': 37}, {'task': 3, 'start': 308, 'machine': 3, 'duration': 37}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 57, 'machine': 3, 'duration': 28}, {'task': 1, 'start': 90, 'machine': 1, 'duration': 49}, {'task': 2, 'start': 188, 'machine': 2, 'duration': 16}, {'task': 3, 'start': 238, 'machine': 0, 'duration': 21}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 85, 'machine': 3, 'duration': 30}, {'task': 1, 'start': 115, 'machine': 0, 'duration': 27}, {'task': 2, 'start': 142, 'machine': 2, 'duration': 11}, {'task': 3, 'start': 153, 'machine': 1, 'duration': 62}]}]",22,csv,0 |
| JSP,JSP,"Iβm juggling a stack of feature builds, each one made of a fixed line-up of steps that have to happen in order. Each step needs a specific server and a known amount of time, and a server can only handle one step at a time. The job is to pick when and in what order those steps run so the whole batch is done as early as possible β measured by the time the last feature finishes (so look at every featureβs completion time and the biggest one is the score). Nothing can be skipped or done twice, every step must run on its assigned server, and the steps for a feature must keep their given order. The exact servers, step times, and feature sequences are listed below. |
|
|
| |
| |
| |
| |
| feature_id,step_index,server_id,step_duration |
| J1,0,C,1 |
| J1,1,B,42 |
| J1,2,A,36 |
| J2,0,A,36 |
| J2,1,C,10 |
| J2,2,B,2 |
| J3,0,A,2 |
| J3,1,B,45 |
| J3,2,C,48 |
| J4,0,C,82 |
| J4,1,A,54 |
| J4,2,B,25 |
| J5,0,A,18 |
| J5,1,C,22 |
| J5,2,B,42 |
| J6,0,C,90 |
| J6,1,A,95 |
| J6,2,B,49 |
|
|
| Also, when you send back a schedule, it'd be great if you follow a simple JSON layout so I can read it reliably. Something like this shows the shape I expect: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it as a little form: ""solution"" is the list of features (jobs), each entry names the job and lists its steps (tasks). For each step you give which step index it is, when it starts, which server (machine) it runs on, and how long it takes. Super casual β just the fields shown, nothing fancy. |
|
|
| This block is just a sketch of the expected shape, not the actual schedule β I'll need the real numbers and the exact job/machine identifiers from the instance. |
|
|
| Please use the identifiers exactly as they appear in the instance input β no renaming and no new labels. For example: Valid identifiers look like plain numbers such as ""1"" or ""23"", single capital letters like ""A"" or ""B"", or a capital letter followed by digits like ""A1"" or ""X7"".","{'nr_machines': 3, 'nr_jobs': 6, 'jobs': [[[2, 1], [1, 42], [0, 36]], [[0, 36], [2, 10], [1, 2]], [[0, 2], [1, 45], [2, 48]], [[2, 82], [0, 54], [1, 25]], [[0, 18], [2, 22], [1, 42]], [[2, 90], [0, 95], [1, 49]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 1, 'machine': 1, 'duration': 42}, {'task': 2, 'start': 56, 'machine': 0, 'duration': 36}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 36}, {'task': 1, 'start': 195, 'machine': 2, 'duration': 10}, {'task': 2, 'start': 236, 'machine': 1, 'duration': 2}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 54, 'machine': 0, 'duration': 2}, {'task': 1, 'start': 56, 'machine': 1, 'duration': 45}, {'task': 2, 'start': 205, 'machine': 2, 'duration': 48}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 113, 'machine': 2, 'duration': 82}, {'task': 1, 'start': 195, 'machine': 0, 'duration': 54}, {'task': 2, 'start': 249, 'machine': 1, 'duration': 25}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 36, 'machine': 0, 'duration': 18}, {'task': 1, 'start': 91, 'machine': 2, 'duration': 22}, {'task': 2, 'start': 113, 'machine': 1, 'duration': 42}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 1, 'machine': 2, 'duration': 90}, {'task': 1, 'start': 92, 'machine': 0, 'duration': 95}, {'task': 2, 'start': 187, 'machine': 1, 'duration': 49}]}]",274.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': ['A', 'B', 'C'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'C', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'B', 'duration': 42}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'A', 'duration': 36}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'A', 'duration': 36}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'C', 'duration': 10}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'B', 'duration': 2}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'A', 'duration': 2}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'B', 'duration': 45}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'C', 'duration': 48}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'C', 'duration': 82}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'A', 'duration': 54}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'B', 'duration': 25}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'A', 'duration': 18}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'C', 'duration': 22}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'B', 'duration': 42}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'C', 'duration': 90}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'A', 'duration': 95}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'B', 'duration': 49}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 1}, {'task': 1, 'start': 1, 'machine': 'B', 'duration': 42}, {'task': 2, 'start': 56, 'machine': 'A', 'duration': 36}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 'A', 'duration': 36}, {'task': 1, 'start': 195, 'machine': 'C', 'duration': 10}, {'task': 2, 'start': 236, 'machine': 'B', 'duration': 2}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 54, 'machine': 'A', 'duration': 2}, {'task': 1, 'start': 56, 'machine': 'B', 'duration': 45}, {'task': 2, 'start': 205, 'machine': 'C', 'duration': 48}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 113, 'machine': 'C', 'duration': 82}, {'task': 1, 'start': 195, 'machine': 'A', 'duration': 54}, {'task': 2, 'start': 249, 'machine': 'B', 'duration': 25}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 36, 'machine': 'A', 'duration': 18}, {'task': 1, 'start': 91, 'machine': 'C', 'duration': 22}, {'task': 2, 'start': 113, 'machine': 'B', 'duration': 42}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 1, 'machine': 'C', 'duration': 90}, {'task': 1, 'start': 92, 'machine': 'A', 'duration': 95}, {'task': 2, 'start': 187, 'machine': 'B', 'duration': 49}]}]",23,csv,names |
| JSP,JSP,"Many people think of it like a relay: each garment carries a list of operations, each operation takes a set time on a particular station, and the goal is to pass everything through the stations so the final runner crosses the line as early as possible. That means deciding which operation runs when on each machine so the time when the last garment finishes is as small as possible β compare schedules by that finishing time. Stations canβt handle two pieces at once, and every garmentβs chain of steps must be followed exactly, no omissions or repeats. The concrete details are shown below. |
|
|
| { |
| ""nr_garments"": 7, |
| ""nr_stations"": 3, |
| ""garment_ids"": [ |
| ""J1"", |
| ""J2"", |
| ""J3"", |
| ""J4"", |
| ""J5"", |
| ""J6"", |
| ""J7"" |
| ], |
| ""station_ids"": [ |
| 1, |
| 2, |
| 3 |
| ], |
| ""tasks"": [ |
| { |
| ""garment_id"": ""J1"", |
| ""operation_index"": 0, |
| ""station_id"": 3, |
| ""processing_time"": 1 |
| }, |
| { |
| ""garment_id"": ""J1"", |
| ""operation_index"": 1, |
| ""station_id"": 2, |
| ""processing_time"": 55 |
| }, |
| { |
| ""garment_id"": ""J1"", |
| ""operation_index"": 2, |
| ""station_id"": 1, |
| ""processing_time"": 12 |
| }, |
| { |
| ""garment_id"": ""J2"", |
| ""operation_index"": 0, |
| ""station_id"": 2, |
| ""processing_time"": 81 |
| }, |
| { |
| ""garment_id"": ""J2"", |
| ""operation_index"": 1, |
| ""station_id"": 3, |
| ""processing_time"": 63 |
| }, |
| { |
| ""garment_id"": ""J2"", |
| ""operation_index"": 2, |
| ""station_id"": 1, |
| ""processing_time"": 24 |
| }, |
| { |
| ""garment_id"": ""J3"", |
| ""operation_index"": 0, |
| ""station_id"": 3, |
| ""processing_time"": 6 |
| }, |
| { |
| ""garment_id"": ""J3"", |
| ""operation_index"": 1, |
| ""station_id"": 2, |
| ""processing_time"": 13 |
| }, |
| { |
| ""garment_id"": ""J3"", |
| ""operation_index"": 2, |
| ""station_id"": 1, |
| ""processing_time"": 16 |
| }, |
| { |
| ""garment_id"": ""J4"", |
| ""operation_index"": 0, |
| ""station_id"": 1, |
| ""processing_time"": 75 |
| }, |
| { |
| ""garment_id"": ""J4"", |
| ""operation_index"": 1, |
| ""station_id"": 3, |
| ""processing_time"": 92 |
| }, |
| { |
| ""garment_id"": ""J4"", |
| ""operation_index"": 2, |
| ""station_id"": 2, |
| ""processing_time"": 76 |
| }, |
| { |
| ""garment_id"": ""J5"", |
| ""operation_index"": 0, |
| ""station_id"": 3, |
| ""processing_time"": 2 |
| }, |
| { |
| ""garment_id"": ""J5"", |
| ""operation_index"": 1, |
| ""station_id"": 2, |
| ""processing_time"": 25 |
| }, |
| { |
| ""garment_id"": ""J5"", |
| ""operation_index"": 2, |
| ""station_id"": 1, |
| ""processing_time"": 48 |
| }, |
| { |
| ""garment_id"": ""J6"", |
| ""operation_index"": 0, |
| ""station_id"": 1, |
| ""processing_time"": 43 |
| }, |
| { |
| ""garment_id"": ""J6"", |
| ""operation_index"": 1, |
| ""station_id"": 2, |
| ""processing_time"": 62 |
| }, |
| { |
| ""garment_id"": ""J6"", |
| ""operation_index"": 2, |
| ""station_id"": 3, |
| ""processing_time"": 50 |
| }, |
| { |
| ""garment_id"": ""J7"", |
| ""operation_index"": 0, |
| ""station_id"": 1, |
| ""processing_time"": 92 |
| }, |
| { |
| ""garment_id"": ""J7"", |
| ""operation_index"": 1, |
| ""station_id"": 3, |
| ""processing_time"": 35 |
| }, |
| { |
| ""garment_id"": ""J7"", |
| ""operation_index"": 2, |
| ""station_id"": 2, |
| ""processing_time"": 14 |
| } |
| ] |
| } |
|
|
| Oh, and when you give the actual schedule, please follow this simple JSON layout so everything's easy to parse and compare: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| This is just a sketch of the shape I expect: each top-level item is one job (think of it as one garment), and inside each job there's a list of tasks with the task index, the start time you plan for that task, which machine/station it runs on, and how long it takes. Super casual β fill in the actual numbers and IDs when you send the schedule. |
|
|
| Please use the identifiers exactly as they appear in the instance input β no renaming and no new labels. For example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 3, 'nr_jobs': 7, 'jobs': [[[2, 1], [1, 55], [0, 12]], [[1, 81], [2, 63], [0, 24]], [[2, 6], [1, 13], [0, 16]], [[0, 75], [2, 92], [1, 76]], [[2, 2], [1, 25], [0, 48]], [[0, 43], [1, 62], [2, 50]], [[0, 92], [2, 35], [1, 14]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 2, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 106, 'machine': 1, 'duration': 55}, {'task': 2, 'start': 282, 'machine': 0, 'duration': 12}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 81}, {'task': 1, 'start': 167, 'machine': 2, 'duration': 63}, {'task': 2, 'start': 258, 'machine': 0, 'duration': 24}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 3, 'machine': 2, 'duration': 6}, {'task': 1, 'start': 223, 'machine': 1, 'duration': 13}, {'task': 2, 'start': 294, 'machine': 0, 'duration': 16}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 75}, {'task': 1, 'start': 75, 'machine': 2, 'duration': 92}, {'task': 2, 'start': 236, 'machine': 1, 'duration': 76}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 2}, {'task': 1, 'start': 81, 'machine': 1, 'duration': 25}, {'task': 2, 'start': 210, 'machine': 0, 'duration': 48}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 75, 'machine': 0, 'duration': 43}, {'task': 1, 'start': 161, 'machine': 1, 'duration': 62}, {'task': 2, 'start': 265, 'machine': 2, 'duration': 50}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 118, 'machine': 0, 'duration': 92}, {'task': 1, 'start': 230, 'machine': 2, 'duration': 35}, {'task': 2, 'start': 312, 'machine': 1, 'duration': 14}]}]",326.0,"{'problem_type': 'JSP', 'nr_jobs': 7, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7'], 'machines': [1, 2, 3], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 3, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 2, 'duration': 55}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 1, 'duration': 12}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 2, 'duration': 81}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 3, 'duration': 63}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 1, 'duration': 24}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 3, 'duration': 6}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 2, 'duration': 13}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 1, 'duration': 16}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 1, 'duration': 75}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 3, 'duration': 92}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 2, 'duration': 76}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 3, 'duration': 2}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 2, 'duration': 25}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 1, 'duration': 48}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 1, 'duration': 43}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 2, 'duration': 62}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 3, 'duration': 50}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 1, 'duration': 92}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 3, 'duration': 35}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 2, 'duration': 14}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 2, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 106, 'machine': 2, 'duration': 55}, {'task': 2, 'start': 282, 'machine': 1, 'duration': 12}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 81}, {'task': 1, 'start': 167, 'machine': 3, 'duration': 63}, {'task': 2, 'start': 258, 'machine': 1, 'duration': 24}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 3, 'machine': 3, 'duration': 6}, {'task': 1, 'start': 223, 'machine': 2, 'duration': 13}, {'task': 2, 'start': 294, 'machine': 1, 'duration': 16}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 75}, {'task': 1, 'start': 75, 'machine': 3, 'duration': 92}, {'task': 2, 'start': 236, 'machine': 2, 'duration': 76}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 2}, {'task': 1, 'start': 81, 'machine': 2, 'duration': 25}, {'task': 2, 'start': 210, 'machine': 1, 'duration': 48}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 75, 'machine': 1, 'duration': 43}, {'task': 1, 'start': 161, 'machine': 2, 'duration': 62}, {'task': 2, 'start': 265, 'machine': 3, 'duration': 50}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 118, 'machine': 1, 'duration': 92}, {'task': 1, 'start': 230, 'machine': 3, 'duration': 35}, {'task': 2, 'start': 312, 'machine': 2, 'duration': 14}]}]",24,json,1 |
| JSP,JSP,"Imagine a tiny workflow where each customerβs basket has a fixed recipe: one cycle after another on particular machines, each taking a fixed span of time. The question is how to slot those cycles onto the washers and dryers to get the whole pile finished in the least calendar time. The winner is the plan that makes the last basket come out sooner β that finishing moment is the measure of success. Every required cycle must be run exactly once and in the prescribed order, and machines canβt do two cycles at once. The concrete details are shown below. |
|
|
| There are 7 customer loads and 4 appliances; the loads are J1, J2, J3, J4, J5, J6, J7 and the appliances are 1, 2, 3, 4. |
|
|
| | load_id | cycle_index | appliance_id | cycle_duration | |
| |---|---|---|---| |
| | J1 | 0 | 3 | 1 | |
| | J1 | 1 | 2 | 68 | |
| | J1 | 2 | 4 | 87 | |
| | J1 | 3 | 1 | 27 | |
| | J2 | 0 | 2 | 17 | |
| | J2 | 1 | 1 | 45 | |
| | J2 | 2 | 3 | 11 | |
| | J2 | 3 | 4 | 80 | |
| | J3 | 0 | 1 | 83 | |
| | J3 | 1 | 4 | 69 | |
| | J3 | 2 | 2 | 31 | |
| | J3 | 3 | 3 | 28 | |
| | J4 | 0 | 2 | 84 | |
| | J4 | 1 | 4 | 28 | |
| | J4 | 2 | 1 | 53 | |
| | J4 | 3 | 3 | 96 | |
| | J5 | 0 | 4 | 30 | |
| | J5 | 1 | 3 | 51 | |
| | J5 | 2 | 1 | 31 | |
| | J5 | 3 | 2 | 41 | |
| | J6 | 0 | 2 | 55 | |
| | J6 | 1 | 1 | 33 | |
| | J6 | 2 | 3 | 87 | |
| | J6 | 3 | 4 | 41 | |
| | J7 | 0 | 4 | 84 | |
| | J7 | 1 | 1 | 77 | |
| | J7 | 2 | 3 | 7 | |
| | J7 | 3 | 2 | 16 | |
|
|
| Slot each required cycle once and in order so the last load finishes as soon as possible. |
|
|
| You can hand the schedule back to me in a small JSON form so it's easy to check. Something like this is perfect: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it as a simple form: ""solution"" holds a list of jobs; each job entry names the job and then lists its tasks in order. Each task record just says which task number it is, when that task starts, which machine it runs on, and how long it takes. Super informal β just enough structure so I can read your plan. |
|
|
| This JSON is only a sketch of the shape I expect, not the actual schedule answer. |
|
|
| Please be careful to use the exact identifiers from the instance input β do not rename them or invent new labels. |
| For example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 4, 'nr_jobs': 7, 'jobs': [[[2, 1], [1, 68], [3, 87], [0, 27]], [[1, 17], [0, 45], [2, 11], [3, 80]], [[0, 83], [3, 69], [1, 31], [2, 28]], [[1, 84], [3, 28], [0, 53], [2, 96]], [[3, 30], [2, 51], [0, 31], [1, 41]], [[1, 55], [0, 33], [2, 87], [3, 41]], [[3, 84], [0, 77], [2, 7], [1, 16]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 139, 'machine': 1, 'duration': 68}, {'task': 2, 'start': 211, 'machine': 3, 'duration': 87}, {'task': 3, 'start': 323, 'machine': 0, 'duration': 27}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 207, 'machine': 1, 'duration': 17}, {'task': 1, 'start': 225, 'machine': 0, 'duration': 45}, {'task': 2, 'start': 309, 'machine': 2, 'duration': 11}, {'task': 3, 'start': 339, 'machine': 3, 'duration': 80}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 83}, {'task': 1, 'start': 114, 'machine': 3, 'duration': 69}, {'task': 2, 'start': 224, 'machine': 1, 'duration': 31}, {'task': 3, 'start': 281, 'machine': 2, 'duration': 28}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 84}, {'task': 1, 'start': 183, 'machine': 3, 'duration': 28}, {'task': 2, 'start': 270, 'machine': 0, 'duration': 53}, {'task': 3, 'start': 323, 'machine': 2, 'duration': 96}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 84, 'machine': 3, 'duration': 30}, {'task': 1, 'start': 114, 'machine': 2, 'duration': 51}, {'task': 2, 'start': 194, 'machine': 0, 'duration': 31}, {'task': 3, 'start': 255, 'machine': 1, 'duration': 41}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 84, 'machine': 1, 'duration': 55}, {'task': 1, 'start': 161, 'machine': 0, 'duration': 33}, {'task': 2, 'start': 194, 'machine': 2, 'duration': 87}, {'task': 3, 'start': 298, 'machine': 3, 'duration': 41}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 84}, {'task': 1, 'start': 84, 'machine': 0, 'duration': 77}, {'task': 2, 'start': 165, 'machine': 2, 'duration': 7}, {'task': 3, 'start': 296, 'machine': 1, 'duration': 16}]}]",419.0,"{'problem_type': 'JSP', 'nr_jobs': 7, 'nr_machines': 4, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7'], 'machines': [1, 2, 3, 4], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 3, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 2, 'duration': 68}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 4, 'duration': 87}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 1, 'duration': 27}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 2, 'duration': 17}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 1, 'duration': 45}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 3, 'duration': 11}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 4, 'duration': 80}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 1, 'duration': 83}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 4, 'duration': 69}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 2, 'duration': 31}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 3, 'duration': 28}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 2, 'duration': 84}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 4, 'duration': 28}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 1, 'duration': 53}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 3, 'duration': 96}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 4, 'duration': 30}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 3, 'duration': 51}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 1, 'duration': 31}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 2, 'duration': 41}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 2, 'duration': 55}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 1, 'duration': 33}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 3, 'duration': 87}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 4, 'duration': 41}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 4, 'duration': 84}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 1, 'duration': 77}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 3, 'duration': 7}, {'job_id': 'J7', 'task_id': 3, 'machine_id': 2, 'duration': 16}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 139, 'machine': 2, 'duration': 68}, {'task': 2, 'start': 211, 'machine': 4, 'duration': 87}, {'task': 3, 'start': 323, 'machine': 1, 'duration': 27}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 207, 'machine': 2, 'duration': 17}, {'task': 1, 'start': 225, 'machine': 1, 'duration': 45}, {'task': 2, 'start': 309, 'machine': 3, 'duration': 11}, {'task': 3, 'start': 339, 'machine': 4, 'duration': 80}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 83}, {'task': 1, 'start': 114, 'machine': 4, 'duration': 69}, {'task': 2, 'start': 224, 'machine': 2, 'duration': 31}, {'task': 3, 'start': 281, 'machine': 3, 'duration': 28}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 84}, {'task': 1, 'start': 183, 'machine': 4, 'duration': 28}, {'task': 2, 'start': 270, 'machine': 1, 'duration': 53}, {'task': 3, 'start': 323, 'machine': 3, 'duration': 96}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 84, 'machine': 4, 'duration': 30}, {'task': 1, 'start': 114, 'machine': 3, 'duration': 51}, {'task': 2, 'start': 194, 'machine': 1, 'duration': 31}, {'task': 3, 'start': 255, 'machine': 2, 'duration': 41}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 84, 'machine': 2, 'duration': 55}, {'task': 1, 'start': 161, 'machine': 1, 'duration': 33}, {'task': 2, 'start': 194, 'machine': 3, 'duration': 87}, {'task': 3, 'start': 298, 'machine': 4, 'duration': 41}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 84}, {'task': 1, 'start': 84, 'machine': 1, 'duration': 77}, {'task': 2, 'start': 165, 'machine': 3, 'duration': 7}, {'task': 3, 'start': 296, 'machine': 2, 'duration': 16}]}]",25,markdown_table,1 |
| JSP,JSP,"Recently the team at a detailing garage noticed their workflow was messy: every car follows a particular sequence of services, each service runs for a fixed duration in a specific bay, and bays can only take one car at a time. The problem to solve was how to schedule those services so the whole set of cars would be completed quickly β the better schedule is the one that makes the time when the last car is finished as small as possible; you find that time by looking at each carβs finish moment and picking the latest. Steps canβt be skipped or reshuffled, and every listed service must be performed once. The detailed list of cars, bays, and times appears below. |
|
|
| There are 8 cars to schedule across 4 bays; car identifiers: J1, J2, J3, J4, J5, J6, J7, J8; bay identifiers: A, B, C, D. |
| Car J1, service 0: assigned to bay C for 1 time units. |
| Car J1, service 1: assigned to bay B for 81 time units. |
| Car J1, service 2: assigned to bay D for 62 time units. |
| Car J1, service 3: assigned to bay A for 73 time units. |
| Car J2, service 0: assigned to bay C for 69 time units. |
| Car J2, service 1: assigned to bay D for 67 time units. |
| Car J2, service 2: assigned to bay B for 16 time units. |
| Car J2, service 3: assigned to bay A for 48 time units. |
| Car J3, service 0: assigned to bay B for 51 time units. |
| Car J3, service 1: assigned to bay D for 62 time units. |
| Car J3, service 2: assigned to bay A for 69 time units. |
| Car J3, service 3: assigned to bay C for 80 time units. |
| Car J4, service 0: assigned to bay A for 67 time units. |
| Car J4, service 1: assigned to bay B for 32 time units. |
| Car J4, service 2: assigned to bay D for 58 time units. |
| Car J4, service 3: assigned to bay C for 49 time units. |
| Car J5, service 0: assigned to bay D for 96 time units. |
| Car J5, service 1: assigned to bay C for 52 time units. |
| Car J5, service 2: assigned to bay A for 69 time units. |
| Car J5, service 3: assigned to bay B for 48 time units. |
| Car J6, service 0: assigned to bay C for 97 time units. |
| Car J6, service 1: assigned to bay A for 2 time units. |
| Car J6, service 2: assigned to bay D for 46 time units. |
| Car J6, service 3: assigned to bay B for 34 time units. |
| Car J7, service 0: assigned to bay A for 69 time units. |
| Car J7, service 1: assigned to bay B for 31 time units. |
| Car J7, service 2: assigned to bay C for 17 time units. |
| Car J7, service 3: assigned to bay D for 81 time units. |
| Car J8, service 0: assigned to bay D for 87 time units. |
| Car J8, service 1: assigned to bay B for 97 time units. |
| Car J8, service 2: assigned to bay A for 99 time units. |
| Car J8, service 3: assigned to bay C for 7 time units. |
| All listed services must be performed once and in the given order; bays cannot host overlapping services and the objective is to minimize the time when the last car finishes. |
|
|
| Also, when you send the actual schedule back, just use this simple JSON layout so it's easy to read and parse: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it like a little form: ""solution"" is a list of cars, each car has a job id and a list of services (tasks). For each service you say which step it is, what time it starts, which bay (machine) it uses, and how long it runs. This block is just a sketch of the shape I expect, not the actual schedule β I'll need the real values for each item from the instance. |
|
|
| Please make sure you use the exact identifiers from the instance input β do not rename them or invent new labels. |
| - for example: ""Valid identifiers look like plain numbers such as ""1"" or ""23"", single capital letters like ""A"" or ""B"", or a capital letter followed by digits like ""A1"" or ""X7"".""","{'nr_machines': 4, 'nr_jobs': 8, 'jobs': [[[2, 1], [1, 81], [3, 62], [0, 73]], [[2, 69], [3, 67], [1, 16], [0, 48]], [[1, 51], [3, 62], [0, 69], [2, 80]], [[0, 67], [1, 32], [3, 58], [2, 49]], [[3, 96], [2, 52], [0, 69], [1, 48]], [[2, 97], [0, 2], [3, 46], [1, 34]], [[0, 69], [1, 31], [2, 17], [3, 81]], [[3, 87], [1, 97], [0, 99], [2, 7]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 97, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 196, 'machine': 1, 'duration': 81}, {'task': 2, 'start': 312, 'machine': 3, 'duration': 62}, {'task': 3, 'start': 433, 'machine': 0, 'duration': 73}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 98, 'machine': 2, 'duration': 69}, {'task': 1, 'start': 245, 'machine': 3, 'duration': 67}, {'task': 2, 'start': 312, 'machine': 1, 'duration': 16}, {'task': 3, 'start': 506, 'machine': 0, 'duration': 48}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 51}, {'task': 1, 'start': 183, 'machine': 3, 'duration': 62}, {'task': 2, 'start': 295, 'machine': 0, 'duration': 69}, {'task': 3, 'start': 364, 'machine': 2, 'duration': 80}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 67}, {'task': 1, 'start': 67, 'machine': 1, 'duration': 32}, {'task': 2, 'start': 374, 'machine': 3, 'duration': 58}, {'task': 3, 'start': 444, 'machine': 2, 'duration': 49}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 87, 'machine': 3, 'duration': 96}, {'task': 1, 'start': 183, 'machine': 2, 'duration': 52}, {'task': 2, 'start': 364, 'machine': 0, 'duration': 69}, {'task': 3, 'start': 433, 'machine': 1, 'duration': 48}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 97}, {'task': 1, 'start': 136, 'machine': 0, 'duration': 2}, {'task': 2, 'start': 432, 'machine': 3, 'duration': 46}, {'task': 3, 'start': 481, 'machine': 1, 'duration': 34}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 67, 'machine': 0, 'duration': 69}, {'task': 1, 'start': 277, 'machine': 1, 'duration': 31}, {'task': 2, 'start': 308, 'machine': 2, 'duration': 17}, {'task': 3, 'start': 478, 'machine': 3, 'duration': 81}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 87}, {'task': 1, 'start': 99, 'machine': 1, 'duration': 97}, {'task': 2, 'start': 196, 'machine': 0, 'duration': 99}, {'task': 3, 'start': 295, 'machine': 2, 'duration': 7}]}]",559.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 4, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': ['A', 'B', 'C', 'D'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'C', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'B', 'duration': 81}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'D', 'duration': 62}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 'A', 'duration': 73}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'C', 'duration': 69}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'D', 'duration': 67}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'B', 'duration': 16}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 'A', 'duration': 48}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'B', 'duration': 51}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'D', 'duration': 62}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'A', 'duration': 69}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 'C', 'duration': 80}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'A', 'duration': 67}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'B', 'duration': 32}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'D', 'duration': 58}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 'C', 'duration': 49}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'D', 'duration': 96}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'C', 'duration': 52}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'A', 'duration': 69}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 'B', 'duration': 48}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'C', 'duration': 97}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'A', 'duration': 2}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'D', 'duration': 46}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 'B', 'duration': 34}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 'A', 'duration': 69}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 'B', 'duration': 31}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 'C', 'duration': 17}, {'job_id': 'J7', 'task_id': 3, 'machine_id': 'D', 'duration': 81}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 'D', 'duration': 87}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 'B', 'duration': 97}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 'A', 'duration': 99}, {'job_id': 'J8', 'task_id': 3, 'machine_id': 'C', 'duration': 7}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 97, 'machine': 'C', 'duration': 1}, {'task': 1, 'start': 196, 'machine': 'B', 'duration': 81}, {'task': 2, 'start': 312, 'machine': 'D', 'duration': 62}, {'task': 3, 'start': 433, 'machine': 'A', 'duration': 73}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 98, 'machine': 'C', 'duration': 69}, {'task': 1, 'start': 245, 'machine': 'D', 'duration': 67}, {'task': 2, 'start': 312, 'machine': 'B', 'duration': 16}, {'task': 3, 'start': 506, 'machine': 'A', 'duration': 48}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 51}, {'task': 1, 'start': 183, 'machine': 'D', 'duration': 62}, {'task': 2, 'start': 295, 'machine': 'A', 'duration': 69}, {'task': 3, 'start': 364, 'machine': 'C', 'duration': 80}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 'A', 'duration': 67}, {'task': 1, 'start': 67, 'machine': 'B', 'duration': 32}, {'task': 2, 'start': 374, 'machine': 'D', 'duration': 58}, {'task': 3, 'start': 444, 'machine': 'C', 'duration': 49}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 87, 'machine': 'D', 'duration': 96}, {'task': 1, 'start': 183, 'machine': 'C', 'duration': 52}, {'task': 2, 'start': 364, 'machine': 'A', 'duration': 69}, {'task': 3, 'start': 433, 'machine': 'B', 'duration': 48}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 97}, {'task': 1, 'start': 136, 'machine': 'A', 'duration': 2}, {'task': 2, 'start': 432, 'machine': 'D', 'duration': 46}, {'task': 3, 'start': 481, 'machine': 'B', 'duration': 34}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 67, 'machine': 'A', 'duration': 69}, {'task': 1, 'start': 277, 'machine': 'B', 'duration': 31}, {'task': 2, 'start': 308, 'machine': 'C', 'duration': 17}, {'task': 3, 'start': 478, 'machine': 'D', 'duration': 81}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 0, 'machine': 'D', 'duration': 87}, {'task': 1, 'start': 99, 'machine': 'B', 'duration': 97}, {'task': 2, 'start': 196, 'machine': 'A', 'duration': 99}, {'task': 3, 'start': 295, 'machine': 'C', 'duration': 7}]}]",26,nl,names |
| JSP,JSP,"I was watching a small metal shop the other day where each part needs a handful of machining and finishing steps in a certain order. The dayβs problem is deciding which part goes to which machine and when, so every required step happens once and in the right sequence on the correct machine. The better plan is the one that gets the entire batch finished sooner β you can tell by the clock time when the last part leaves the bench. Concrete details about the parts, machines, and how long each step takes are listed below. |
|
|
| { |
| ""total_parts"": 6, |
| ""total_machines"": 5, |
| ""parts_list"": [ |
| ""J1"", |
| ""J2"", |
| ""J3"", |
| ""J4"", |
| ""J5"", |
| ""J6"" |
| ], |
| ""machine_ids"": [ |
| 1, |
| 2, |
| 3, |
| 4, |
| 5 |
| ], |
| ""tasks"": [ |
| { |
| ""part_id"": ""J1"", |
| ""operation_index"": 0, |
| ""required_machine_id"": 5, |
| ""processing_time"": 1 |
| }, |
| { |
| ""part_id"": ""J1"", |
| ""operation_index"": 1, |
| ""required_machine_id"": 3, |
| ""processing_time"": 94 |
| }, |
| { |
| ""part_id"": ""J1"", |
| ""operation_index"": 2, |
| ""required_machine_id"": 4, |
| ""processing_time"": 38 |
| }, |
| { |
| ""part_id"": ""J1"", |
| ""operation_index"": 3, |
| ""required_machine_id"": 2, |
| ""processing_time"": 19 |
| }, |
| { |
| ""part_id"": ""J1"", |
| ""operation_index"": 4, |
| ""required_machine_id"": 1, |
| ""processing_time"": 23 |
| }, |
| { |
| ""part_id"": ""J2"", |
| ""operation_index"": 0, |
| ""required_machine_id"": 1, |
| ""processing_time"": 89 |
| }, |
| { |
| ""part_id"": ""J2"", |
| ""operation_index"": 1, |
| ""required_machine_id"": 3, |
| ""processing_time"": 20 |
| }, |
| { |
| ""part_id"": ""J2"", |
| ""operation_index"": 2, |
| ""required_machine_id"": 4, |
| ""processing_time"": 17 |
| }, |
| { |
| ""part_id"": ""J2"", |
| ""operation_index"": 3, |
| ""required_machine_id"": 2, |
| ""processing_time"": 20 |
| }, |
| { |
| ""part_id"": ""J2"", |
| ""operation_index"": 4, |
| ""required_machine_id"": 5, |
| ""processing_time"": 56 |
| }, |
| { |
| ""part_id"": ""J3"", |
| ""operation_index"": 0, |
| ""required_machine_id"": 4, |
| ""processing_time"": 8 |
| }, |
| { |
| ""part_id"": ""J3"", |
| ""operation_index"": 1, |
| ""required_machine_id"": 3, |
| ""processing_time"": 32 |
| }, |
| { |
| ""part_id"": ""J3"", |
| ""operation_index"": 2, |
| ""required_machine_id"": 5, |
| ""processing_time"": 51 |
| }, |
| { |
| ""part_id"": ""J3"", |
| ""operation_index"": 3, |
| ""required_machine_id"": 2, |
| ""processing_time"": 35 |
| }, |
| { |
| ""part_id"": ""J3"", |
| ""operation_index"": 4, |
| ""required_machine_id"": 1, |
| ""processing_time"": 63 |
| }, |
| { |
| ""part_id"": ""J4"", |
| ""operation_index"": 0, |
| ""required_machine_id"": 2, |
| ""processing_time"": 2 |
| }, |
| { |
| ""part_id"": ""J4"", |
| ""operation_index"": 1, |
| ""required_machine_id"": 3, |
| ""processing_time"": 64 |
| }, |
| { |
| ""part_id"": ""J4"", |
| ""operation_index"": 2, |
| ""required_machine_id"": 4, |
| ""processing_time"": 52 |
| }, |
| { |
| ""part_id"": ""J4"", |
| ""operation_index"": 3, |
| ""required_machine_id"": 5, |
| ""processing_time"": 8 |
| }, |
| { |
| ""part_id"": ""J4"", |
| ""operation_index"": 4, |
| ""required_machine_id"": 1, |
| ""processing_time"": 54 |
| }, |
| { |
| ""part_id"": ""J5"", |
| ""operation_index"": 0, |
| ""required_machine_id"": 4, |
| ""processing_time"": 39 |
| }, |
| { |
| ""part_id"": ""J5"", |
| ""operation_index"": 1, |
| ""required_machine_id"": 2, |
| ""processing_time"": 70 |
| }, |
| { |
| ""part_id"": ""J5"", |
| ""operation_index"": 2, |
| ""required_machine_id"": 5, |
| ""processing_time"": 5 |
| }, |
| { |
| ""part_id"": ""J5"", |
| ""operation_index"": 3, |
| ""required_machine_id"": 3, |
| ""processing_time"": 27 |
| }, |
| { |
| ""part_id"": ""J5"", |
| ""operation_index"": 4, |
| ""required_machine_id"": 1, |
| ""processing_time"": 54 |
| }, |
| { |
| ""part_id"": ""J6"", |
| ""operation_index"": 0, |
| ""required_machine_id"": 1, |
| ""processing_time"": 83 |
| }, |
| { |
| ""part_id"": ""J6"", |
| ""operation_index"": 1, |
| ""required_machine_id"": 4, |
| ""processing_time"": 26 |
| }, |
| { |
| ""part_id"": ""J6"", |
| ""operation_index"": 2, |
| ""required_machine_id"": 3, |
| ""processing_time"": 47 |
| }, |
| { |
| ""part_id"": ""J6"", |
| ""operation_index"": 3, |
| ""required_machine_id"": 5, |
| ""processing_time"": 29 |
| }, |
| { |
| ""part_id"": ""J6"", |
| ""operation_index"": 4, |
| ""required_machine_id"": 2, |
| ""processing_time"": 68 |
| } |
| ] |
| } |
|
|
| If you want to hand me a candidate plan (or if you're expecting the output back from me), it's easiest if it's shaped like a little JSON snippet β nothing fancy, just a tidy list of jobs with their tasks and times. Hereβs the sketch of the shape I expect: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of ""solution"" as the whole batch. Each entry under it is a job (one of the parts on the shop floor). Inside a job, ""tasks"" is the sequence of steps for that part; each step records which task number it is, when it starts, which machine it uses, and how long it runs. That's just the form β a sketch of the expected shape, not the filled-in schedule. |
|
|
| Please make sure to use the exact identifiers from the instance input β don't rename anything or invent new labels. Valid identifiers look like plain numbers such as ""1"" or ""23"", single capital letters like ""A"" or ""B"", or a capital letter followed by digits like ""A1"" or ""X7"".","{'nr_machines': 5, 'nr_jobs': 6, 'jobs': [[[4, 1], [2, 94], [3, 38], [1, 19], [0, 23]], [[0, 89], [2, 20], [3, 17], [1, 20], [4, 56]], [[3, 8], [2, 32], [4, 51], [1, 35], [0, 63]], [[1, 2], [2, 64], [3, 52], [4, 8], [0, 54]], [[3, 39], [1, 70], [4, 5], [2, 27], [0, 54]], [[0, 83], [3, 26], [2, 47], [4, 29], [1, 68]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 1}, {'task': 1, 'start': 98, 'machine': 2, 'duration': 94}, {'task': 2, 'start': 198, 'machine': 3, 'duration': 38}, {'task': 3, 'start': 236, 'machine': 1, 'duration': 19}, {'task': 4, 'start': 343, 'machine': 0, 'duration': 23}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 89}, {'task': 1, 'start': 192, 'machine': 2, 'duration': 20}, {'task': 2, 'start': 236, 'machine': 3, 'duration': 17}, {'task': 3, 'start': 255, 'machine': 1, 'duration': 20}, {'task': 4, 'start': 288, 'machine': 4, 'duration': 56}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 8}, {'task': 1, 'start': 66, 'machine': 2, 'duration': 32}, {'task': 2, 'start': 98, 'machine': 4, 'duration': 51}, {'task': 3, 'start': 149, 'machine': 1, 'duration': 35}, {'task': 4, 'start': 226, 'machine': 0, 'duration': 63}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 2}, {'task': 1, 'start': 2, 'machine': 2, 'duration': 64}, {'task': 2, 'start': 66, 'machine': 3, 'duration': 52}, {'task': 3, 'start': 149, 'machine': 4, 'duration': 8}, {'task': 4, 'start': 172, 'machine': 0, 'duration': 54}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 8, 'machine': 3, 'duration': 39}, {'task': 1, 'start': 47, 'machine': 1, 'duration': 70}, {'task': 2, 'start': 157, 'machine': 4, 'duration': 5}, {'task': 3, 'start': 259, 'machine': 2, 'duration': 27}, {'task': 4, 'start': 289, 'machine': 0, 'duration': 54}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 89, 'machine': 0, 'duration': 83}, {'task': 1, 'start': 172, 'machine': 3, 'duration': 26}, {'task': 2, 'start': 212, 'machine': 2, 'duration': 47}, {'task': 3, 'start': 259, 'machine': 4, 'duration': 29}, {'task': 4, 'start': 288, 'machine': 1, 'duration': 68}]}]",366.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 5, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': [1, 2, 3, 4, 5], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 5, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 3, 'duration': 94}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 4, 'duration': 38}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 2, 'duration': 19}, {'job_id': 'J1', 'task_id': 4, 'machine_id': 1, 'duration': 23}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 1, 'duration': 89}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 3, 'duration': 20}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 4, 'duration': 17}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 2, 'duration': 20}, {'job_id': 'J2', 'task_id': 4, 'machine_id': 5, 'duration': 56}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 4, 'duration': 8}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 3, 'duration': 32}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 5, 'duration': 51}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 2, 'duration': 35}, {'job_id': 'J3', 'task_id': 4, 'machine_id': 1, 'duration': 63}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 2, 'duration': 2}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 3, 'duration': 64}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 4, 'duration': 52}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 5, 'duration': 8}, {'job_id': 'J4', 'task_id': 4, 'machine_id': 1, 'duration': 54}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 4, 'duration': 39}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 2, 'duration': 70}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 5, 'duration': 5}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 3, 'duration': 27}, {'job_id': 'J5', 'task_id': 4, 'machine_id': 1, 'duration': 54}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 1, 'duration': 83}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 4, 'duration': 26}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 3, 'duration': 47}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 5, 'duration': 29}, {'job_id': 'J6', 'task_id': 4, 'machine_id': 2, 'duration': 68}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 5, 'duration': 1}, {'task': 1, 'start': 98, 'machine': 3, 'duration': 94}, {'task': 2, 'start': 198, 'machine': 4, 'duration': 38}, {'task': 3, 'start': 236, 'machine': 2, 'duration': 19}, {'task': 4, 'start': 343, 'machine': 1, 'duration': 23}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 89}, {'task': 1, 'start': 192, 'machine': 3, 'duration': 20}, {'task': 2, 'start': 236, 'machine': 4, 'duration': 17}, {'task': 3, 'start': 255, 'machine': 2, 'duration': 20}, {'task': 4, 'start': 288, 'machine': 5, 'duration': 56}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 8}, {'task': 1, 'start': 66, 'machine': 3, 'duration': 32}, {'task': 2, 'start': 98, 'machine': 5, 'duration': 51}, {'task': 3, 'start': 149, 'machine': 2, 'duration': 35}, {'task': 4, 'start': 226, 'machine': 1, 'duration': 63}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 2}, {'task': 1, 'start': 2, 'machine': 3, 'duration': 64}, {'task': 2, 'start': 66, 'machine': 4, 'duration': 52}, {'task': 3, 'start': 149, 'machine': 5, 'duration': 8}, {'task': 4, 'start': 172, 'machine': 1, 'duration': 54}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 8, 'machine': 4, 'duration': 39}, {'task': 1, 'start': 47, 'machine': 2, 'duration': 70}, {'task': 2, 'start': 157, 'machine': 5, 'duration': 5}, {'task': 3, 'start': 259, 'machine': 3, 'duration': 27}, {'task': 4, 'start': 289, 'machine': 1, 'duration': 54}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 89, 'machine': 1, 'duration': 83}, {'task': 1, 'start': 172, 'machine': 4, 'duration': 26}, {'task': 2, 'start': 212, 'machine': 3, 'duration': 47}, {'task': 3, 'start': 259, 'machine': 5, 'duration': 29}, {'task': 4, 'start': 288, 'machine': 2, 'duration': 68}]}]",27,json,1 |
| JSP,JSP,"Someone in charge of the assembly line needs to decide the order bouquets visit the stations β each bouquet has a fixed chain of steps and each step has a fixed duration at a particular table or wrapping bench. Since each workstation can serve only one bouquet at a time and steps canβt be rearranged within a bouquet, the goal is to get all bouquets finished quickly; measure success by the time when the final bouquet is ready, and try to make that time as early as possible. The full list of tasks, stations and times appears below. |
|
|
| They are listed here: 7 bouquets, 5 stations, bouquet ids J1, J2, J3, J4, J5, J6, J7, and station ids A, B, C, D, E. |
|
|
| | bouquet_id | step_index | required_station_id | step_duration | |
| |---|---|---|---| |
| | J1 | 0 | D | 1 | |
| | J1 | 1 | C | 8 | |
| | J1 | 2 | E | 14 | |
| | J1 | 3 | B | 65 | |
| | J1 | 4 | A | 76 | |
| | J2 | 0 | B | 11 | |
| | J2 | 1 | A | 25 | |
| | J2 | 2 | D | 84 | |
| | J2 | 3 | E | 87 | |
| | J2 | 4 | C | 49 | |
| | J3 | 0 | C | 46 | |
| | J3 | 1 | A | 84 | |
| | J3 | 2 | D | 34 | |
| | J3 | 3 | B | 39 | |
| | J3 | 4 | E | 69 | |
| | J4 | 0 | C | 55 | |
| | J4 | 1 | B | 31 | |
| | J4 | 2 | D | 53 | |
| | J4 | 3 | A | 46 | |
| | J4 | 4 | E | 61 | |
| | J5 | 0 | D | 80 | |
| | J5 | 1 | A | 39 | |
| | J5 | 2 | B | 64 | |
| | J5 | 3 | C | 20 | |
| | J5 | 4 | E | 39 | |
| | J6 | 0 | E | 36 | |
| | J6 | 1 | C | 35 | |
| | J6 | 2 | B | 12 | |
| | J6 | 3 | A | 70 | |
| | J6 | 4 | D | 38 | |
| | J7 | 0 | B | 81 | |
| | J7 | 1 | E | 59 | |
| | J7 | 2 | D | 11 | |
| | J7 | 3 | C | 28 | |
| | J7 | 4 | A | 79 | |
|
|
| They should sequence these ordered steps to minimize the time when the final bouquet is ready. |
|
|
| Oh, and if you want to give me a schedule or get one back, it's easiest if we stick to a tiny JSON layout like this: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of that as a simple form: ""solution"" holds a list of bouquets (jobs). Each bouquet entry names the job id and a list of its steps; each step lists which task in the sequence it is, when that step should start, which station (machine) it uses, and how long it takes. That block is just the shape I expect β a sketch, not the finished schedule. |
|
|
| Please make sure to use the exact identifiers from the instance input β don't rename them or invent new labels. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 5, 'nr_jobs': 7, 'jobs': [[[3, 1], [2, 8], [4, 14], [1, 65], [0, 76]], [[1, 11], [0, 25], [3, 84], [4, 87], [2, 49]], [[2, 46], [0, 84], [3, 34], [1, 39], [4, 69]], [[2, 55], [1, 31], [3, 53], [0, 46], [4, 61]], [[3, 80], [0, 39], [1, 64], [2, 20], [4, 39]], [[4, 36], [2, 35], [1, 12], [0, 70], [3, 38]], [[1, 81], [4, 59], [3, 11], [2, 28], [0, 79]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 46, 'machine': 2, 'duration': 8}, {'task': 2, 'start': 54, 'machine': 4, 'duration': 14}, {'task': 3, 'start': 104, 'machine': 1, 'duration': 65}, {'task': 4, 'start': 239, 'machine': 0, 'duration': 76}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 11}, {'task': 1, 'start': 11, 'machine': 0, 'duration': 25}, {'task': 2, 'start': 81, 'machine': 3, 'duration': 84}, {'task': 3, 'start': 165, 'machine': 4, 'duration': 87}, {'task': 4, 'start': 252, 'machine': 2, 'duration': 49}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 46}, {'task': 1, 'start': 46, 'machine': 0, 'duration': 84}, {'task': 2, 'start': 165, 'machine': 3, 'duration': 34}, {'task': 3, 'start': 200, 'machine': 1, 'duration': 39}, {'task': 4, 'start': 252, 'machine': 4, 'duration': 69}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 89, 'machine': 2, 'duration': 55}, {'task': 1, 'start': 169, 'machine': 1, 'duration': 31}, {'task': 2, 'start': 238, 'machine': 3, 'duration': 53}, {'task': 3, 'start': 315, 'machine': 0, 'duration': 46}, {'task': 4, 'start': 362, 'machine': 4, 'duration': 61}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 1, 'machine': 3, 'duration': 80}, {'task': 1, 'start': 200, 'machine': 0, 'duration': 39}, {'task': 2, 'start': 239, 'machine': 1, 'duration': 64}, {'task': 3, 'start': 303, 'machine': 2, 'duration': 20}, {'task': 4, 'start': 323, 'machine': 4, 'duration': 39}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 36}, {'task': 1, 'start': 54, 'machine': 2, 'duration': 35}, {'task': 2, 'start': 92, 'machine': 1, 'duration': 12}, {'task': 3, 'start': 130, 'machine': 0, 'duration': 70}, {'task': 4, 'start': 200, 'machine': 3, 'duration': 38}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 11, 'machine': 1, 'duration': 81}, {'task': 1, 'start': 92, 'machine': 4, 'duration': 59}, {'task': 2, 'start': 291, 'machine': 3, 'duration': 11}, {'task': 3, 'start': 323, 'machine': 2, 'duration': 28}, {'task': 4, 'start': 361, 'machine': 0, 'duration': 79}]}]",440.0,"{'problem_type': 'JSP', 'nr_jobs': 7, 'nr_machines': 5, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7'], 'machines': ['A', 'B', 'C', 'D', 'E'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'D', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'C', 'duration': 8}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'E', 'duration': 14}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 'B', 'duration': 65}, {'job_id': 'J1', 'task_id': 4, 'machine_id': 'A', 'duration': 76}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'B', 'duration': 11}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'A', 'duration': 25}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'D', 'duration': 84}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 'E', 'duration': 87}, {'job_id': 'J2', 'task_id': 4, 'machine_id': 'C', 'duration': 49}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'C', 'duration': 46}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'A', 'duration': 84}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'D', 'duration': 34}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 'B', 'duration': 39}, {'job_id': 'J3', 'task_id': 4, 'machine_id': 'E', 'duration': 69}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'C', 'duration': 55}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'B', 'duration': 31}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'D', 'duration': 53}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 'A', 'duration': 46}, {'job_id': 'J4', 'task_id': 4, 'machine_id': 'E', 'duration': 61}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'D', 'duration': 80}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'A', 'duration': 39}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'B', 'duration': 64}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 'C', 'duration': 20}, {'job_id': 'J5', 'task_id': 4, 'machine_id': 'E', 'duration': 39}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'E', 'duration': 36}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'C', 'duration': 35}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'B', 'duration': 12}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 'A', 'duration': 70}, {'job_id': 'J6', 'task_id': 4, 'machine_id': 'D', 'duration': 38}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 'B', 'duration': 81}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 'E', 'duration': 59}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 'D', 'duration': 11}, {'job_id': 'J7', 'task_id': 3, 'machine_id': 'C', 'duration': 28}, {'job_id': 'J7', 'task_id': 4, 'machine_id': 'A', 'duration': 79}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 'D', 'duration': 1}, {'task': 1, 'start': 46, 'machine': 'C', 'duration': 8}, {'task': 2, 'start': 54, 'machine': 'E', 'duration': 14}, {'task': 3, 'start': 104, 'machine': 'B', 'duration': 65}, {'task': 4, 'start': 239, 'machine': 'A', 'duration': 76}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 11}, {'task': 1, 'start': 11, 'machine': 'A', 'duration': 25}, {'task': 2, 'start': 81, 'machine': 'D', 'duration': 84}, {'task': 3, 'start': 165, 'machine': 'E', 'duration': 87}, {'task': 4, 'start': 252, 'machine': 'C', 'duration': 49}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 46}, {'task': 1, 'start': 46, 'machine': 'A', 'duration': 84}, {'task': 2, 'start': 165, 'machine': 'D', 'duration': 34}, {'task': 3, 'start': 200, 'machine': 'B', 'duration': 39}, {'task': 4, 'start': 252, 'machine': 'E', 'duration': 69}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 89, 'machine': 'C', 'duration': 55}, {'task': 1, 'start': 169, 'machine': 'B', 'duration': 31}, {'task': 2, 'start': 238, 'machine': 'D', 'duration': 53}, {'task': 3, 'start': 315, 'machine': 'A', 'duration': 46}, {'task': 4, 'start': 362, 'machine': 'E', 'duration': 61}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 1, 'machine': 'D', 'duration': 80}, {'task': 1, 'start': 200, 'machine': 'A', 'duration': 39}, {'task': 2, 'start': 239, 'machine': 'B', 'duration': 64}, {'task': 3, 'start': 303, 'machine': 'C', 'duration': 20}, {'task': 4, 'start': 323, 'machine': 'E', 'duration': 39}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 'E', 'duration': 36}, {'task': 1, 'start': 54, 'machine': 'C', 'duration': 35}, {'task': 2, 'start': 92, 'machine': 'B', 'duration': 12}, {'task': 3, 'start': 130, 'machine': 'A', 'duration': 70}, {'task': 4, 'start': 200, 'machine': 'D', 'duration': 38}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 11, 'machine': 'B', 'duration': 81}, {'task': 1, 'start': 92, 'machine': 'E', 'duration': 59}, {'task': 2, 'start': 291, 'machine': 'D', 'duration': 11}, {'task': 3, 'start': 323, 'machine': 'C', 'duration': 28}, {'task': 4, 'start': 361, 'machine': 'A', 'duration': 79}]}]",28,markdown_table,names |
| JSP,JSP,"There's this familiar scramble before air: a stack of segments, each with its own line of work to pass through, known durations for those jobs, and a handful of rooms that can only do one thing at a time. The decision is how to funnel the segments through those rooms so the final show can be handed off as early as possible. The measure that matters is the time on the clock when the final segment is done β the earlier that finish time, the better the plan. Every segment must complete every step in the given sequence; nothing gets left out or duplicated. The specific rundown and timings are listed below. |
|
|
| There are 6 segments to route through 4 rooms; the segment identifiers are J1, J2, J3, J4, J5, J6 and the room identifiers are A, B, C, D. |
|
|
| | segment_id | step_index | room_id | processing_time | |
| |---|---|---|---| |
| | J1 | 0 | D | 1 | |
| | J1 | 1 | C | 21 | |
| | J1 | 2 | B | 89 | |
| | J1 | 3 | A | 11 | |
| | J2 | 0 | A | 30 | |
| | J2 | 1 | B | 33 | |
| | J2 | 2 | D | 30 | |
| | J2 | 3 | C | 52 | |
| | J3 | 0 | D | 55 | |
| | J3 | 1 | B | 43 | |
| | J3 | 2 | A | 84 | |
| | J3 | 3 | C | 36 | |
| | J4 | 0 | A | 17 | |
| | J4 | 1 | D | 42 | |
| | J4 | 2 | C | 74 | |
| | J4 | 3 | B | 8 | |
| | J5 | 0 | B | 98 | |
| | J5 | 1 | C | 54 | |
| | J5 | 2 | A | 84 | |
| | J5 | 3 | D | 68 | |
| | J6 | 0 | D | 23 | |
| | J6 | 1 | C | 8 | |
| | J6 | 2 | B | 23 | |
| | J6 | 3 | A | 13 | |
|
|
| Keep the plan aimed at getting the final segment handed off as early as possible. |
|
|
| Oh, and a handy way to send the plan back is as a little JSON sketch β nothing fancy, just the shape I expect to see: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of that as a simple form: ""solution"" holds a list of jobs, each job entry names the job and then lists its tasks; for each task you provide the task index (which step it is), the start time, the machine it runs on, and how long it takes. It's just the expected shape β not the actual filled-in answer. |
|
|
| Please use the identifiers exactly as they appear in the instance input β do not rename them or invent new ones. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 4, 'nr_jobs': 6, 'jobs': [[[3, 1], [2, 21], [1, 89], [0, 11]], [[0, 30], [1, 33], [3, 30], [2, 52]], [[3, 55], [1, 43], [0, 84], [2, 36]], [[0, 17], [3, 42], [2, 74], [1, 8]], [[1, 98], [2, 54], [0, 84], [3, 68]], [[3, 23], [2, 8], [1, 23], [0, 13]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 97, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 152, 'machine': 2, 'duration': 21}, {'task': 2, 'start': 174, 'machine': 1, 'duration': 89}, {'task': 3, 'start': 320, 'machine': 0, 'duration': 11}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 30}, {'task': 1, 'start': 141, 'machine': 1, 'duration': 33}, {'task': 2, 'start': 174, 'machine': 3, 'duration': 30}, {'task': 3, 'start': 247, 'machine': 2, 'duration': 52}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 55}, {'task': 1, 'start': 98, 'machine': 1, 'duration': 43}, {'task': 2, 'start': 236, 'machine': 0, 'duration': 84}, {'task': 3, 'start': 320, 'machine': 2, 'duration': 36}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 30, 'machine': 0, 'duration': 17}, {'task': 1, 'start': 55, 'machine': 3, 'duration': 42}, {'task': 2, 'start': 173, 'machine': 2, 'duration': 74}, {'task': 3, 'start': 263, 'machine': 1, 'duration': 8}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 98}, {'task': 1, 'start': 98, 'machine': 2, 'duration': 54}, {'task': 2, 'start': 152, 'machine': 0, 'duration': 84}, {'task': 3, 'start': 236, 'machine': 3, 'duration': 68}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 98, 'machine': 3, 'duration': 23}, {'task': 1, 'start': 299, 'machine': 2, 'duration': 8}, {'task': 2, 'start': 307, 'machine': 1, 'duration': 23}, {'task': 3, 'start': 331, 'machine': 0, 'duration': 13}]}]",356.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 4, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': ['A', 'B', 'C', 'D'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'D', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'C', 'duration': 21}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'B', 'duration': 89}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 'A', 'duration': 11}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'A', 'duration': 30}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'B', 'duration': 33}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'D', 'duration': 30}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 'C', 'duration': 52}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'D', 'duration': 55}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'B', 'duration': 43}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'A', 'duration': 84}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 'C', 'duration': 36}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'A', 'duration': 17}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'D', 'duration': 42}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'C', 'duration': 74}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 'B', 'duration': 8}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'B', 'duration': 98}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'C', 'duration': 54}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'A', 'duration': 84}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 'D', 'duration': 68}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'D', 'duration': 23}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'C', 'duration': 8}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'B', 'duration': 23}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 'A', 'duration': 13}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 97, 'machine': 'D', 'duration': 1}, {'task': 1, 'start': 152, 'machine': 'C', 'duration': 21}, {'task': 2, 'start': 174, 'machine': 'B', 'duration': 89}, {'task': 3, 'start': 320, 'machine': 'A', 'duration': 11}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 'A', 'duration': 30}, {'task': 1, 'start': 141, 'machine': 'B', 'duration': 33}, {'task': 2, 'start': 174, 'machine': 'D', 'duration': 30}, {'task': 3, 'start': 247, 'machine': 'C', 'duration': 52}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 'D', 'duration': 55}, {'task': 1, 'start': 98, 'machine': 'B', 'duration': 43}, {'task': 2, 'start': 236, 'machine': 'A', 'duration': 84}, {'task': 3, 'start': 320, 'machine': 'C', 'duration': 36}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 30, 'machine': 'A', 'duration': 17}, {'task': 1, 'start': 55, 'machine': 'D', 'duration': 42}, {'task': 2, 'start': 173, 'machine': 'C', 'duration': 74}, {'task': 3, 'start': 263, 'machine': 'B', 'duration': 8}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 98}, {'task': 1, 'start': 98, 'machine': 'C', 'duration': 54}, {'task': 2, 'start': 152, 'machine': 'A', 'duration': 84}, {'task': 3, 'start': 236, 'machine': 'D', 'duration': 68}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 98, 'machine': 'D', 'duration': 23}, {'task': 1, 'start': 299, 'machine': 'C', 'duration': 8}, {'task': 2, 'start': 307, 'machine': 'B', 'duration': 23}, {'task': 3, 'start': 331, 'machine': 'A', 'duration': 13}]}]",29,markdown_table,names |
| JSP,JSP,"I run the little packaging line and need to figure out the best way to send every batch out fast. Each batch has a fixed string of steps β fill, cap, label, pack β and each step always takes the same amount of time. The choices are about who goes where and when on the different machines, but the trick is that each machine can only handle one thing at once and every batch must go through its steps in order, never skipping or repeating a step. A better plan is simply the one that gets the very last batch out sooner β measure that by looking at when each batch finishes and taking the latest finish time; that latest time is what to make as small as possible. The exact line layout, machine list and times are shown below. |
|
|
| { |
| ""nr_batches"": 6, |
| ""nr_stations"": 5, |
| ""batch_ids"": [ |
| ""J1"", |
| ""J2"", |
| ""J3"", |
| ""J4"", |
| ""J5"", |
| ""J6"" |
| ], |
| ""station_ids"": [ |
| 1, |
| 2, |
| 3, |
| 4, |
| 5 |
| ], |
| ""tasks"": [ |
| { |
| ""batch_id"": ""J1"", |
| ""step_index"": 0, |
| ""station_id"": 2, |
| ""step_duration"": 1 |
| }, |
| { |
| ""batch_id"": ""J1"", |
| ""step_index"": 1, |
| ""station_id"": 5, |
| ""step_duration"": 34 |
| }, |
| { |
| ""batch_id"": ""J1"", |
| ""step_index"": 2, |
| ""station_id"": 4, |
| ""step_duration"": 65 |
| }, |
| { |
| ""batch_id"": ""J1"", |
| ""step_index"": 3, |
| ""station_id"": 3, |
| ""step_duration"": 56 |
| }, |
| { |
| ""batch_id"": ""J1"", |
| ""step_index"": 4, |
| ""station_id"": 1, |
| ""step_duration"": 82 |
| }, |
| { |
| ""batch_id"": ""J2"", |
| ""step_index"": 0, |
| ""station_id"": 4, |
| ""step_duration"": 55 |
| }, |
| { |
| ""batch_id"": ""J2"", |
| ""step_index"": 1, |
| ""station_id"": 2, |
| ""step_duration"": 34 |
| }, |
| { |
| ""batch_id"": ""J2"", |
| ""step_index"": 2, |
| ""station_id"": 5, |
| ""step_duration"": 20 |
| }, |
| { |
| ""batch_id"": ""J2"", |
| ""step_index"": 3, |
| ""station_id"": 1, |
| ""step_duration"": 23 |
| }, |
| { |
| ""batch_id"": ""J2"", |
| ""step_index"": 4, |
| ""station_id"": 3, |
| ""step_duration"": 36 |
| }, |
| { |
| ""batch_id"": ""J3"", |
| ""step_index"": 0, |
| ""station_id"": 4, |
| ""step_duration"": 23 |
| }, |
| { |
| ""batch_id"": ""J3"", |
| ""step_index"": 1, |
| ""station_id"": 3, |
| ""step_duration"": 87 |
| }, |
| { |
| ""batch_id"": ""J3"", |
| ""step_index"": 2, |
| ""station_id"": 5, |
| ""step_duration"": 99 |
| }, |
| { |
| ""batch_id"": ""J3"", |
| ""step_index"": 3, |
| ""station_id"": 2, |
| ""step_duration"": 46 |
| }, |
| { |
| ""batch_id"": ""J3"", |
| ""step_index"": 4, |
| ""station_id"": 1, |
| ""step_duration"": 79 |
| }, |
| { |
| ""batch_id"": ""J4"", |
| ""step_index"": 0, |
| ""station_id"": 5, |
| ""step_duration"": 61 |
| }, |
| { |
| ""batch_id"": ""J4"", |
| ""step_index"": 1, |
| ""station_id"": 3, |
| ""step_duration"": 65 |
| }, |
| { |
| ""batch_id"": ""J4"", |
| ""step_index"": 2, |
| ""station_id"": 2, |
| ""step_duration"": 55 |
| }, |
| { |
| ""batch_id"": ""J4"", |
| ""step_index"": 3, |
| ""station_id"": 1, |
| ""step_duration"": 23 |
| }, |
| { |
| ""batch_id"": ""J4"", |
| ""step_index"": 4, |
| ""station_id"": 4, |
| ""step_duration"": 74 |
| }, |
| { |
| ""batch_id"": ""J5"", |
| ""step_index"": 0, |
| ""station_id"": 4, |
| ""step_duration"": 64 |
| }, |
| { |
| ""batch_id"": ""J5"", |
| ""step_index"": 1, |
| ""station_id"": 5, |
| ""step_duration"": 76 |
| }, |
| { |
| ""batch_id"": ""J5"", |
| ""step_index"": 2, |
| ""station_id"": 2, |
| ""step_duration"": 81 |
| }, |
| { |
| ""batch_id"": ""J5"", |
| ""step_index"": 3, |
| ""station_id"": 3, |
| ""step_duration"": 7 |
| }, |
| { |
| ""batch_id"": ""J5"", |
| ""step_index"": 4, |
| ""station_id"": 1, |
| ""step_duration"": 8 |
| }, |
| { |
| ""batch_id"": ""J6"", |
| ""step_index"": 0, |
| ""station_id"": 5, |
| ""step_duration"": 41 |
| }, |
| { |
| ""batch_id"": ""J6"", |
| ""step_index"": 1, |
| ""station_id"": 1, |
| ""step_duration"": 53 |
| }, |
| { |
| ""batch_id"": ""J6"", |
| ""step_index"": 2, |
| ""station_id"": 4, |
| ""step_duration"": 43 |
| }, |
| { |
| ""batch_id"": ""J6"", |
| ""step_index"": 3, |
| ""station_id"": 2, |
| ""step_duration"": 54 |
| }, |
| { |
| ""batch_id"": ""J6"", |
| ""step_index"": 4, |
| ""station_id"": 3, |
| ""step_duration"": 78 |
| } |
| ] |
| } |
|
|
| Also, when you send the actual plan back, please use this simple JSON layout so I can read the schedule easily: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it like a little form: the top-level ""solution"" is a list of batches (jobs). Each batch lists its tasks in order, and for each task you give the task index (which step it is), the time it starts, what machine it runs on, and how long it takes. Super casual β just fill in the fields for each job. |
|
|
| This JSON is only a sketch of the shape I expect, not the actual answer. Please make sure you use the exact identifiers from the instance input β do not rename them or invent new labels. |
|
|
| for example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 5, 'nr_jobs': 6, 'jobs': [[[1, 1], [4, 34], [3, 65], [2, 56], [0, 82]], [[3, 55], [1, 34], [4, 20], [0, 23], [2, 36]], [[3, 23], [2, 87], [4, 99], [1, 46], [0, 79]], [[4, 61], [2, 65], [1, 55], [0, 23], [3, 74]], [[3, 64], [4, 76], [1, 81], [2, 7], [0, 8]], [[4, 41], [0, 53], [3, 43], [1, 54], [2, 78]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 102, 'machine': 4, 'duration': 34}, {'task': 2, 'start': 137, 'machine': 3, 'duration': 65}, {'task': 3, 'start': 202, 'machine': 2, 'duration': 56}, {'task': 4, 'start': 258, 'machine': 0, 'duration': 82}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 23, 'machine': 3, 'duration': 55}, {'task': 1, 'start': 78, 'machine': 1, 'duration': 34}, {'task': 2, 'start': 136, 'machine': 4, 'duration': 20}, {'task': 3, 'start': 156, 'machine': 0, 'duration': 23}, {'task': 4, 'start': 362, 'machine': 2, 'duration': 36}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 23}, {'task': 1, 'start': 23, 'machine': 2, 'duration': 87}, {'task': 2, 'start': 156, 'machine': 4, 'duration': 99}, {'task': 3, 'start': 284, 'machine': 1, 'duration': 46}, {'task': 4, 'start': 346, 'machine': 0, 'duration': 79}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 41, 'machine': 4, 'duration': 61}, {'task': 1, 'start': 110, 'machine': 2, 'duration': 65}, {'task': 2, 'start': 175, 'machine': 1, 'duration': 55}, {'task': 3, 'start': 230, 'machine': 0, 'duration': 23}, {'task': 4, 'start': 266, 'machine': 3, 'duration': 74}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 202, 'machine': 3, 'duration': 64}, {'task': 1, 'start': 266, 'machine': 4, 'duration': 76}, {'task': 2, 'start': 342, 'machine': 1, 'duration': 81}, {'task': 3, 'start': 423, 'machine': 2, 'duration': 7}, {'task': 4, 'start': 430, 'machine': 0, 'duration': 8}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 41}, {'task': 1, 'start': 41, 'machine': 0, 'duration': 53}, {'task': 2, 'start': 94, 'machine': 3, 'duration': 43}, {'task': 3, 'start': 230, 'machine': 1, 'duration': 54}, {'task': 4, 'start': 284, 'machine': 2, 'duration': 78}]}]",438.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 5, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': [1, 2, 3, 4, 5], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 2, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 5, 'duration': 34}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 4, 'duration': 65}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 3, 'duration': 56}, {'job_id': 'J1', 'task_id': 4, 'machine_id': 1, 'duration': 82}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 4, 'duration': 55}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 2, 'duration': 34}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 5, 'duration': 20}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 1, 'duration': 23}, {'job_id': 'J2', 'task_id': 4, 'machine_id': 3, 'duration': 36}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 4, 'duration': 23}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 3, 'duration': 87}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 5, 'duration': 99}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 2, 'duration': 46}, {'job_id': 'J3', 'task_id': 4, 'machine_id': 1, 'duration': 79}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 5, 'duration': 61}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 3, 'duration': 65}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 2, 'duration': 55}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 1, 'duration': 23}, {'job_id': 'J4', 'task_id': 4, 'machine_id': 4, 'duration': 74}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 4, 'duration': 64}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 5, 'duration': 76}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 2, 'duration': 81}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 3, 'duration': 7}, {'job_id': 'J5', 'task_id': 4, 'machine_id': 1, 'duration': 8}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 5, 'duration': 41}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 1, 'duration': 53}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 4, 'duration': 43}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 2, 'duration': 54}, {'job_id': 'J6', 'task_id': 4, 'machine_id': 3, 'duration': 78}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 102, 'machine': 5, 'duration': 34}, {'task': 2, 'start': 137, 'machine': 4, 'duration': 65}, {'task': 3, 'start': 202, 'machine': 3, 'duration': 56}, {'task': 4, 'start': 258, 'machine': 1, 'duration': 82}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 23, 'machine': 4, 'duration': 55}, {'task': 1, 'start': 78, 'machine': 2, 'duration': 34}, {'task': 2, 'start': 136, 'machine': 5, 'duration': 20}, {'task': 3, 'start': 156, 'machine': 1, 'duration': 23}, {'task': 4, 'start': 362, 'machine': 3, 'duration': 36}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 23}, {'task': 1, 'start': 23, 'machine': 3, 'duration': 87}, {'task': 2, 'start': 156, 'machine': 5, 'duration': 99}, {'task': 3, 'start': 284, 'machine': 2, 'duration': 46}, {'task': 4, 'start': 346, 'machine': 1, 'duration': 79}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 41, 'machine': 5, 'duration': 61}, {'task': 1, 'start': 110, 'machine': 3, 'duration': 65}, {'task': 2, 'start': 175, 'machine': 2, 'duration': 55}, {'task': 3, 'start': 230, 'machine': 1, 'duration': 23}, {'task': 4, 'start': 266, 'machine': 4, 'duration': 74}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 202, 'machine': 4, 'duration': 64}, {'task': 1, 'start': 266, 'machine': 5, 'duration': 76}, {'task': 2, 'start': 342, 'machine': 2, 'duration': 81}, {'task': 3, 'start': 423, 'machine': 3, 'duration': 7}, {'task': 4, 'start': 430, 'machine': 1, 'duration': 8}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 5, 'duration': 41}, {'task': 1, 'start': 41, 'machine': 1, 'duration': 53}, {'task': 2, 'start': 94, 'machine': 4, 'duration': 43}, {'task': 3, 'start': 230, 'machine': 2, 'duration': 54}, {'task': 4, 'start': 284, 'machine': 3, 'duration': 78}]}]",30,json,1 |
| JSP,JSP,"Recently the coordinator was tasked with arranging all class sessions so each class follows its list of sessions in order, every session runs for a fixed period, and no room gets two things at the same time. The aim is practical and simple: make the time when the final session across the school ends as early as possible β for each plan, check when each class ends and take the latest of those times. No session can be left out or duplicated; specific session lengths and room assignments are listed below. |
|
|
| { |
| ""total_classes"": 7, |
| ""total_rooms"": 5, |
| ""class_identifiers"": [ |
| ""J1"", |
| ""J2"", |
| ""J3"", |
| ""J4"", |
| ""J5"", |
| ""J6"", |
| ""J7"" |
| ], |
| ""room_identifiers"": [ |
| ""A"", |
| ""B"", |
| ""C"", |
| ""D"", |
| ""E"" |
| ], |
| ""tasks"": [ |
| { |
| ""class_id"": ""J1"", |
| ""session_index"": 0, |
| ""room_id"": ""E"", |
| ""session_length"": 1 |
| }, |
| { |
| ""class_id"": ""J1"", |
| ""session_index"": 1, |
| ""room_id"": ""C"", |
| ""session_length"": 47 |
| }, |
| { |
| ""class_id"": ""J1"", |
| ""session_index"": 2, |
| ""room_id"": ""B"", |
| ""session_length"": 40 |
| }, |
| { |
| ""class_id"": ""J1"", |
| ""session_index"": 3, |
| ""room_id"": ""D"", |
| ""session_length"": 3 |
| }, |
| { |
| ""class_id"": ""J1"", |
| ""session_index"": 4, |
| ""room_id"": ""A"", |
| ""session_length"": 36 |
| }, |
| { |
| ""class_id"": ""J2"", |
| ""session_index"": 0, |
| ""room_id"": ""E"", |
| ""session_length"": 76 |
| }, |
| { |
| ""class_id"": ""J2"", |
| ""session_index"": 1, |
| ""room_id"": ""D"", |
| ""session_length"": 39 |
| }, |
| { |
| ""class_id"": ""J2"", |
| ""session_index"": 2, |
| ""room_id"": ""C"", |
| ""session_length"": 87 |
| }, |
| { |
| ""class_id"": ""J2"", |
| ""session_index"": 3, |
| ""room_id"": ""B"", |
| ""session_length"": 91 |
| }, |
| { |
| ""class_id"": ""J2"", |
| ""session_index"": 4, |
| ""room_id"": ""A"", |
| ""session_length"": 30 |
| }, |
| { |
| ""class_id"": ""J3"", |
| ""session_index"": 0, |
| ""room_id"": ""D"", |
| ""session_length"": 61 |
| }, |
| { |
| ""class_id"": ""J3"", |
| ""session_index"": 1, |
| ""room_id"": ""C"", |
| ""session_length"": 40 |
| }, |
| { |
| ""class_id"": ""J3"", |
| ""session_index"": 2, |
| ""room_id"": ""B"", |
| ""session_length"": 83 |
| }, |
| { |
| ""class_id"": ""J3"", |
| ""session_index"": 3, |
| ""room_id"": ""A"", |
| ""session_length"": 49 |
| }, |
| { |
| ""class_id"": ""J3"", |
| ""session_index"": 4, |
| ""room_id"": ""E"", |
| ""session_length"": 85 |
| }, |
| { |
| ""class_id"": ""J4"", |
| ""session_index"": 0, |
| ""room_id"": ""E"", |
| ""session_length"": 14 |
| }, |
| { |
| ""class_id"": ""J4"", |
| ""session_index"": 1, |
| ""room_id"": ""D"", |
| ""session_length"": 32 |
| }, |
| { |
| ""class_id"": ""J4"", |
| ""session_index"": 2, |
| ""room_id"": ""B"", |
| ""session_length"": 55 |
| }, |
| { |
| ""class_id"": ""J4"", |
| ""session_index"": 3, |
| ""room_id"": ""A"", |
| ""session_length"": 60 |
| }, |
| { |
| ""class_id"": ""J4"", |
| ""session_index"": 4, |
| ""room_id"": ""C"", |
| ""session_length"": 81 |
| }, |
| { |
| ""class_id"": ""J5"", |
| ""session_index"": 0, |
| ""room_id"": ""B"", |
| ""session_length"": 6 |
| }, |
| { |
| ""class_id"": ""J5"", |
| ""session_index"": 1, |
| ""room_id"": ""A"", |
| ""session_length"": 45 |
| }, |
| { |
| ""class_id"": ""J5"", |
| ""session_index"": 2, |
| ""room_id"": ""D"", |
| ""session_length"": 41 |
| }, |
| { |
| ""class_id"": ""J5"", |
| ""session_index"": 3, |
| ""room_id"": ""C"", |
| ""session_length"": 99 |
| }, |
| { |
| ""class_id"": ""J5"", |
| ""session_index"": 4, |
| ""room_id"": ""E"", |
| ""session_length"": 92 |
| }, |
| { |
| ""class_id"": ""J6"", |
| ""session_index"": 0, |
| ""room_id"": ""B"", |
| ""session_length"": 93 |
| }, |
| { |
| ""class_id"": ""J6"", |
| ""session_index"": 1, |
| ""room_id"": ""C"", |
| ""session_length"": 62 |
| }, |
| { |
| ""class_id"": ""J6"", |
| ""session_index"": 2, |
| ""room_id"": ""D"", |
| ""session_length"": 9 |
| }, |
| { |
| ""class_id"": ""J6"", |
| ""session_index"": 3, |
| ""room_id"": ""A"", |
| ""session_length"": 95 |
| }, |
| { |
| ""class_id"": ""J6"", |
| ""session_index"": 4, |
| ""room_id"": ""E"", |
| ""session_length"": 49 |
| }, |
| { |
| ""class_id"": ""J7"", |
| ""session_index"": 0, |
| ""room_id"": ""B"", |
| ""session_length"": 54 |
| }, |
| { |
| ""class_id"": ""J7"", |
| ""session_index"": 1, |
| ""room_id"": ""E"", |
| ""session_length"": 87 |
| }, |
| { |
| ""class_id"": ""J7"", |
| ""session_index"": 2, |
| ""room_id"": ""D"", |
| ""session_length"": 89 |
| }, |
| { |
| ""class_id"": ""J7"", |
| ""session_index"": 3, |
| ""room_id"": ""A"", |
| ""session_length"": 42 |
| }, |
| { |
| ""class_id"": ""J7"", |
| ""session_index"": 4, |
| ""room_id"": ""C"", |
| ""session_length"": 99 |
| } |
| ] |
| } |
|
|
| Also, when you send back a plan, please use this JSON layout so it's easy to read and check: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <class_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <room_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| This is just a simple sketch of the shape I expect. Think of it like a form: ""solution"" holds a list of classes; each entry's job is the class identifier, and its tasks list describes each session in order. For each session you give the task index (which session number it is), the start time, which room (machine) it's in, and how long it lasts. The JSON above is an example structure only β not the actual schedule. |
|
|
| Please make sure to use the identifiers exactly as they appear in the instance input β do not rename them or invent new ones. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 5, 'nr_jobs': 7, 'jobs': [[[4, 1], [2, 47], [1, 40], [3, 3], [0, 36]], [[4, 76], [3, 39], [2, 87], [1, 91], [0, 30]], [[3, 61], [2, 40], [1, 83], [0, 49], [4, 85]], [[4, 14], [3, 32], [1, 55], [0, 60], [2, 81]], [[1, 6], [0, 45], [3, 41], [2, 99], [4, 92]], [[1, 93], [2, 62], [3, 9], [0, 95], [4, 49]], [[1, 54], [4, 87], [3, 89], [0, 42], [2, 99]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 1}, {'task': 1, 'start': 1, 'machine': 2, 'duration': 47}, {'task': 2, 'start': 291, 'machine': 1, 'duration': 40}, {'task': 3, 'start': 331, 'machine': 3, 'duration': 3}, {'task': 4, 'start': 418, 'machine': 0, 'duration': 36}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 1, 'machine': 4, 'duration': 76}, {'task': 1, 'start': 77, 'machine': 3, 'duration': 39}, {'task': 2, 'start': 163, 'machine': 2, 'duration': 87}, {'task': 3, 'start': 331, 'machine': 1, 'duration': 91}, {'task': 4, 'start': 454, 'machine': 0, 'duration': 30}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 61}, {'task': 1, 'start': 61, 'machine': 2, 'duration': 40}, {'task': 2, 'start': 208, 'machine': 1, 'duration': 83}, {'task': 3, 'start': 327, 'machine': 0, 'duration': 49}, {'task': 4, 'start': 441, 'machine': 4, 'duration': 85}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 77, 'machine': 4, 'duration': 14}, {'task': 1, 'start': 116, 'machine': 3, 'duration': 32}, {'task': 2, 'start': 153, 'machine': 1, 'duration': 55}, {'task': 3, 'start': 267, 'machine': 0, 'duration': 60}, {'task': 4, 'start': 349, 'machine': 2, 'duration': 81}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 6}, {'task': 1, 'start': 6, 'machine': 0, 'duration': 45}, {'task': 2, 'start': 172, 'machine': 3, 'duration': 41}, {'task': 3, 'start': 250, 'machine': 2, 'duration': 99}, {'task': 4, 'start': 349, 'machine': 4, 'duration': 92}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 6, 'machine': 1, 'duration': 93}, {'task': 1, 'start': 101, 'machine': 2, 'duration': 62}, {'task': 2, 'start': 163, 'machine': 3, 'duration': 9}, {'task': 3, 'start': 172, 'machine': 0, 'duration': 95}, {'task': 4, 'start': 267, 'machine': 4, 'duration': 49}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 99, 'machine': 1, 'duration': 54}, {'task': 1, 'start': 153, 'machine': 4, 'duration': 87}, {'task': 2, 'start': 240, 'machine': 3, 'duration': 89}, {'task': 3, 'start': 376, 'machine': 0, 'duration': 42}, {'task': 4, 'start': 430, 'machine': 2, 'duration': 99}]}]",529.0,"{'problem_type': 'JSP', 'nr_jobs': 7, 'nr_machines': 5, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7'], 'machines': ['A', 'B', 'C', 'D', 'E'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'E', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'C', 'duration': 47}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'B', 'duration': 40}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 'D', 'duration': 3}, {'job_id': 'J1', 'task_id': 4, 'machine_id': 'A', 'duration': 36}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'E', 'duration': 76}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'D', 'duration': 39}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'C', 'duration': 87}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 'B', 'duration': 91}, {'job_id': 'J2', 'task_id': 4, 'machine_id': 'A', 'duration': 30}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'D', 'duration': 61}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'C', 'duration': 40}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'B', 'duration': 83}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 'A', 'duration': 49}, {'job_id': 'J3', 'task_id': 4, 'machine_id': 'E', 'duration': 85}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'E', 'duration': 14}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'D', 'duration': 32}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'B', 'duration': 55}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 'A', 'duration': 60}, {'job_id': 'J4', 'task_id': 4, 'machine_id': 'C', 'duration': 81}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'B', 'duration': 6}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'A', 'duration': 45}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'D', 'duration': 41}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 'C', 'duration': 99}, {'job_id': 'J5', 'task_id': 4, 'machine_id': 'E', 'duration': 92}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'B', 'duration': 93}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'C', 'duration': 62}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'D', 'duration': 9}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 'A', 'duration': 95}, {'job_id': 'J6', 'task_id': 4, 'machine_id': 'E', 'duration': 49}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 'B', 'duration': 54}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 'E', 'duration': 87}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 'D', 'duration': 89}, {'job_id': 'J7', 'task_id': 3, 'machine_id': 'A', 'duration': 42}, {'job_id': 'J7', 'task_id': 4, 'machine_id': 'C', 'duration': 99}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 'E', 'duration': 1}, {'task': 1, 'start': 1, 'machine': 'C', 'duration': 47}, {'task': 2, 'start': 291, 'machine': 'B', 'duration': 40}, {'task': 3, 'start': 331, 'machine': 'D', 'duration': 3}, {'task': 4, 'start': 418, 'machine': 'A', 'duration': 36}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 1, 'machine': 'E', 'duration': 76}, {'task': 1, 'start': 77, 'machine': 'D', 'duration': 39}, {'task': 2, 'start': 163, 'machine': 'C', 'duration': 87}, {'task': 3, 'start': 331, 'machine': 'B', 'duration': 91}, {'task': 4, 'start': 454, 'machine': 'A', 'duration': 30}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 'D', 'duration': 61}, {'task': 1, 'start': 61, 'machine': 'C', 'duration': 40}, {'task': 2, 'start': 208, 'machine': 'B', 'duration': 83}, {'task': 3, 'start': 327, 'machine': 'A', 'duration': 49}, {'task': 4, 'start': 441, 'machine': 'E', 'duration': 85}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 77, 'machine': 'E', 'duration': 14}, {'task': 1, 'start': 116, 'machine': 'D', 'duration': 32}, {'task': 2, 'start': 153, 'machine': 'B', 'duration': 55}, {'task': 3, 'start': 267, 'machine': 'A', 'duration': 60}, {'task': 4, 'start': 349, 'machine': 'C', 'duration': 81}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 6}, {'task': 1, 'start': 6, 'machine': 'A', 'duration': 45}, {'task': 2, 'start': 172, 'machine': 'D', 'duration': 41}, {'task': 3, 'start': 250, 'machine': 'C', 'duration': 99}, {'task': 4, 'start': 349, 'machine': 'E', 'duration': 92}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 6, 'machine': 'B', 'duration': 93}, {'task': 1, 'start': 101, 'machine': 'C', 'duration': 62}, {'task': 2, 'start': 163, 'machine': 'D', 'duration': 9}, {'task': 3, 'start': 172, 'machine': 'A', 'duration': 95}, {'task': 4, 'start': 267, 'machine': 'E', 'duration': 49}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 99, 'machine': 'B', 'duration': 54}, {'task': 1, 'start': 153, 'machine': 'E', 'duration': 87}, {'task': 2, 'start': 240, 'machine': 'D', 'duration': 89}, {'task': 3, 'start': 376, 'machine': 'A', 'duration': 42}, {'task': 4, 'start': 430, 'machine': 'C', 'duration': 99}]}]",31,json,names |
| JSP,JSP,"On a busy morning the radiology scheduler picks start times so every patientβs imaging sequence flows: each scan sits on the scanner itβs supposed to, takes the exact time it needs, follows the previous scan for that patient, and never clashes with another scan on the same machine β success is simply how early the entire set of patients is done, measured by when the last scheduled scan ends. The specific case details are listed below. |
|
|
| There are 8 patients and 4 scanners; patient IDs: J1, J2, J3, J4, J5, J6, J7, J8; scanner IDs: A, B, C, D. |
| For patient J1, scan 0 must run on scanner B for 1. |
| For patient J1, scan 1 must run on scanner D for 60. |
| For patient J1, scan 2 must run on scanner C for 16. |
| For patient J1, scan 3 must run on scanner A for 48. |
| For patient J2, scan 0 must run on scanner A for 89. |
| For patient J2, scan 1 must run on scanner C for 98. |
| For patient J2, scan 2 must run on scanner B for 43. |
| For patient J2, scan 3 must run on scanner D for 56. |
| For patient J3, scan 0 must run on scanner C for 59. |
| For patient J3, scan 1 must run on scanner B for 24. |
| For patient J3, scan 2 must run on scanner A for 99. |
| For patient J3, scan 3 must run on scanner D for 91. |
| For patient J4, scan 0 must run on scanner B for 66. |
| For patient J4, scan 1 must run on scanner C for 52. |
| For patient J4, scan 2 must run on scanner D for 90. |
| For patient J4, scan 3 must run on scanner A for 67. |
| For patient J5, scan 0 must run on scanner C for 99. |
| For patient J5, scan 1 must run on scanner D for 56. |
| For patient J5, scan 2 must run on scanner A for 98. |
| For patient J5, scan 3 must run on scanner B for 88. |
| For patient J6, scan 0 must run on scanner A for 48. |
| For patient J6, scan 1 must run on scanner D for 14. |
| For patient J6, scan 2 must run on scanner B for 99. |
| For patient J6, scan 3 must run on scanner C for 92. |
| For patient J7, scan 0 must run on scanner B for 77. |
| For patient J7, scan 1 must run on scanner C for 47. |
| For patient J7, scan 2 must run on scanner D for 71. |
| For patient J7, scan 3 must run on scanner A for 73. |
| For patient J8, scan 0 must run on scanner B for 37. |
| For patient J8, scan 1 must run on scanner A for 19. |
| For patient J8, scan 2 must run on scanner C for 45. |
| For patient J8, scan 3 must run on scanner D for 64. |
| These entries list every required scan so the scheduler can minimize when the last scan finishes. |
|
|
| If you'd like to return the schedule in a nice, machine-friendly way (and still keep things readable for a human), just follow this simple JSON shape when you reply: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of that as a lightweight form: ""solution"" is the list of all jobs (each patient or imaging sequence), each job entry names the job id and then a list of its tasks; each task line says which step it is, when that scan starts, which scanner/machine it uses, and how long it runs. Itβs just a sketch of the shape I need, not the actual scheduled times. |
|
|
| Please make sure to use the exact identifiers from the instance input β no renaming and no new labels. For example: |
| - ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 4, 'nr_jobs': 8, 'jobs': [[[1, 1], [3, 60], [2, 16], [0, 48]], [[0, 89], [2, 98], [1, 43], [3, 56]], [[2, 59], [1, 24], [0, 99], [3, 91]], [[1, 66], [2, 52], [3, 90], [0, 67]], [[2, 99], [3, 56], [0, 98], [1, 88]], [[0, 48], [3, 14], [1, 99], [2, 92]], [[1, 77], [2, 47], [3, 71], [0, 73]], [[1, 37], [0, 19], [2, 45], [3, 64]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 1, 'machine': 3, 'duration': 60}, {'task': 2, 'start': 400, 'machine': 2, 'duration': 16}, {'task': 3, 'start': 493, 'machine': 0, 'duration': 48}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 89}, {'task': 1, 'start': 302, 'machine': 2, 'duration': 98}, {'task': 2, 'start': 441, 'machine': 1, 'duration': 43}, {'task': 3, 'start': 485, 'machine': 3, 'duration': 56}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 151, 'machine': 2, 'duration': 59}, {'task': 1, 'start': 210, 'machine': 1, 'duration': 24}, {'task': 2, 'start': 254, 'machine': 0, 'duration': 99}, {'task': 3, 'start': 394, 'machine': 3, 'duration': 91}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 1, 'machine': 1, 'duration': 66}, {'task': 1, 'start': 99, 'machine': 2, 'duration': 52}, {'task': 2, 'start': 155, 'machine': 3, 'duration': 90}, {'task': 3, 'start': 426, 'machine': 0, 'duration': 67}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 99}, {'task': 1, 'start': 99, 'machine': 3, 'duration': 56}, {'task': 2, 'start': 156, 'machine': 0, 'duration': 98}, {'task': 3, 'start': 254, 'machine': 1, 'duration': 88}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 89, 'machine': 0, 'duration': 48}, {'task': 1, 'start': 245, 'machine': 3, 'duration': 14}, {'task': 2, 'start': 342, 'machine': 1, 'duration': 99}, {'task': 3, 'start': 441, 'machine': 2, 'duration': 92}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 104, 'machine': 1, 'duration': 77}, {'task': 1, 'start': 210, 'machine': 2, 'duration': 47}, {'task': 2, 'start': 259, 'machine': 3, 'duration': 71}, {'task': 3, 'start': 353, 'machine': 0, 'duration': 73}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 67, 'machine': 1, 'duration': 37}, {'task': 1, 'start': 137, 'machine': 0, 'duration': 19}, {'task': 2, 'start': 257, 'machine': 2, 'duration': 45}, {'task': 3, 'start': 330, 'machine': 3, 'duration': 64}]}]",541.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 4, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': ['A', 'B', 'C', 'D'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'B', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'D', 'duration': 60}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'C', 'duration': 16}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 'A', 'duration': 48}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'A', 'duration': 89}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'C', 'duration': 98}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'B', 'duration': 43}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 'D', 'duration': 56}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'C', 'duration': 59}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'B', 'duration': 24}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'A', 'duration': 99}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 'D', 'duration': 91}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'B', 'duration': 66}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'C', 'duration': 52}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'D', 'duration': 90}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 'A', 'duration': 67}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'C', 'duration': 99}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'D', 'duration': 56}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'A', 'duration': 98}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 'B', 'duration': 88}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'A', 'duration': 48}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'D', 'duration': 14}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'B', 'duration': 99}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 'C', 'duration': 92}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 'B', 'duration': 77}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 'C', 'duration': 47}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 'D', 'duration': 71}, {'job_id': 'J7', 'task_id': 3, 'machine_id': 'A', 'duration': 73}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 'B', 'duration': 37}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 'A', 'duration': 19}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 'C', 'duration': 45}, {'job_id': 'J8', 'task_id': 3, 'machine_id': 'D', 'duration': 64}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 1}, {'task': 1, 'start': 1, 'machine': 'D', 'duration': 60}, {'task': 2, 'start': 400, 'machine': 'C', 'duration': 16}, {'task': 3, 'start': 493, 'machine': 'A', 'duration': 48}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 'A', 'duration': 89}, {'task': 1, 'start': 302, 'machine': 'C', 'duration': 98}, {'task': 2, 'start': 441, 'machine': 'B', 'duration': 43}, {'task': 3, 'start': 485, 'machine': 'D', 'duration': 56}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 151, 'machine': 'C', 'duration': 59}, {'task': 1, 'start': 210, 'machine': 'B', 'duration': 24}, {'task': 2, 'start': 254, 'machine': 'A', 'duration': 99}, {'task': 3, 'start': 394, 'machine': 'D', 'duration': 91}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 1, 'machine': 'B', 'duration': 66}, {'task': 1, 'start': 99, 'machine': 'C', 'duration': 52}, {'task': 2, 'start': 155, 'machine': 'D', 'duration': 90}, {'task': 3, 'start': 426, 'machine': 'A', 'duration': 67}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 99}, {'task': 1, 'start': 99, 'machine': 'D', 'duration': 56}, {'task': 2, 'start': 156, 'machine': 'A', 'duration': 98}, {'task': 3, 'start': 254, 'machine': 'B', 'duration': 88}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 89, 'machine': 'A', 'duration': 48}, {'task': 1, 'start': 245, 'machine': 'D', 'duration': 14}, {'task': 2, 'start': 342, 'machine': 'B', 'duration': 99}, {'task': 3, 'start': 441, 'machine': 'C', 'duration': 92}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 104, 'machine': 'B', 'duration': 77}, {'task': 1, 'start': 210, 'machine': 'C', 'duration': 47}, {'task': 2, 'start': 259, 'machine': 'D', 'duration': 71}, {'task': 3, 'start': 353, 'machine': 'A', 'duration': 73}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 67, 'machine': 'B', 'duration': 37}, {'task': 1, 'start': 137, 'machine': 'A', 'duration': 19}, {'task': 2, 'start': 257, 'machine': 'C', 'duration': 45}, {'task': 3, 'start': 330, 'machine': 'D', 'duration': 64}]}]",32,nl,names |
| JSP,JSP,"Thereβs a small studio where projects must pass through editing, then color grading, then sound mixing, and those three steps are fixed for every project. The task at hand is to assign start times on the proper workstations so each step takes its allotted time, no workstation is double-booked, and every step happens exactly once in order. The goal is to bring the time when the very last project finishes as low as possible β compute each projectβs finish time and the scheduleβs result is the latest finish among them. The exact list of projects and durations appears below. |
|
|
| Instance: 8 projects, 3 workstations; project IDs J1, J2, J3, J4, J5, J6, J7, J8; workstation IDs 1, 2, 3. |
|
|
| | project_id | step_index | workstation_id | processing_duration | |
| |---|---|---|---| |
| | J1 | 0 | 2 | 1 | |
| | J1 | 1 | 3 | 73 | |
| | J1 | 2 | 1 | 91 | |
| | J2 | 0 | 2 | 94 | |
| | J2 | 1 | 1 | 43 | |
| | J2 | 2 | 3 | 21 | |
| | J3 | 0 | 3 | 48 | |
| | J3 | 1 | 2 | 24 | |
| | J3 | 2 | 1 | 27 | |
| | J4 | 0 | 1 | 17 | |
| | J4 | 1 | 2 | 38 | |
| | J4 | 2 | 3 | 44 | |
| | J5 | 0 | 2 | 49 | |
| | J5 | 1 | 3 | 56 | |
| | J5 | 2 | 1 | 95 | |
| | J6 | 0 | 1 | 20 | |
| | J6 | 1 | 3 | 66 | |
| | J6 | 2 | 2 | 57 | |
| | J7 | 0 | 2 | 37 | |
| | J7 | 1 | 3 | 94 | |
| | J7 | 2 | 1 | 89 | |
| | J8 | 0 | 3 | 82 | |
| | J8 | 1 | 1 | 58 | |
| | J8 | 2 | 2 | 85 | |
|
|
| Place each step so every task occurs once in order and the latest project finish is minimized. |
|
|
| Also, I'll return the schedule in a simple JSON shape so it's easy to check or load into other tools. Something like this: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it as a little form: each top-level entry is a project (""job""), and inside you list its ordered steps (""tasks""). For each step you say which step number it is (""task""), when it starts (""start""), which workstation it uses (""machine""), and how long it runs (""duration""). This block is just a sketch of the expected shape β Iβll fill in the actual numbers and IDs for the instance itself. |
|
|
| Please keep all job and machine identifiers exactly as they appear in the instance input β no renaming and no new labels. |
| - for example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 3, 'nr_jobs': 8, 'jobs': [[[1, 1], [2, 73], [0, 91]], [[1, 94], [0, 43], [2, 21]], [[2, 48], [1, 24], [0, 27]], [[0, 17], [1, 38], [2, 44]], [[1, 49], [2, 56], [0, 95]], [[0, 20], [2, 66], [1, 57]], [[1, 37], [2, 94], [0, 89]], [[2, 82], [0, 58], [1, 85]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 49, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 138, 'machine': 2, 'duration': 73}, {'task': 2, 'start': 235, 'machine': 0, 'duration': 91}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 50, 'machine': 1, 'duration': 94}, {'task': 1, 'start': 326, 'machine': 0, 'duration': 43}, {'task': 2, 'start': 463, 'machine': 2, 'duration': 21}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 371, 'machine': 2, 'duration': 48}, {'task': 1, 'start': 428, 'machine': 1, 'duration': 24}, {'task': 2, 'start': 458, 'machine': 0, 'duration': 27}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 20, 'machine': 0, 'duration': 17}, {'task': 1, 'start': 266, 'machine': 1, 'duration': 38}, {'task': 2, 'start': 419, 'machine': 2, 'duration': 44}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 49}, {'task': 1, 'start': 82, 'machine': 2, 'duration': 56}, {'task': 2, 'start': 140, 'machine': 0, 'duration': 95}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 20}, {'task': 1, 'start': 305, 'machine': 2, 'duration': 66}, {'task': 2, 'start': 371, 'machine': 1, 'duration': 57}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 144, 'machine': 1, 'duration': 37}, {'task': 1, 'start': 211, 'machine': 2, 'duration': 94}, {'task': 2, 'start': 369, 'machine': 0, 'duration': 89}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 82}, {'task': 1, 'start': 82, 'machine': 0, 'duration': 58}, {'task': 2, 'start': 181, 'machine': 1, 'duration': 85}]}]",485.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': [1, 2, 3], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 2, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 3, 'duration': 73}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 1, 'duration': 91}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 2, 'duration': 94}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 1, 'duration': 43}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 3, 'duration': 21}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 3, 'duration': 48}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 2, 'duration': 24}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 1, 'duration': 27}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 1, 'duration': 17}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 2, 'duration': 38}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 3, 'duration': 44}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 2, 'duration': 49}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 3, 'duration': 56}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 1, 'duration': 95}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 1, 'duration': 20}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 3, 'duration': 66}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 2, 'duration': 57}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 2, 'duration': 37}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 3, 'duration': 94}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 1, 'duration': 89}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 3, 'duration': 82}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 1, 'duration': 58}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 2, 'duration': 85}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 49, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 138, 'machine': 3, 'duration': 73}, {'task': 2, 'start': 235, 'machine': 1, 'duration': 91}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 50, 'machine': 2, 'duration': 94}, {'task': 1, 'start': 326, 'machine': 1, 'duration': 43}, {'task': 2, 'start': 463, 'machine': 3, 'duration': 21}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 371, 'machine': 3, 'duration': 48}, {'task': 1, 'start': 428, 'machine': 2, 'duration': 24}, {'task': 2, 'start': 458, 'machine': 1, 'duration': 27}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 20, 'machine': 1, 'duration': 17}, {'task': 1, 'start': 266, 'machine': 2, 'duration': 38}, {'task': 2, 'start': 419, 'machine': 3, 'duration': 44}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 49}, {'task': 1, 'start': 82, 'machine': 3, 'duration': 56}, {'task': 2, 'start': 140, 'machine': 1, 'duration': 95}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 20}, {'task': 1, 'start': 305, 'machine': 3, 'duration': 66}, {'task': 2, 'start': 371, 'machine': 2, 'duration': 57}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 144, 'machine': 2, 'duration': 37}, {'task': 1, 'start': 211, 'machine': 3, 'duration': 94}, {'task': 2, 'start': 369, 'machine': 1, 'duration': 89}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 82}, {'task': 1, 'start': 82, 'machine': 1, 'duration': 58}, {'task': 2, 'start': 181, 'machine': 2, 'duration': 85}]}]",33,markdown_table,1 |
| JSP,JSP,"Thereβs a pile of bookings with each client asking for a string of photos and then retouches, and itβs up to the studio to slot those tasks into the available sets and editing stations. Each item in a session needs a dedicated space for a fixed stretch, the steps must be done in order, and no set or station can handle two things at the same time β everything must be scheduled once, no repeats. The way to tell which schedule is better is to look at when the final session finishes; the earlier that finishing time, the better the plan. Concrete session details are listed below. |
|
|
| { |
| ""num_sessions"": 8, |
| ""num_sets_and_stations"": 3, |
| ""session_ids"": [ |
| ""J1"", |
| ""J2"", |
| ""J3"", |
| ""J4"", |
| ""J5"", |
| ""J6"", |
| ""J7"", |
| ""J8"" |
| ], |
| ""resource_ids"": [ |
| 1, |
| 2, |
| 3 |
| ], |
| ""tasks"": [ |
| { |
| ""session_id"": ""J1"", |
| ""step_index"": 0, |
| ""resource_id"": 2, |
| ""duration_minutes"": 1 |
| }, |
| { |
| ""session_id"": ""J1"", |
| ""step_index"": 1, |
| ""resource_id"": 3, |
| ""duration_minutes"": 86 |
| }, |
| { |
| ""session_id"": ""J1"", |
| ""step_index"": 2, |
| ""resource_id"": 1, |
| ""duration_minutes"": 67 |
| }, |
| { |
| ""session_id"": ""J2"", |
| ""step_index"": 0, |
| ""resource_id"": 1, |
| ""duration_minutes"": 40 |
| }, |
| { |
| ""session_id"": ""J2"", |
| ""step_index"": 1, |
| ""resource_id"": 2, |
| ""duration_minutes"": 95 |
| }, |
| { |
| ""session_id"": ""J2"", |
| ""step_index"": 2, |
| ""resource_id"": 3, |
| ""duration_minutes"": 42 |
| }, |
| { |
| ""session_id"": ""J3"", |
| ""step_index"": 0, |
| ""resource_id"": 3, |
| ""duration_minutes"": 53 |
| }, |
| { |
| ""session_id"": ""J3"", |
| ""step_index"": 1, |
| ""resource_id"": 1, |
| ""duration_minutes"": 91 |
| }, |
| { |
| ""session_id"": ""J3"", |
| ""step_index"": 2, |
| ""resource_id"": 2, |
| ""duration_minutes"": 94 |
| }, |
| { |
| ""session_id"": ""J4"", |
| ""step_index"": 0, |
| ""resource_id"": 1, |
| ""duration_minutes"": 11 |
| }, |
| { |
| ""session_id"": ""J4"", |
| ""step_index"": 1, |
| ""resource_id"": 2, |
| ""duration_minutes"": 76 |
| }, |
| { |
| ""session_id"": ""J4"", |
| ""step_index"": 2, |
| ""resource_id"": 3, |
| ""duration_minutes"": 95 |
| }, |
| { |
| ""session_id"": ""J5"", |
| ""step_index"": 0, |
| ""resource_id"": 2, |
| ""duration_minutes"": 32 |
| }, |
| { |
| ""session_id"": ""J5"", |
| ""step_index"": 1, |
| ""resource_id"": 1, |
| ""duration_minutes"": 59 |
| }, |
| { |
| ""session_id"": ""J5"", |
| ""step_index"": 2, |
| ""resource_id"": 3, |
| ""duration_minutes"": 1 |
| }, |
| { |
| ""session_id"": ""J6"", |
| ""step_index"": 0, |
| ""resource_id"": 2, |
| ""duration_minutes"": 73 |
| }, |
| { |
| ""session_id"": ""J6"", |
| ""step_index"": 1, |
| ""resource_id"": 1, |
| ""duration_minutes"": 34 |
| }, |
| { |
| ""session_id"": ""J6"", |
| ""step_index"": 2, |
| ""resource_id"": 3, |
| ""duration_minutes"": 58 |
| }, |
| { |
| ""session_id"": ""J7"", |
| ""step_index"": 0, |
| ""resource_id"": 2, |
| ""duration_minutes"": 75 |
| }, |
| { |
| ""session_id"": ""J7"", |
| ""step_index"": 1, |
| ""resource_id"": 1, |
| ""duration_minutes"": 2 |
| }, |
| { |
| ""session_id"": ""J7"", |
| ""step_index"": 2, |
| ""resource_id"": 3, |
| ""duration_minutes"": 31 |
| }, |
| { |
| ""session_id"": ""J8"", |
| ""step_index"": 0, |
| ""resource_id"": 1, |
| ""duration_minutes"": 51 |
| }, |
| { |
| ""session_id"": ""J8"", |
| ""step_index"": 1, |
| ""resource_id"": 3, |
| ""duration_minutes"": 18 |
| }, |
| { |
| ""session_id"": ""J8"", |
| ""step_index"": 2, |
| ""resource_id"": 2, |
| ""duration_minutes"": 78 |
| } |
| ] |
| } |
|
|
| If you'd like the schedule in a tidy, copy-pasteable form, I usually return it as JSON like this: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <session_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <set_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| This is just the shape I expect: ""solution"" is a list of sessions, each item has a ""job"" (the session id), and a ""tasks"" list where every task shows which step it is, when it starts, which set or editing station it uses, and how long it runs. Treat it like a simple formβfill in the IDs and numbers in those slots. |
|
|
| Note that this JSON is only a sketch of the expected shape, not the actual schedule. |
|
|
| Please use the exact identifiers from the instance input β do not rename them or invent new labels. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 3, 'nr_jobs': 8, 'jobs': [[[1, 1], [2, 86], [0, 67]], [[0, 40], [1, 95], [2, 42]], [[2, 53], [0, 91], [1, 94]], [[0, 11], [1, 76], [2, 95]], [[1, 32], [0, 59], [2, 1]], [[1, 73], [0, 34], [2, 58]], [[1, 75], [0, 2], [2, 31]], [[0, 51], [2, 18], [1, 78]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 149, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 244, 'machine': 2, 'duration': 86}, {'task': 2, 'start': 330, 'machine': 0, 'duration': 67}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 11, 'machine': 0, 'duration': 40}, {'task': 1, 'start': 150, 'machine': 1, 'duration': 95}, {'task': 2, 'start': 388, 'machine': 2, 'duration': 42}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 53}, {'task': 1, 'start': 102, 'machine': 0, 'duration': 91}, {'task': 2, 'start': 320, 'machine': 1, 'duration': 94}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 11}, {'task': 1, 'start': 73, 'machine': 1, 'duration': 76}, {'task': 2, 'start': 149, 'machine': 2, 'duration': 95}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 414, 'machine': 1, 'duration': 32}, {'task': 1, 'start': 446, 'machine': 0, 'duration': 59}, {'task': 2, 'start': 505, 'machine': 2, 'duration': 1}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 73}, {'task': 1, 'start': 193, 'machine': 0, 'duration': 34}, {'task': 2, 'start': 330, 'machine': 2, 'duration': 58}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 245, 'machine': 1, 'duration': 75}, {'task': 1, 'start': 320, 'machine': 0, 'duration': 2}, {'task': 2, 'start': 430, 'machine': 2, 'duration': 31}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 51, 'machine': 0, 'duration': 51}, {'task': 1, 'start': 102, 'machine': 2, 'duration': 18}, {'task': 2, 'start': 446, 'machine': 1, 'duration': 78}]}]",524.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': [1, 2, 3], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 2, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 3, 'duration': 86}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 1, 'duration': 67}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 1, 'duration': 40}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 2, 'duration': 95}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 3, 'duration': 42}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 3, 'duration': 53}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 1, 'duration': 91}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 2, 'duration': 94}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 1, 'duration': 11}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 2, 'duration': 76}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 3, 'duration': 95}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 2, 'duration': 32}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 1, 'duration': 59}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 3, 'duration': 1}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 2, 'duration': 73}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 1, 'duration': 34}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 3, 'duration': 58}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 2, 'duration': 75}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 1, 'duration': 2}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 3, 'duration': 31}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 1, 'duration': 51}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 3, 'duration': 18}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 2, 'duration': 78}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 149, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 244, 'machine': 3, 'duration': 86}, {'task': 2, 'start': 330, 'machine': 1, 'duration': 67}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 11, 'machine': 1, 'duration': 40}, {'task': 1, 'start': 150, 'machine': 2, 'duration': 95}, {'task': 2, 'start': 388, 'machine': 3, 'duration': 42}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 53}, {'task': 1, 'start': 102, 'machine': 1, 'duration': 91}, {'task': 2, 'start': 320, 'machine': 2, 'duration': 94}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 11}, {'task': 1, 'start': 73, 'machine': 2, 'duration': 76}, {'task': 2, 'start': 149, 'machine': 3, 'duration': 95}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 414, 'machine': 2, 'duration': 32}, {'task': 1, 'start': 446, 'machine': 1, 'duration': 59}, {'task': 2, 'start': 505, 'machine': 3, 'duration': 1}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 73}, {'task': 1, 'start': 193, 'machine': 1, 'duration': 34}, {'task': 2, 'start': 330, 'machine': 3, 'duration': 58}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 245, 'machine': 2, 'duration': 75}, {'task': 1, 'start': 320, 'machine': 1, 'duration': 2}, {'task': 2, 'start': 430, 'machine': 3, 'duration': 31}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 51, 'machine': 1, 'duration': 51}, {'task': 1, 'start': 102, 'machine': 3, 'duration': 18}, {'task': 2, 'start': 446, 'machine': 2, 'duration': 78}]}]",34,json,1 |
| JSP,JSP,"We run a fleet of delivery drones and every morning they need a fixed lineup of checks and charging sessions, each tied to a specific pad or bench and lasting a known amount of time. The decision is how to schedule those checks so no pad is double-booked, nothing is skipped or repeated, and each droneβs steps happen in their required order. A schedule that finishes the whole fleet sooner is preferable β measure that by the time the last drone wraps up its final required activity. The concrete list of drones, required steps, pad assignments, and durations follows below. |
|
|
| We have 6 drones and 5 pads; their identifiers are J1, J2, J3, J4, J5, J6 and 1, 2, 3, 4, 5. |
|
|
| | drone_id | step_index | pad_id | duration_minutes | |
| |---|---|---|---| |
| | J1 | 0 | 3 | 1 | |
| | J1 | 1 | 5 | 99 | |
| | J1 | 2 | 4 | 43 | |
| | J1 | 3 | 2 | 85 | |
| | J1 | 4 | 1 | 49 | |
| | J2 | 0 | 2 | 64 | |
| | J2 | 1 | 3 | 57 | |
| | J2 | 2 | 4 | 59 | |
| | J2 | 3 | 5 | 63 | |
| | J2 | 4 | 1 | 4 | |
| | J3 | 0 | 5 | 15 | |
| | J3 | 1 | 2 | 48 | |
| | J3 | 2 | 1 | 16 | |
| | J3 | 3 | 4 | 63 | |
| | J3 | 4 | 3 | 7 | |
| | J4 | 0 | 4 | 26 | |
| | J4 | 1 | 1 | 1 | |
| | J4 | 2 | 3 | 58 | |
| | J4 | 3 | 2 | 14 | |
| | J4 | 4 | 5 | 8 | |
| | J5 | 0 | 4 | 73 | |
| | J5 | 1 | 2 | 20 | |
| | J5 | 2 | 1 | 76 | |
| | J5 | 3 | 5 | 71 | |
| | J5 | 4 | 3 | 31 | |
| | J6 | 0 | 5 | 5 | |
| | J6 | 1 | 1 | 98 | |
| | J6 | 2 | 2 | 70 | |
| | J6 | 3 | 4 | 61 | |
| | J6 | 4 | 3 | 29 | |
|
|
| We seek a schedule that minimizes when the last of the 6 drones finishes. |
|
|
| Also, when you hand me the schedule, please follow a simple JSON layout β nothing fancy, just the shape I'll parse. Here's the sketch I expect: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Quick, informal guide to the fields so itβs clear what goes where: |
| - ""solution"" is a list with one entry per drone (job). |
| - ""job"" is the drone identifier. |
| - ""tasks"" is the ordered list of that droneβs required steps. |
| - each task has ""task"" (which step it is in the sequence), ""start"" (when it begins), ""machine"" (which pad or bench it uses), and ""duration"" (how long it runs). |
|
|
| This JSON is just a template of the shape I want β not the actual schedule itself. |
|
|
| Please make sure you use the exact identifiers from the instance input, do not rename or invent labels. |
| - for example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 5, 'nr_jobs': 6, 'jobs': [[[2, 1], [4, 99], [3, 43], [1, 85], [0, 49]], [[1, 64], [2, 57], [3, 59], [4, 63], [0, 4]], [[4, 15], [1, 48], [0, 16], [3, 63], [2, 7]], [[3, 26], [0, 1], [2, 58], [1, 14], [4, 8]], [[3, 73], [1, 20], [0, 76], [4, 71], [2, 31]], [[4, 5], [0, 98], [1, 70], [3, 61], [2, 29]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 20, 'machine': 4, 'duration': 99}, {'task': 2, 'start': 119, 'machine': 3, 'duration': 43}, {'task': 3, 'start': 211, 'machine': 1, 'duration': 85}, {'task': 4, 'start': 296, 'machine': 0, 'duration': 49}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 64}, {'task': 1, 'start': 64, 'machine': 2, 'duration': 57}, {'task': 2, 'start': 162, 'machine': 3, 'duration': 59}, {'task': 3, 'start': 250, 'machine': 4, 'duration': 63}, {'task': 4, 'start': 345, 'machine': 0, 'duration': 4}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 5, 'machine': 4, 'duration': 15}, {'task': 1, 'start': 93, 'machine': 1, 'duration': 48}, {'task': 2, 'start': 180, 'machine': 0, 'duration': 16}, {'task': 3, 'start': 282, 'machine': 3, 'duration': 63}, {'task': 4, 'start': 345, 'machine': 2, 'duration': 7}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 73, 'machine': 3, 'duration': 26}, {'task': 1, 'start': 179, 'machine': 0, 'duration': 1}, {'task': 2, 'start': 180, 'machine': 2, 'duration': 58}, {'task': 3, 'start': 307, 'machine': 1, 'duration': 14}, {'task': 4, 'start': 321, 'machine': 4, 'duration': 8}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 73}, {'task': 1, 'start': 73, 'machine': 1, 'duration': 20}, {'task': 2, 'start': 103, 'machine': 0, 'duration': 76}, {'task': 3, 'start': 179, 'machine': 4, 'duration': 71}, {'task': 4, 'start': 251, 'machine': 2, 'duration': 31}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 5}, {'task': 1, 'start': 5, 'machine': 0, 'duration': 98}, {'task': 2, 'start': 141, 'machine': 1, 'duration': 70}, {'task': 3, 'start': 221, 'machine': 3, 'duration': 61}, {'task': 4, 'start': 282, 'machine': 2, 'duration': 29}]}]",352.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 5, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': [1, 2, 3, 4, 5], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 3, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 5, 'duration': 99}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 4, 'duration': 43}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 2, 'duration': 85}, {'job_id': 'J1', 'task_id': 4, 'machine_id': 1, 'duration': 49}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 2, 'duration': 64}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 3, 'duration': 57}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 4, 'duration': 59}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 5, 'duration': 63}, {'job_id': 'J2', 'task_id': 4, 'machine_id': 1, 'duration': 4}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 5, 'duration': 15}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 2, 'duration': 48}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 1, 'duration': 16}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 4, 'duration': 63}, {'job_id': 'J3', 'task_id': 4, 'machine_id': 3, 'duration': 7}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 4, 'duration': 26}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 1, 'duration': 1}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 3, 'duration': 58}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 2, 'duration': 14}, {'job_id': 'J4', 'task_id': 4, 'machine_id': 5, 'duration': 8}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 4, 'duration': 73}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 2, 'duration': 20}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 1, 'duration': 76}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 5, 'duration': 71}, {'job_id': 'J5', 'task_id': 4, 'machine_id': 3, 'duration': 31}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 5, 'duration': 5}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 1, 'duration': 98}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 2, 'duration': 70}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 4, 'duration': 61}, {'job_id': 'J6', 'task_id': 4, 'machine_id': 3, 'duration': 29}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 20, 'machine': 5, 'duration': 99}, {'task': 2, 'start': 119, 'machine': 4, 'duration': 43}, {'task': 3, 'start': 211, 'machine': 2, 'duration': 85}, {'task': 4, 'start': 296, 'machine': 1, 'duration': 49}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 64}, {'task': 1, 'start': 64, 'machine': 3, 'duration': 57}, {'task': 2, 'start': 162, 'machine': 4, 'duration': 59}, {'task': 3, 'start': 250, 'machine': 5, 'duration': 63}, {'task': 4, 'start': 345, 'machine': 1, 'duration': 4}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 5, 'machine': 5, 'duration': 15}, {'task': 1, 'start': 93, 'machine': 2, 'duration': 48}, {'task': 2, 'start': 180, 'machine': 1, 'duration': 16}, {'task': 3, 'start': 282, 'machine': 4, 'duration': 63}, {'task': 4, 'start': 345, 'machine': 3, 'duration': 7}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 73, 'machine': 4, 'duration': 26}, {'task': 1, 'start': 179, 'machine': 1, 'duration': 1}, {'task': 2, 'start': 180, 'machine': 3, 'duration': 58}, {'task': 3, 'start': 307, 'machine': 2, 'duration': 14}, {'task': 4, 'start': 321, 'machine': 5, 'duration': 8}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 73}, {'task': 1, 'start': 73, 'machine': 2, 'duration': 20}, {'task': 2, 'start': 103, 'machine': 1, 'duration': 76}, {'task': 3, 'start': 179, 'machine': 5, 'duration': 71}, {'task': 4, 'start': 251, 'machine': 3, 'duration': 31}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 5, 'duration': 5}, {'task': 1, 'start': 5, 'machine': 1, 'duration': 98}, {'task': 2, 'start': 141, 'machine': 2, 'duration': 70}, {'task': 3, 'start': 221, 'machine': 4, 'duration': 61}, {'task': 4, 'start': 282, 'machine': 3, 'duration': 29}]}]",35,markdown_table,1 |
| JSP,JSP,"At the port the challenge is to sequence loading and inspection for all outbound containers so every container follows its prescribed sequence on specific docks and inspection lanes for set time slots. Each operation needs its assigned dock or lane and takes a fixed amount of time, and docks are single-tasked β they canβt run simultaneous operations. The whole plan is judged by how early the last container departs; the sooner that departure time, the better the schedule. No step can be skipped or repeated, order matters, and the exact container operations and timings are provided below. |
|
|
| Below are the 6 containers to schedule across the 4 stations: containers J1, J2, J3, J4, J5, J6; stations 0, 1, 2, 3. |
|
|
| | container_id_ref | operation_index | required_station_id | operation_duration | |
| |---|---|---|---| |
| | J1 | 0 | 2 | 1 | |
| | J1 | 1 | 3 | 13 | |
| | J1 | 2 | 1 | 18 | |
| | J1 | 3 | 0 | 32 | |
| | J2 | 0 | 1 | 3 | |
| | J2 | 1 | 0 | 86 | |
| | J2 | 2 | 2 | 62 | |
| | J2 | 3 | 3 | 27 | |
| | J3 | 0 | 1 | 31 | |
| | J3 | 1 | 3 | 97 | |
| | J3 | 2 | 2 | 53 | |
| | J3 | 3 | 0 | 99 | |
| | J4 | 0 | 2 | 98 | |
| | J4 | 1 | 0 | 66 | |
| | J4 | 2 | 1 | 12 | |
| | J4 | 3 | 3 | 78 | |
| | J5 | 0 | 0 | 68 | |
| | J5 | 1 | 3 | 59 | |
| | J5 | 2 | 1 | 52 | |
| | J5 | 3 | 2 | 15 | |
| | J6 | 0 | 2 | 15 | |
| | J6 | 1 | 1 | 88 | |
| | J6 | 2 | 0 | 35 | |
| | J6 | 3 | 3 | 64 | |
|
|
| The objective remains to minimize the departure time of the last container across all 4 stations for these 6 containers. |
|
|
| You can just hand me the schedule in this simple JSON shape when you're ready β makes it easy to read and check: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it like a little form: ""solution"" is a list of containers (jobs). Each job entry names the job and then lists its ordered tasks. For each task, give the task's index within that job, the planned start time, which dock or lane (machine) it uses, and how long it runs. Super casual β just fill in those fields with the actual IDs and times. |
|
|
| This JSON is only a sketch of the expected shape, not the actual schedule β please fill in the real values from the instance. |
|
|
| Please use the identifiers exactly as they appear in the instance input β do not rename them or invent new labels. For example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 4, 'nr_jobs': 6, 'jobs': [[[2, 1], [3, 13], [1, 18], [0, 32]], [[1, 3], [0, 86], [2, 62], [3, 27]], [[1, 31], [3, 97], [2, 53], [0, 99]], [[2, 98], [0, 66], [1, 12], [3, 78]], [[0, 68], [3, 59], [1, 52], [2, 15]], [[2, 15], [1, 88], [0, 35], [3, 64]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 113, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 187, 'machine': 3, 'duration': 13}, {'task': 2, 'start': 239, 'machine': 1, 'duration': 18}, {'task': 3, 'start': 354, 'machine': 0, 'duration': 32}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 31, 'machine': 1, 'duration': 3}, {'task': 1, 'start': 68, 'machine': 0, 'duration': 86}, {'task': 2, 'start': 181, 'machine': 2, 'duration': 62}, {'task': 3, 'start': 347, 'machine': 3, 'duration': 27}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 31}, {'task': 1, 'start': 31, 'machine': 3, 'duration': 97}, {'task': 2, 'start': 128, 'machine': 2, 'duration': 53}, {'task': 3, 'start': 255, 'machine': 0, 'duration': 99}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 15, 'machine': 2, 'duration': 98}, {'task': 1, 'start': 189, 'machine': 0, 'duration': 66}, {'task': 2, 'start': 257, 'machine': 1, 'duration': 12}, {'task': 3, 'start': 269, 'machine': 3, 'duration': 78}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 68}, {'task': 1, 'start': 128, 'machine': 3, 'duration': 59}, {'task': 2, 'start': 187, 'machine': 1, 'duration': 52}, {'task': 3, 'start': 243, 'machine': 2, 'duration': 15}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 15}, {'task': 1, 'start': 34, 'machine': 1, 'duration': 88}, {'task': 2, 'start': 154, 'machine': 0, 'duration': 35}, {'task': 3, 'start': 200, 'machine': 3, 'duration': 64}]}]",386.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 4, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': [0, 1, 2, 3], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 2, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 3, 'duration': 13}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 1, 'duration': 18}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 0, 'duration': 32}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 1, 'duration': 3}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 0, 'duration': 86}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 2, 'duration': 62}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 3, 'duration': 27}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 1, 'duration': 31}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 3, 'duration': 97}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 2, 'duration': 53}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 0, 'duration': 99}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 2, 'duration': 98}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 0, 'duration': 66}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 1, 'duration': 12}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 3, 'duration': 78}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 0, 'duration': 68}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 3, 'duration': 59}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 1, 'duration': 52}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 2, 'duration': 15}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 2, 'duration': 15}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 1, 'duration': 88}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 0, 'duration': 35}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 3, 'duration': 64}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 113, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 187, 'machine': 3, 'duration': 13}, {'task': 2, 'start': 239, 'machine': 1, 'duration': 18}, {'task': 3, 'start': 354, 'machine': 0, 'duration': 32}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 31, 'machine': 1, 'duration': 3}, {'task': 1, 'start': 68, 'machine': 0, 'duration': 86}, {'task': 2, 'start': 181, 'machine': 2, 'duration': 62}, {'task': 3, 'start': 347, 'machine': 3, 'duration': 27}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 31}, {'task': 1, 'start': 31, 'machine': 3, 'duration': 97}, {'task': 2, 'start': 128, 'machine': 2, 'duration': 53}, {'task': 3, 'start': 255, 'machine': 0, 'duration': 99}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 15, 'machine': 2, 'duration': 98}, {'task': 1, 'start': 189, 'machine': 0, 'duration': 66}, {'task': 2, 'start': 257, 'machine': 1, 'duration': 12}, {'task': 3, 'start': 269, 'machine': 3, 'duration': 78}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 68}, {'task': 1, 'start': 128, 'machine': 3, 'duration': 59}, {'task': 2, 'start': 187, 'machine': 1, 'duration': 52}, {'task': 3, 'start': 243, 'machine': 2, 'duration': 15}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 15}, {'task': 1, 'start': 34, 'machine': 1, 'duration': 88}, {'task': 2, 'start': 154, 'machine': 0, 'duration': 35}, {'task': 3, 'start': 200, 'machine': 3, 'duration': 64}]}]",36,markdown_table,0 |
| JSP,JSP,"Iβm running the grading room this term and the job is to get a bunch of exam batches through their required review steps β each batch has its own little to-do list that must happen in order, and each step needs a particular workstation for a fixed amount of time. The tricky part is deciding who goes to which table when, since a workstation can only handle one review at a time and no step can be skipped or done twice. The better plans are the ones where the last batch gets finished earlier β success is measured by the clock time when the final batch is signed off. The exact batches, steps, stations and times are shown below. |
|
|
| { |
| ""num_batches"": 6, |
| ""num_workstations"": 3, |
| ""batch_ids"": [ |
| ""J1"", |
| ""J2"", |
| ""J3"", |
| ""J4"", |
| ""J5"", |
| ""J6"" |
| ], |
| ""workstation_ids"": [ |
| ""A"", |
| ""B"", |
| ""C"" |
| ], |
| ""tasks"": [ |
| { |
| ""batch_id"": ""J1"", |
| ""step_index"": 0, |
| ""required_workstation_id"": ""C"", |
| ""processing_time"": 1 |
| }, |
| { |
| ""batch_id"": ""J1"", |
| ""step_index"": 1, |
| ""required_workstation_id"": ""B"", |
| ""processing_time"": 26 |
| }, |
| { |
| ""batch_id"": ""J1"", |
| ""step_index"": 2, |
| ""required_workstation_id"": ""A"", |
| ""processing_time"": 93 |
| }, |
| { |
| ""batch_id"": ""J2"", |
| ""step_index"": 0, |
| ""required_workstation_id"": ""B"", |
| ""processing_time"": 77 |
| }, |
| { |
| ""batch_id"": ""J2"", |
| ""step_index"": 1, |
| ""required_workstation_id"": ""A"", |
| ""processing_time"": 56 |
| }, |
| { |
| ""batch_id"": ""J2"", |
| ""step_index"": 2, |
| ""required_workstation_id"": ""C"", |
| ""processing_time"": 8 |
| }, |
| { |
| ""batch_id"": ""J3"", |
| ""step_index"": 0, |
| ""required_workstation_id"": ""C"", |
| ""processing_time"": 67 |
| }, |
| { |
| ""batch_id"": ""J3"", |
| ""step_index"": 1, |
| ""required_workstation_id"": ""B"", |
| ""processing_time"": 95 |
| }, |
| { |
| ""batch_id"": ""J3"", |
| ""step_index"": 2, |
| ""required_workstation_id"": ""A"", |
| ""processing_time"": 98 |
| }, |
| { |
| ""batch_id"": ""J4"", |
| ""step_index"": 0, |
| ""required_workstation_id"": ""C"", |
| ""processing_time"": 90 |
| }, |
| { |
| ""batch_id"": ""J4"", |
| ""step_index"": 1, |
| ""required_workstation_id"": ""B"", |
| ""processing_time"": 91 |
| }, |
| { |
| ""batch_id"": ""J4"", |
| ""step_index"": 2, |
| ""required_workstation_id"": ""A"", |
| ""processing_time"": 51 |
| }, |
| { |
| ""batch_id"": ""J5"", |
| ""step_index"": 0, |
| ""required_workstation_id"": ""A"", |
| ""processing_time"": 81 |
| }, |
| { |
| ""batch_id"": ""J5"", |
| ""step_index"": 1, |
| ""required_workstation_id"": ""B"", |
| ""processing_time"": 69 |
| }, |
| { |
| ""batch_id"": ""J5"", |
| ""step_index"": 2, |
| ""required_workstation_id"": ""C"", |
| ""processing_time"": 17 |
| }, |
| { |
| ""batch_id"": ""J6"", |
| ""step_index"": 0, |
| ""required_workstation_id"": ""A"", |
| ""processing_time"": 32 |
| }, |
| { |
| ""batch_id"": ""J6"", |
| ""step_index"": 1, |
| ""required_workstation_id"": ""B"", |
| ""processing_time"": 35 |
| }, |
| { |
| ""batch_id"": ""J6"", |
| ""step_index"": 2, |
| ""required_workstation_id"": ""C"", |
| ""processing_time"": 60 |
| } |
| ] |
| } |
|
|
| Also, when you send the schedule back, please follow this JSON layout: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of this as a simple form: ""solution"" is a list of batches (jobs), each entry has the job identifier and a list of its ordered tasks. For each task you give the task index (which step it is in that job), the planned start time, the machine/workstation to use, and how long that step takes. This block is just a sketch of the shape I expect β fill it in with the actual ids and times when you submit the schedule. |
|
|
| Please use the identifiers exactly as they appear in the instance input β do not rename them and do not invent new labels. |
|
|
| Valid identifiers look like plain numbers such as ""1"" or ""23"", single capital letters like ""A"" or ""B"", or a capital letter followed by digits like ""A1"" or ""X7"".","{'nr_machines': 3, 'nr_jobs': 6, 'jobs': [[[2, 1], [1, 26], [0, 93]], [[1, 77], [0, 56], [2, 8]], [[2, 67], [1, 95], [0, 98]], [[2, 90], [1, 91], [0, 51]], [[0, 81], [1, 69], [2, 17]], [[0, 32], [1, 35], [2, 60]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 77, 'machine': 1, 'duration': 26}, {'task': 2, 'start': 113, 'machine': 0, 'duration': 93}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 77}, {'task': 1, 'start': 304, 'machine': 0, 'duration': 56}, {'task': 2, 'start': 384, 'machine': 2, 'duration': 8}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 1, 'machine': 2, 'duration': 67}, {'task': 1, 'start': 103, 'machine': 1, 'duration': 95}, {'task': 2, 'start': 206, 'machine': 0, 'duration': 98}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 68, 'machine': 2, 'duration': 90}, {'task': 1, 'start': 198, 'machine': 1, 'duration': 91}, {'task': 2, 'start': 360, 'machine': 0, 'duration': 51}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 81}, {'task': 1, 'start': 324, 'machine': 1, 'duration': 69}, {'task': 2, 'start': 393, 'machine': 2, 'duration': 17}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 81, 'machine': 0, 'duration': 32}, {'task': 1, 'start': 289, 'machine': 1, 'duration': 35}, {'task': 2, 'start': 324, 'machine': 2, 'duration': 60}]}]",411.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': ['A', 'B', 'C'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'C', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'B', 'duration': 26}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'A', 'duration': 93}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'B', 'duration': 77}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'A', 'duration': 56}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'C', 'duration': 8}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'C', 'duration': 67}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'B', 'duration': 95}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'A', 'duration': 98}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'C', 'duration': 90}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'B', 'duration': 91}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'A', 'duration': 51}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'A', 'duration': 81}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'B', 'duration': 69}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'C', 'duration': 17}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'A', 'duration': 32}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'B', 'duration': 35}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'C', 'duration': 60}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 1}, {'task': 1, 'start': 77, 'machine': 'B', 'duration': 26}, {'task': 2, 'start': 113, 'machine': 'A', 'duration': 93}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 77}, {'task': 1, 'start': 304, 'machine': 'A', 'duration': 56}, {'task': 2, 'start': 384, 'machine': 'C', 'duration': 8}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 1, 'machine': 'C', 'duration': 67}, {'task': 1, 'start': 103, 'machine': 'B', 'duration': 95}, {'task': 2, 'start': 206, 'machine': 'A', 'duration': 98}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 68, 'machine': 'C', 'duration': 90}, {'task': 1, 'start': 198, 'machine': 'B', 'duration': 91}, {'task': 2, 'start': 360, 'machine': 'A', 'duration': 51}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 'A', 'duration': 81}, {'task': 1, 'start': 324, 'machine': 'B', 'duration': 69}, {'task': 2, 'start': 393, 'machine': 'C', 'duration': 17}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 81, 'machine': 'A', 'duration': 32}, {'task': 1, 'start': 289, 'machine': 'B', 'duration': 35}, {'task': 2, 'start': 324, 'machine': 'C', 'duration': 60}]}]",37,json,names |
| JSP,JSP,"Someone on the team needs to line up the boxing, labeling, and sealing work so all product sets flow through their three steps without collisions on the machines. The choice is about timing and order: which set starts where and when, given each operationβs fixed duration and the rule that a machine can only do one task at once. Plans are judged by how quickly the entire batch is wrapped up β basically, the time on the clock when the last job is done β and the full list of sets, machines, and times appears below. |
|
|
| The list below shows 6 product sets, 4 packing machines, product set ids J1, J2, J3, J4, J5, J6, and machine ids 0, 1, 2, 3. |
|
|
| | product_set_id | operation_index | assigned_machine_id | processing_duration | |
| |---|---|---|---| |
| | J1 | 0 | 3 | 1 | |
| | J1 | 1 | 1 | 39 | |
| | J1 | 2 | 2 | 69 | |
| | J1 | 3 | 0 | 24 | |
| | J2 | 0 | 0 | 9 | |
| | J2 | 1 | 1 | 30 | |
| | J2 | 2 | 3 | 71 | |
| | J2 | 3 | 2 | 63 | |
| | J3 | 0 | 2 | 66 | |
| | J3 | 1 | 1 | 84 | |
| | J3 | 2 | 3 | 30 | |
| | J3 | 3 | 0 | 4 | |
| | J4 | 0 | 1 | 64 | |
| | J4 | 1 | 2 | 73 | |
| | J4 | 2 | 0 | 23 | |
| | J4 | 3 | 3 | 84 | |
| | J5 | 0 | 0 | 3 | |
| | J5 | 1 | 2 | 61 | |
| | J5 | 2 | 3 | 29 | |
| | J5 | 3 | 1 | 28 | |
| | J6 | 0 | 0 | 98 | |
| | J6 | 1 | 2 | 26 | |
| | J6 | 2 | 1 | 53 | |
| | J6 | 3 | 3 | 50 | |
|
|
| Use these entries to plan start times and ordering so machines never overlap and the entire batch finishes as quickly as possible. |
|
|
| Also, when you send back the proposed schedule, please use this simple JSON layout so it's easy to check and plug into the rest of the workflow. |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| This is just a sketch of the shape I need: each object in ""solution"" is one product set (job), ""job"" is its identifier, and ""tasks"" is the ordered list of steps for that set. For each task, ""task"" is the task's index in the job, ""start"" is the clock time it begins, ""machine"" is which machine does it, and ""duration"" is how long it runs. Think of it like filling out a little form for each set and each step. |
|
|
| Reminder: this JSON is only the expected shape β not the actual schedule. Use the exact identifiers from the instance input; do not rename them or invent new labels. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 4, 'nr_jobs': 6, 'jobs': [[[3, 1], [1, 39], [2, 69], [0, 24]], [[0, 9], [1, 30], [3, 71], [2, 63]], [[2, 66], [1, 84], [3, 30], [0, 4]], [[1, 64], [2, 73], [0, 23], [3, 84]], [[0, 3], [2, 61], [3, 29], [1, 28]], [[0, 98], [2, 26], [1, 53], [3, 50]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 94, 'machine': 1, 'duration': 39}, {'task': 2, 'start': 226, 'machine': 2, 'duration': 69}, {'task': 3, 'start': 295, 'machine': 0, 'duration': 24}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 9}, {'task': 1, 'start': 64, 'machine': 1, 'duration': 30}, {'task': 2, 'start': 94, 'machine': 3, 'duration': 71}, {'task': 3, 'start': 295, 'machine': 2, 'duration': 63}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 66}, {'task': 1, 'start': 133, 'machine': 1, 'duration': 84}, {'task': 2, 'start': 278, 'machine': 3, 'duration': 30}, {'task': 3, 'start': 319, 'machine': 0, 'duration': 4}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 64}, {'task': 1, 'start': 66, 'machine': 2, 'duration': 73}, {'task': 2, 'start': 139, 'machine': 0, 'duration': 23}, {'task': 3, 'start': 165, 'machine': 3, 'duration': 84}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 107, 'machine': 0, 'duration': 3}, {'task': 1, 'start': 139, 'machine': 2, 'duration': 61}, {'task': 2, 'start': 249, 'machine': 3, 'duration': 29}, {'task': 3, 'start': 279, 'machine': 1, 'duration': 28}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 9, 'machine': 0, 'duration': 98}, {'task': 1, 'start': 200, 'machine': 2, 'duration': 26}, {'task': 2, 'start': 226, 'machine': 1, 'duration': 53}, {'task': 3, 'start': 308, 'machine': 3, 'duration': 50}]}]",358.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 4, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': [0, 1, 2, 3], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 3, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 1, 'duration': 39}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 2, 'duration': 69}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 0, 'duration': 24}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 0, 'duration': 9}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 1, 'duration': 30}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 3, 'duration': 71}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 2, 'duration': 63}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 2, 'duration': 66}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 1, 'duration': 84}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 3, 'duration': 30}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 0, 'duration': 4}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 1, 'duration': 64}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 2, 'duration': 73}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 0, 'duration': 23}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 3, 'duration': 84}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 0, 'duration': 3}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 2, 'duration': 61}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 3, 'duration': 29}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 1, 'duration': 28}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 0, 'duration': 98}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 2, 'duration': 26}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 1, 'duration': 53}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 3, 'duration': 50}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 94, 'machine': 1, 'duration': 39}, {'task': 2, 'start': 226, 'machine': 2, 'duration': 69}, {'task': 3, 'start': 295, 'machine': 0, 'duration': 24}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 9}, {'task': 1, 'start': 64, 'machine': 1, 'duration': 30}, {'task': 2, 'start': 94, 'machine': 3, 'duration': 71}, {'task': 3, 'start': 295, 'machine': 2, 'duration': 63}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 66}, {'task': 1, 'start': 133, 'machine': 1, 'duration': 84}, {'task': 2, 'start': 278, 'machine': 3, 'duration': 30}, {'task': 3, 'start': 319, 'machine': 0, 'duration': 4}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 64}, {'task': 1, 'start': 66, 'machine': 2, 'duration': 73}, {'task': 2, 'start': 139, 'machine': 0, 'duration': 23}, {'task': 3, 'start': 165, 'machine': 3, 'duration': 84}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 107, 'machine': 0, 'duration': 3}, {'task': 1, 'start': 139, 'machine': 2, 'duration': 61}, {'task': 2, 'start': 249, 'machine': 3, 'duration': 29}, {'task': 3, 'start': 279, 'machine': 1, 'duration': 28}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 9, 'machine': 0, 'duration': 98}, {'task': 1, 'start': 200, 'machine': 2, 'duration': 26}, {'task': 2, 'start': 226, 'machine': 1, 'duration': 53}, {'task': 3, 'start': 308, 'machine': 3, 'duration': 50}]}]",38,markdown_table,0 |
| JSP,JSP,"Back when planning a large banquet, the coordinator treated every entree like a mini assembly line: a fixed sequence of actions on named stations, each action taking a known amount of time and not to be skipped or repeated. The decision was how to schedule those actions across stations so none overlap on a single station and every recipe keeps its order. Success is measured by how soon the whole job is done β check the finish time of each dish and the latest of those finish times is the overall completion time to make as small as possible. The detailed list of dishes, stations, and durations is provided below. |
|
|
| The list specified 7 menu items and 4 stations; menu IDs were J1, J2, J3, J4, J5, J6, J7 and station IDs were A, B, C, D. |
| Menu J1 stage 0 required station D and took 1 minutes. |
| Menu J1 stage 1 required station B and took 52 minutes. |
| Menu J1 stage 2 required station C and took 45 minutes. |
| Menu J1 stage 3 required station A and took 69 minutes. |
| Menu J2 stage 0 required station B and took 62 minutes. |
| Menu J2 stage 1 required station C and took 52 minutes. |
| Menu J2 stage 2 required station D and took 76 minutes. |
| Menu J2 stage 3 required station A and took 31 minutes. |
| Menu J3 stage 0 required station B and took 35 minutes. |
| Menu J3 stage 1 required station D and took 77 minutes. |
| Menu J3 stage 2 required station C and took 68 minutes. |
| Menu J3 stage 3 required station A and took 55 minutes. |
| Menu J4 stage 0 required station A and took 48 minutes. |
| Menu J4 stage 1 required station B and took 76 minutes. |
| Menu J4 stage 2 required station D and took 28 minutes. |
| Menu J4 stage 3 required station C and took 38 minutes. |
| Menu J5 stage 0 required station D and took 69 minutes. |
| Menu J5 stage 1 required station C and took 61 minutes. |
| Menu J5 stage 2 required station B and took 67 minutes. |
| Menu J5 stage 3 required station A and took 35 minutes. |
| Menu J6 stage 0 required station C and took 40 minutes. |
| Menu J6 stage 1 required station D and took 94 minutes. |
| Menu J6 stage 2 required station A and took 12 minutes. |
| Menu J6 stage 3 required station B and took 44 minutes. |
| Menu J7 stage 0 required station B and took 69 minutes. |
| Menu J7 stage 1 required station A and took 16 minutes. |
| Menu J7 stage 2 required station C and took 36 minutes. |
| Menu J7 stage 3 required station D and took 32 minutes. |
| With every stage recorded this way, the coordinator could seek the schedule that minimized the banquet's overall completion time. |
|
|
| Also, to keep things simple for me to read and for you to check, please give the schedule using this JSON shape. |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it like a little form: ""solution"" is a list of the dishes (jobs). Each job object has the job id and a list of its tasks. Each task entry says which step number it is, when that step starts, which station (machine) it uses, and how long it runs. Pretty straightforward β this block is just the expected shape, not the actual schedule. |
|
|
| Please make sure all identifiers are used exactly as they appear in the instance input β no renaming and no new labels. |
|
|
| For example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β"".","{'nr_machines': 4, 'nr_jobs': 7, 'jobs': [[[3, 1], [1, 52], [2, 45], [0, 69]], [[1, 62], [2, 52], [3, 76], [0, 31]], [[1, 35], [3, 77], [2, 68], [0, 55]], [[0, 48], [1, 76], [3, 28], [2, 38]], [[3, 69], [2, 61], [1, 67], [0, 35]], [[2, 40], [3, 94], [0, 12], [1, 44]], [[1, 69], [0, 16], [2, 36], [3, 32]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 1, 'machine': 1, 'duration': 52}, {'task': 2, 'start': 53, 'machine': 2, 'duration': 45}, {'task': 3, 'start': 98, 'machine': 0, 'duration': 69}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 88, 'machine': 1, 'duration': 62}, {'task': 1, 'start': 159, 'machine': 2, 'duration': 52}, {'task': 2, 'start': 259, 'machine': 3, 'duration': 76}, {'task': 3, 'start': 335, 'machine': 0, 'duration': 31}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 53, 'machine': 1, 'duration': 35}, {'task': 1, 'start': 88, 'machine': 3, 'duration': 77}, {'task': 2, 'start': 211, 'machine': 2, 'duration': 68}, {'task': 3, 'start': 279, 'machine': 0, 'duration': 55}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 48}, {'task': 1, 'start': 219, 'machine': 1, 'duration': 76}, {'task': 2, 'start': 335, 'machine': 3, 'duration': 28}, {'task': 3, 'start': 363, 'machine': 2, 'duration': 38}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 1, 'machine': 3, 'duration': 69}, {'task': 1, 'start': 98, 'machine': 2, 'duration': 61}, {'task': 2, 'start': 295, 'machine': 1, 'duration': 67}, {'task': 3, 'start': 366, 'machine': 0, 'duration': 35}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 40}, {'task': 1, 'start': 165, 'machine': 3, 'duration': 94}, {'task': 2, 'start': 259, 'machine': 0, 'duration': 12}, {'task': 3, 'start': 362, 'machine': 1, 'duration': 44}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 150, 'machine': 1, 'duration': 69}, {'task': 1, 'start': 219, 'machine': 0, 'duration': 16}, {'task': 2, 'start': 279, 'machine': 2, 'duration': 36}, {'task': 3, 'start': 363, 'machine': 3, 'duration': 32}]}]",406.0,"{'problem_type': 'JSP', 'nr_jobs': 7, 'nr_machines': 4, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7'], 'machines': ['A', 'B', 'C', 'D'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'D', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'B', 'duration': 52}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'C', 'duration': 45}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 'A', 'duration': 69}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'B', 'duration': 62}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'C', 'duration': 52}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'D', 'duration': 76}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 'A', 'duration': 31}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'B', 'duration': 35}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'D', 'duration': 77}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'C', 'duration': 68}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 'A', 'duration': 55}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'A', 'duration': 48}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'B', 'duration': 76}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'D', 'duration': 28}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 'C', 'duration': 38}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'D', 'duration': 69}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'C', 'duration': 61}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'B', 'duration': 67}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 'A', 'duration': 35}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'C', 'duration': 40}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'D', 'duration': 94}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'A', 'duration': 12}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 'B', 'duration': 44}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 'B', 'duration': 69}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 'A', 'duration': 16}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 'C', 'duration': 36}, {'job_id': 'J7', 'task_id': 3, 'machine_id': 'D', 'duration': 32}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 'D', 'duration': 1}, {'task': 1, 'start': 1, 'machine': 'B', 'duration': 52}, {'task': 2, 'start': 53, 'machine': 'C', 'duration': 45}, {'task': 3, 'start': 98, 'machine': 'A', 'duration': 69}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 88, 'machine': 'B', 'duration': 62}, {'task': 1, 'start': 159, 'machine': 'C', 'duration': 52}, {'task': 2, 'start': 259, 'machine': 'D', 'duration': 76}, {'task': 3, 'start': 335, 'machine': 'A', 'duration': 31}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 53, 'machine': 'B', 'duration': 35}, {'task': 1, 'start': 88, 'machine': 'D', 'duration': 77}, {'task': 2, 'start': 211, 'machine': 'C', 'duration': 68}, {'task': 3, 'start': 279, 'machine': 'A', 'duration': 55}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 'A', 'duration': 48}, {'task': 1, 'start': 219, 'machine': 'B', 'duration': 76}, {'task': 2, 'start': 335, 'machine': 'D', 'duration': 28}, {'task': 3, 'start': 363, 'machine': 'C', 'duration': 38}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 1, 'machine': 'D', 'duration': 69}, {'task': 1, 'start': 98, 'machine': 'C', 'duration': 61}, {'task': 2, 'start': 295, 'machine': 'B', 'duration': 67}, {'task': 3, 'start': 366, 'machine': 'A', 'duration': 35}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 40}, {'task': 1, 'start': 165, 'machine': 'D', 'duration': 94}, {'task': 2, 'start': 259, 'machine': 'A', 'duration': 12}, {'task': 3, 'start': 362, 'machine': 'B', 'duration': 44}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 150, 'machine': 'B', 'duration': 69}, {'task': 1, 'start': 219, 'machine': 'A', 'duration': 16}, {'task': 2, 'start': 279, 'machine': 'C', 'duration': 36}, {'task': 3, 'start': 363, 'machine': 'D', 'duration': 32}]}]",39,nl,names |
| JSP,JSP,"Someone at the shop needs to map out the day: multiple cars, each with a fixed sequence of repairs, and every repair needs a particular lift or diagnostic bay for a set period. The planner must slot each step into its assigned bay without breaking the per-car order, avoid doing any step twice or skipping one, and never double-book a bay. The whole point is to minimize how long the shop takes to get all cars ready β the clock that matters is when the final vehicle finishes, and sooner is clearly preferred. Full details about which car needs what and how long each thing takes are listed below. |
|
|
| The planner has 8 vehicles to schedule across 4 service bays; vehicle IDs: J1, J2, J3, J4, J5, J6, J7, J8; bay IDs: 0, 1, 2, 3. |
| For vehicle J1, step 0 must be performed at service bay 1 for 1. |
| For vehicle J1, step 1 must be performed at service bay 2 for 65. |
| For vehicle J1, step 2 must be performed at service bay 3 for 21. |
| For vehicle J1, step 3 must be performed at service bay 0 for 15. |
| For vehicle J2, step 0 must be performed at service bay 1 for 16. |
| For vehicle J2, step 1 must be performed at service bay 0 for 73. |
| For vehicle J2, step 2 must be performed at service bay 3 for 81. |
| For vehicle J2, step 3 must be performed at service bay 2 for 98. |
| For vehicle J3, step 0 must be performed at service bay 0 for 3. |
| For vehicle J3, step 1 must be performed at service bay 2 for 71. |
| For vehicle J3, step 2 must be performed at service bay 3 for 7. |
| For vehicle J3, step 3 must be performed at service bay 1 for 8. |
| For vehicle J4, step 0 must be performed at service bay 1 for 31. |
| For vehicle J4, step 1 must be performed at service bay 3 for 80. |
| For vehicle J4, step 2 must be performed at service bay 0 for 33. |
| For vehicle J4, step 3 must be performed at service bay 2 for 90. |
| For vehicle J5, step 0 must be performed at service bay 0 for 36. |
| For vehicle J5, step 1 must be performed at service bay 2 for 62. |
| For vehicle J5, step 2 must be performed at service bay 1 for 6. |
| For vehicle J5, step 3 must be performed at service bay 3 for 42. |
| For vehicle J6, step 0 must be performed at service bay 0 for 81. |
| For vehicle J6, step 1 must be performed at service bay 1 for 63. |
| For vehicle J6, step 2 must be performed at service bay 2 for 71. |
| For vehicle J6, step 3 must be performed at service bay 3 for 37. |
| For vehicle J7, step 0 must be performed at service bay 3 for 54. |
| For vehicle J7, step 1 must be performed at service bay 1 for 68. |
| For vehicle J7, step 2 must be performed at service bay 2 for 45. |
| For vehicle J7, step 3 must be performed at service bay 0 for 96. |
| For vehicle J8, step 0 must be performed at service bay 0 for 69. |
| For vehicle J8, step 1 must be performed at service bay 2 for 79. |
| For vehicle J8, step 2 must be performed at service bay 3 for 73. |
| For vehicle J8, step 3 must be performed at service bay 1 for 74. |
| Slot each listed step in sequence on its assigned bay, never skipping or repeating a step and avoiding any bay overlap, so the last vehicle finishes as soon as possible. |
|
|
| Also, when you send the schedule back, just use a simple JSON shape like this so I can read it easily: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <car_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <bay_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it as a little form: ""solution"" is the list of cars, each ""job"" is the car identifier, and the ""tasks"" list shows each repair step with when it starts, which bay it uses, and how long it takes. It's just a sketch of the shape I expect, not the final schedule. |
|
|
| Please use the exact identifiers from the instance input β don't rename anything and don't invent new labels. |
| - for example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 4, 'nr_jobs': 8, 'jobs': [[[1, 1], [2, 65], [3, 21], [0, 15]], [[1, 16], [0, 73], [3, 81], [2, 98]], [[0, 3], [2, 71], [3, 7], [1, 8]], [[1, 31], [3, 80], [0, 33], [2, 90]], [[0, 36], [2, 62], [1, 6], [3, 42]], [[0, 81], [1, 63], [2, 71], [3, 37]], [[3, 54], [1, 68], [2, 45], [0, 96]], [[0, 69], [2, 79], [3, 73], [1, 74]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 1, 'machine': 2, 'duration': 65}, {'task': 2, 'start': 134, 'machine': 3, 'duration': 21}, {'task': 3, 'start': 391, 'machine': 0, 'duration': 15}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 1, 'machine': 1, 'duration': 16}, {'task': 1, 'start': 153, 'machine': 0, 'duration': 73}, {'task': 2, 'start': 226, 'machine': 3, 'duration': 81}, {'task': 3, 'start': 394, 'machine': 2, 'duration': 98}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 3}, {'task': 1, 'start': 66, 'machine': 2, 'duration': 71}, {'task': 2, 'start': 155, 'machine': 3, 'duration': 7}, {'task': 3, 'start': 185, 'machine': 1, 'duration': 8}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 17, 'machine': 1, 'duration': 31}, {'task': 1, 'start': 54, 'machine': 3, 'duration': 80}, {'task': 2, 'start': 262, 'machine': 0, 'duration': 33}, {'task': 3, 'start': 492, 'machine': 2, 'duration': 90}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 226, 'machine': 0, 'duration': 36}, {'task': 1, 'start': 332, 'machine': 2, 'duration': 62}, {'task': 2, 'start': 454, 'machine': 1, 'duration': 6}, {'task': 3, 'start': 460, 'machine': 3, 'duration': 42}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 3, 'machine': 0, 'duration': 81}, {'task': 1, 'start': 122, 'machine': 1, 'duration': 63}, {'task': 2, 'start': 261, 'machine': 2, 'duration': 71}, {'task': 3, 'start': 380, 'machine': 3, 'duration': 37}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 54}, {'task': 1, 'start': 54, 'machine': 1, 'duration': 68}, {'task': 2, 'start': 137, 'machine': 2, 'duration': 45}, {'task': 3, 'start': 295, 'machine': 0, 'duration': 96}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 84, 'machine': 0, 'duration': 69}, {'task': 1, 'start': 182, 'machine': 2, 'duration': 79}, {'task': 2, 'start': 307, 'machine': 3, 'duration': 73}, {'task': 3, 'start': 380, 'machine': 1, 'duration': 74}]}]",582.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 4, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': [0, 1, 2, 3], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 1, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 2, 'duration': 65}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 3, 'duration': 21}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 0, 'duration': 15}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 1, 'duration': 16}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 0, 'duration': 73}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 3, 'duration': 81}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 2, 'duration': 98}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 0, 'duration': 3}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 2, 'duration': 71}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 3, 'duration': 7}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 1, 'duration': 8}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 1, 'duration': 31}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 3, 'duration': 80}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 0, 'duration': 33}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 2, 'duration': 90}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 0, 'duration': 36}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 2, 'duration': 62}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 1, 'duration': 6}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 3, 'duration': 42}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 0, 'duration': 81}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 1, 'duration': 63}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 2, 'duration': 71}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 3, 'duration': 37}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 3, 'duration': 54}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 1, 'duration': 68}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 2, 'duration': 45}, {'job_id': 'J7', 'task_id': 3, 'machine_id': 0, 'duration': 96}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 0, 'duration': 69}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 2, 'duration': 79}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 3, 'duration': 73}, {'job_id': 'J8', 'task_id': 3, 'machine_id': 1, 'duration': 74}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 1, 'machine': 2, 'duration': 65}, {'task': 2, 'start': 134, 'machine': 3, 'duration': 21}, {'task': 3, 'start': 391, 'machine': 0, 'duration': 15}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 1, 'machine': 1, 'duration': 16}, {'task': 1, 'start': 153, 'machine': 0, 'duration': 73}, {'task': 2, 'start': 226, 'machine': 3, 'duration': 81}, {'task': 3, 'start': 394, 'machine': 2, 'duration': 98}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 3}, {'task': 1, 'start': 66, 'machine': 2, 'duration': 71}, {'task': 2, 'start': 155, 'machine': 3, 'duration': 7}, {'task': 3, 'start': 185, 'machine': 1, 'duration': 8}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 17, 'machine': 1, 'duration': 31}, {'task': 1, 'start': 54, 'machine': 3, 'duration': 80}, {'task': 2, 'start': 262, 'machine': 0, 'duration': 33}, {'task': 3, 'start': 492, 'machine': 2, 'duration': 90}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 226, 'machine': 0, 'duration': 36}, {'task': 1, 'start': 332, 'machine': 2, 'duration': 62}, {'task': 2, 'start': 454, 'machine': 1, 'duration': 6}, {'task': 3, 'start': 460, 'machine': 3, 'duration': 42}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 3, 'machine': 0, 'duration': 81}, {'task': 1, 'start': 122, 'machine': 1, 'duration': 63}, {'task': 2, 'start': 261, 'machine': 2, 'duration': 71}, {'task': 3, 'start': 380, 'machine': 3, 'duration': 37}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 54}, {'task': 1, 'start': 54, 'machine': 1, 'duration': 68}, {'task': 2, 'start': 137, 'machine': 2, 'duration': 45}, {'task': 3, 'start': 295, 'machine': 0, 'duration': 96}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 84, 'machine': 0, 'duration': 69}, {'task': 1, 'start': 182, 'machine': 2, 'duration': 79}, {'task': 2, 'start': 307, 'machine': 3, 'duration': 73}, {'task': 3, 'start': 380, 'machine': 1, 'duration': 74}]}]",40,nl,0 |
| JSP,JSP,"I was picturing the sewing room as a little juggling act: several outfits need stitching, then pressing, then finishing, and each outfit has its own order of steps that canβt be skipped or shuffled. The job is to assign those stitching, pressing and finishing tasks to the available sewing machines and presses so each task runs on its assigned machine for its given time, and no machine tries to do two things at once. The trick is to lay out the work so the whole batch is done as quickly as possible β in plain terms, look at when the last outfit is finished and make that moment as early as you can. The exact list of outfits, machines and how long each step takes is shown below. |
|
|
| { |
| ""total_outfits"": 6, |
| ""total_machines"": 4, |
| ""outfit_ids"": [ |
| ""J1"", |
| ""J2"", |
| ""J3"", |
| ""J4"", |
| ""J5"", |
| ""J6"" |
| ], |
| ""machine_ids"": [ |
| ""A"", |
| ""B"", |
| ""C"", |
| ""D"" |
| ], |
| ""tasks"": [ |
| { |
| ""outfit_id"": ""J1"", |
| ""operation_index"": 0, |
| ""required_machine_id"": ""B"", |
| ""processing_time"": 1 |
| }, |
| { |
| ""outfit_id"": ""J1"", |
| ""operation_index"": 1, |
| ""required_machine_id"": ""C"", |
| ""processing_time"": 78 |
| }, |
| { |
| ""outfit_id"": ""J1"", |
| ""operation_index"": 2, |
| ""required_machine_id"": ""D"", |
| ""processing_time"": 96 |
| }, |
| { |
| ""outfit_id"": ""J1"", |
| ""operation_index"": 3, |
| ""required_machine_id"": ""A"", |
| ""processing_time"": 61 |
| }, |
| { |
| ""outfit_id"": ""J2"", |
| ""operation_index"": 0, |
| ""required_machine_id"": ""D"", |
| ""processing_time"": 69 |
| }, |
| { |
| ""outfit_id"": ""J2"", |
| ""operation_index"": 1, |
| ""required_machine_id"": ""C"", |
| ""processing_time"": 95 |
| }, |
| { |
| ""outfit_id"": ""J2"", |
| ""operation_index"": 2, |
| ""required_machine_id"": ""B"", |
| ""processing_time"": 85 |
| }, |
| { |
| ""outfit_id"": ""J2"", |
| ""operation_index"": 3, |
| ""required_machine_id"": ""A"", |
| ""processing_time"": 67 |
| }, |
| { |
| ""outfit_id"": ""J3"", |
| ""operation_index"": 0, |
| ""required_machine_id"": ""C"", |
| ""processing_time"": 70 |
| }, |
| { |
| ""outfit_id"": ""J3"", |
| ""operation_index"": 1, |
| ""required_machine_id"": ""D"", |
| ""processing_time"": 64 |
| }, |
| { |
| ""outfit_id"": ""J3"", |
| ""operation_index"": 2, |
| ""required_machine_id"": ""A"", |
| ""processing_time"": 45 |
| }, |
| { |
| ""outfit_id"": ""J3"", |
| ""operation_index"": 3, |
| ""required_machine_id"": ""B"", |
| ""processing_time"": 59 |
| }, |
| { |
| ""outfit_id"": ""J4"", |
| ""operation_index"": 0, |
| ""required_machine_id"": ""A"", |
| ""processing_time"": 14 |
| }, |
| { |
| ""outfit_id"": ""J4"", |
| ""operation_index"": 1, |
| ""required_machine_id"": ""D"", |
| ""processing_time"": 83 |
| }, |
| { |
| ""outfit_id"": ""J4"", |
| ""operation_index"": 2, |
| ""required_machine_id"": ""B"", |
| ""processing_time"": 39 |
| }, |
| { |
| ""outfit_id"": ""J4"", |
| ""operation_index"": 3, |
| ""required_machine_id"": ""C"", |
| ""processing_time"": 44 |
| }, |
| { |
| ""outfit_id"": ""J5"", |
| ""operation_index"": 0, |
| ""required_machine_id"": ""C"", |
| ""processing_time"": 4 |
| }, |
| { |
| ""outfit_id"": ""J5"", |
| ""operation_index"": 1, |
| ""required_machine_id"": ""A"", |
| ""processing_time"": 63 |
| }, |
| { |
| ""outfit_id"": ""J5"", |
| ""operation_index"": 2, |
| ""required_machine_id"": ""B"", |
| ""processing_time"": 44 |
| }, |
| { |
| ""outfit_id"": ""J5"", |
| ""operation_index"": 3, |
| ""required_machine_id"": ""D"", |
| ""processing_time"": 48 |
| }, |
| { |
| ""outfit_id"": ""J6"", |
| ""operation_index"": 0, |
| ""required_machine_id"": ""A"", |
| ""processing_time"": 24 |
| }, |
| { |
| ""outfit_id"": ""J6"", |
| ""operation_index"": 1, |
| ""required_machine_id"": ""C"", |
| ""processing_time"": 32 |
| }, |
| { |
| ""outfit_id"": ""J6"", |
| ""operation_index"": 2, |
| ""required_machine_id"": ""D"", |
| ""processing_time"": 30 |
| }, |
| { |
| ""outfit_id"": ""J6"", |
| ""operation_index"": 3, |
| ""required_machine_id"": ""B"", |
| ""processing_time"": 30 |
| } |
| ] |
| } |
|
|
| Oh, and one more thing β when you send the schedule back, a small JSON sketch like the one below makes it super easy to read and plug into whatever tool you're using. Hereβs the shape I expect: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it like a simple form: each entry in ""solution"" is one outfit (job), ""job"" is that outfit's id, and ""tasks"" is the ordered list of steps for that outfit. For each step you give the step number (""task""), when it starts (""start"" β absolute time), which machine it runs on (""machine""), and how long it runs (""duration""). This is just the layout β a sketch of the shape I want, not the actual schedule. |
|
|
| Please use the exact identifiers from the instance input β don't rename jobs or machines or invent new labels. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 4, 'nr_jobs': 6, 'jobs': [[[1, 1], [2, 78], [3, 96], [0, 61]], [[3, 69], [2, 95], [1, 85], [0, 67]], [[2, 70], [3, 64], [0, 45], [1, 59]], [[0, 14], [3, 83], [1, 39], [2, 44]], [[2, 4], [0, 63], [1, 44], [3, 48]], [[0, 24], [2, 32], [3, 30], [1, 30]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 74, 'machine': 2, 'duration': 78}, {'task': 2, 'start': 152, 'machine': 3, 'duration': 96}, {'task': 3, 'start': 248, 'machine': 0, 'duration': 61}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 69}, {'task': 1, 'start': 152, 'machine': 2, 'duration': 95}, {'task': 2, 'start': 247, 'machine': 1, 'duration': 85}, {'task': 3, 'start': 332, 'machine': 0, 'duration': 67}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 4, 'machine': 2, 'duration': 70}, {'task': 1, 'start': 74, 'machine': 3, 'duration': 64}, {'task': 2, 'start': 138, 'machine': 0, 'duration': 45}, {'task': 3, 'start': 186, 'machine': 1, 'duration': 59}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 120, 'machine': 0, 'duration': 14}, {'task': 1, 'start': 248, 'machine': 3, 'duration': 83}, {'task': 2, 'start': 332, 'machine': 1, 'duration': 39}, {'task': 3, 'start': 371, 'machine': 2, 'duration': 44}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 4}, {'task': 1, 'start': 24, 'machine': 0, 'duration': 63}, {'task': 2, 'start': 108, 'machine': 1, 'duration': 44}, {'task': 3, 'start': 361, 'machine': 3, 'duration': 48}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 24}, {'task': 1, 'start': 247, 'machine': 2, 'duration': 32}, {'task': 2, 'start': 331, 'machine': 3, 'duration': 30}, {'task': 3, 'start': 371, 'machine': 1, 'duration': 30}]}]",415.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 4, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': ['A', 'B', 'C', 'D'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'B', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'C', 'duration': 78}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'D', 'duration': 96}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 'A', 'duration': 61}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'D', 'duration': 69}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'C', 'duration': 95}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'B', 'duration': 85}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 'A', 'duration': 67}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'C', 'duration': 70}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'D', 'duration': 64}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'A', 'duration': 45}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 'B', 'duration': 59}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'A', 'duration': 14}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'D', 'duration': 83}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'B', 'duration': 39}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 'C', 'duration': 44}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'C', 'duration': 4}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'A', 'duration': 63}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'B', 'duration': 44}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 'D', 'duration': 48}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'A', 'duration': 24}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'C', 'duration': 32}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'D', 'duration': 30}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 'B', 'duration': 30}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 1}, {'task': 1, 'start': 74, 'machine': 'C', 'duration': 78}, {'task': 2, 'start': 152, 'machine': 'D', 'duration': 96}, {'task': 3, 'start': 248, 'machine': 'A', 'duration': 61}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 'D', 'duration': 69}, {'task': 1, 'start': 152, 'machine': 'C', 'duration': 95}, {'task': 2, 'start': 247, 'machine': 'B', 'duration': 85}, {'task': 3, 'start': 332, 'machine': 'A', 'duration': 67}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 4, 'machine': 'C', 'duration': 70}, {'task': 1, 'start': 74, 'machine': 'D', 'duration': 64}, {'task': 2, 'start': 138, 'machine': 'A', 'duration': 45}, {'task': 3, 'start': 186, 'machine': 'B', 'duration': 59}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 120, 'machine': 'A', 'duration': 14}, {'task': 1, 'start': 248, 'machine': 'D', 'duration': 83}, {'task': 2, 'start': 332, 'machine': 'B', 'duration': 39}, {'task': 3, 'start': 371, 'machine': 'C', 'duration': 44}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 4}, {'task': 1, 'start': 24, 'machine': 'A', 'duration': 63}, {'task': 2, 'start': 108, 'machine': 'B', 'duration': 44}, {'task': 3, 'start': 361, 'machine': 'D', 'duration': 48}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 'A', 'duration': 24}, {'task': 1, 'start': 247, 'machine': 'C', 'duration': 32}, {'task': 2, 'start': 331, 'machine': 'D', 'duration': 30}, {'task': 3, 'start': 371, 'machine': 'B', 'duration': 30}]}]",41,json,names |
| JSP,JSP,"At the venue the planner must slot setup, practice, and teardown for multiple events into the available rooms and equipment, honoring the order of steps for each event and the exact durations each activity needs. No room or piece of gear can host two activities at the same time, and every activity must be scheduled in its required place. The clearest way to pick the best arrangement is to look at when the final activity ends; the earlier that finish time, the better the schedule. The detailed events, spaces, and durations are shown below. |
|
|
| There are 7 events to place across 3 resources: event identifiers J1, J2, J3, J4, J5, J6, J7 and resource identifiers A, B, C. |
|
|
| | event_id | activity_index | resource_id | activity_duration | |
| |---|---|---|---| |
| | J1 | 0 | B | 1 | |
| | J1 | 1 | C | 91 | |
| | J1 | 2 | A | 71 | |
| | J2 | 0 | A | 7 | |
| | J2 | 1 | B | 22 | |
| | J2 | 2 | C | 18 | |
| | J3 | 0 | A | 90 | |
| | J3 | 1 | B | 35 | |
| | J3 | 2 | C | 38 | |
| | J4 | 0 | A | 58 | |
| | J4 | 1 | C | 83 | |
| | J4 | 2 | B | 12 | |
| | J5 | 0 | A | 97 | |
| | J5 | 1 | C | 87 | |
| | J5 | 2 | B | 44 | |
| | J6 | 0 | B | 96 | |
| | J6 | 1 | A | 70 | |
| | J6 | 2 | C | 64 | |
| | J7 | 0 | A | 82 | |
| | J7 | 1 | C | 55 | |
| | J7 | 2 | B | 65 | |
|
|
| The schedule is judged by the completion time of the final activity across all 7 events; earlier completion is better. |
|
|
| One more thing β to keep things consistent, please structure your reply using this simple JSON layout: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it like a short form: each top-level entry is a job (an event), its tasks are listed in order, and each task says which step number it is, when it starts, which room or piece of gear it uses, and how long it runs. This JSON is just a sketch of the shape I need, not the actual schedule β fill it with the real values when you answer. |
|
|
| Please use the exact identifiers from the instance input β donβt rename them or invent new labels. |
| - for example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 3, 'nr_jobs': 7, 'jobs': [[[1, 1], [2, 91], [0, 71]], [[0, 7], [1, 22], [2, 18]], [[0, 90], [1, 35], [2, 38]], [[0, 58], [2, 83], [1, 12]], [[0, 97], [2, 87], [1, 44]], [[1, 96], [0, 70], [2, 64]], [[0, 82], [2, 55], [1, 65]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 1, 'machine': 2, 'duration': 91}, {'task': 2, 'start': 404, 'machine': 0, 'duration': 71}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 7}, {'task': 1, 'start': 97, 'machine': 1, 'duration': 22}, {'task': 2, 'start': 329, 'machine': 2, 'duration': 18}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 244, 'machine': 0, 'duration': 90}, {'task': 1, 'start': 334, 'machine': 1, 'duration': 35}, {'task': 2, 'start': 369, 'machine': 2, 'duration': 38}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 186, 'machine': 0, 'duration': 58}, {'task': 1, 'start': 246, 'machine': 2, 'duration': 83}, {'task': 2, 'start': 369, 'machine': 1, 'duration': 12}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 7, 'machine': 0, 'duration': 97}, {'task': 1, 'start': 104, 'machine': 2, 'duration': 87}, {'task': 2, 'start': 191, 'machine': 1, 'duration': 44}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 1, 'machine': 1, 'duration': 96}, {'task': 1, 'start': 334, 'machine': 0, 'duration': 70}, {'task': 2, 'start': 407, 'machine': 2, 'duration': 64}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 104, 'machine': 0, 'duration': 82}, {'task': 1, 'start': 191, 'machine': 2, 'duration': 55}, {'task': 2, 'start': 246, 'machine': 1, 'duration': 65}]}]",475.0,"{'problem_type': 'JSP', 'nr_jobs': 7, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7'], 'machines': ['A', 'B', 'C'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'B', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'C', 'duration': 91}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'A', 'duration': 71}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'A', 'duration': 7}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'B', 'duration': 22}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'C', 'duration': 18}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'A', 'duration': 90}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'B', 'duration': 35}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'C', 'duration': 38}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'A', 'duration': 58}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'C', 'duration': 83}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'B', 'duration': 12}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'A', 'duration': 97}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'C', 'duration': 87}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'B', 'duration': 44}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'B', 'duration': 96}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'A', 'duration': 70}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'C', 'duration': 64}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 'A', 'duration': 82}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 'C', 'duration': 55}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 'B', 'duration': 65}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 1}, {'task': 1, 'start': 1, 'machine': 'C', 'duration': 91}, {'task': 2, 'start': 404, 'machine': 'A', 'duration': 71}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 'A', 'duration': 7}, {'task': 1, 'start': 97, 'machine': 'B', 'duration': 22}, {'task': 2, 'start': 329, 'machine': 'C', 'duration': 18}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 244, 'machine': 'A', 'duration': 90}, {'task': 1, 'start': 334, 'machine': 'B', 'duration': 35}, {'task': 2, 'start': 369, 'machine': 'C', 'duration': 38}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 186, 'machine': 'A', 'duration': 58}, {'task': 1, 'start': 246, 'machine': 'C', 'duration': 83}, {'task': 2, 'start': 369, 'machine': 'B', 'duration': 12}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 7, 'machine': 'A', 'duration': 97}, {'task': 1, 'start': 104, 'machine': 'C', 'duration': 87}, {'task': 2, 'start': 191, 'machine': 'B', 'duration': 44}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 1, 'machine': 'B', 'duration': 96}, {'task': 1, 'start': 334, 'machine': 'A', 'duration': 70}, {'task': 2, 'start': 407, 'machine': 'C', 'duration': 64}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 104, 'machine': 'A', 'duration': 82}, {'task': 1, 'start': 191, 'machine': 'C', 'duration': 55}, {'task': 2, 'start': 246, 'machine': 'B', 'duration': 65}]}]",42,markdown_table,names |
| JSP,JSP,"Back at the darkroom, the challenge was to shepherd a stack of film through exposure, development, and drying without any chaos. That means deciding who goes first on which station and when, while keeping every rollβs steps in their fixed order, running each step on its designated station for the required length, and never overlapping tasks on the same station. A clearer plan is the one that gets the final roll out sooner β compute each rollβs completion time and take the last of those times as the result. The specific rolls, stations, and timing details follow below. |
|
|
| They are presented as 8 rolls and 4 stations: roll ids J1, J2, J3, J4, J5, J6, J7, J8; station ids 0, 1, 2, 3. |
| Roll J1, step 0: run on station 3 for 1. |
| Roll J1, step 1: run on station 2 for 5. |
| Roll J1, step 2: run on station 1 for 47. |
| Roll J1, step 3: run on station 0 for 53. |
| Roll J2, step 0: run on station 3 for 75. |
| Roll J2, step 1: run on station 2 for 39. |
| Roll J2, step 2: run on station 1 for 95. |
| Roll J2, step 3: run on station 0 for 3. |
| Roll J3, step 0: run on station 3 for 7. |
| Roll J3, step 1: run on station 0 for 51. |
| Roll J3, step 2: run on station 2 for 22. |
| Roll J3, step 3: run on station 1 for 63. |
| Roll J4, step 0: run on station 2 for 80. |
| Roll J4, step 1: run on station 3 for 90. |
| Roll J4, step 2: run on station 0 for 49. |
| Roll J4, step 3: run on station 1 for 49. |
| Roll J5, step 0: run on station 2 for 38. |
| Roll J5, step 1: run on station 0 for 65. |
| Roll J5, step 2: run on station 3 for 21. |
| Roll J5, step 3: run on station 1 for 61. |
| Roll J6, step 0: run on station 0 for 7. |
| Roll J6, step 1: run on station 3 for 69. |
| Roll J6, step 2: run on station 2 for 47. |
| Roll J6, step 3: run on station 1 for 16. |
| Roll J7, step 0: run on station 2 for 8. |
| Roll J7, step 1: run on station 3 for 26. |
| Roll J7, step 2: run on station 0 for 72. |
| Roll J7, step 3: run on station 1 for 92. |
| Roll J8, step 0: run on station 2 for 94. |
| Roll J8, step 1: run on station 3 for 90. |
| Roll J8, step 2: run on station 0 for 47. |
| Roll J8, step 3: run on station 1 for 3. |
| Keep each roll's steps in order and avoid overlapping any station; the plan is judged by the time the last roll finishes. |
|
|
| And just so weβre on the same page about how to hand back the schedule, hereβs the shape Iβm expecting β nothing fancy, just a simple JSON sketch you can follow when you fill in the actual plan: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <roll_id>, |
| ""tasks"": [ |
| { |
| ""task"": <step_index>, |
| ""start"": <start_time>, |
| ""machine"": <station_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of that like a little form: ""solution"" is a list of jobs (in our darkroom story, each roll), each job has a list of tasks/steps, and each task says when it starts, which machine/station it needs, and how long it runs. This JSON is just the expected shape β a sketch, not the final filled-in answer. |
|
|
| Please make sure to use the exact identifiers from the instance input β donβt rename them or invent new labels. For example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 4, 'nr_jobs': 8, 'jobs': [[[3, 1], [2, 5], [1, 47], [0, 53]], [[3, 75], [2, 39], [1, 95], [0, 3]], [[3, 7], [0, 51], [2, 22], [1, 63]], [[2, 80], [3, 90], [0, 49], [1, 49]], [[2, 38], [0, 65], [3, 21], [1, 61]], [[0, 7], [3, 69], [2, 47], [1, 16]], [[2, 8], [3, 26], [0, 72], [1, 92]], [[2, 94], [3, 90], [0, 47], [1, 3]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 7, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 8, 'machine': 2, 'duration': 5}, {'task': 2, 'start': 13, 'machine': 1, 'duration': 47}, {'task': 3, 'start': 123, 'machine': 0, 'duration': 53}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 8, 'machine': 3, 'duration': 75}, {'task': 1, 'start': 83, 'machine': 2, 'duration': 39}, {'task': 2, 'start': 143, 'machine': 1, 'duration': 95}, {'task': 3, 'start': 250, 'machine': 0, 'duration': 3}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 7}, {'task': 1, 'start': 7, 'machine': 0, 'duration': 51}, {'task': 2, 'start': 58, 'machine': 2, 'duration': 22}, {'task': 3, 'start': 80, 'machine': 1, 'duration': 63}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 122, 'machine': 2, 'duration': 80}, {'task': 1, 'start': 202, 'machine': 3, 'duration': 90}, {'task': 2, 'start': 292, 'machine': 0, 'duration': 49}, {'task': 3, 'start': 391, 'machine': 1, 'duration': 49}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 13, 'machine': 2, 'duration': 38}, {'task': 1, 'start': 58, 'machine': 0, 'duration': 65}, {'task': 2, 'start': 178, 'machine': 3, 'duration': 21}, {'task': 3, 'start': 238, 'machine': 1, 'duration': 61}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 7}, {'task': 1, 'start': 83, 'machine': 3, 'duration': 69}, {'task': 2, 'start': 296, 'machine': 2, 'duration': 47}, {'task': 3, 'start': 440, 'machine': 1, 'duration': 16}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 8}, {'task': 1, 'start': 152, 'machine': 3, 'duration': 26}, {'task': 2, 'start': 178, 'machine': 0, 'duration': 72}, {'task': 3, 'start': 299, 'machine': 1, 'duration': 92}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 202, 'machine': 2, 'duration': 94}, {'task': 1, 'start': 296, 'machine': 3, 'duration': 90}, {'task': 2, 'start': 386, 'machine': 0, 'duration': 47}, {'task': 3, 'start': 456, 'machine': 1, 'duration': 3}]}]",459.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 4, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': [0, 1, 2, 3], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 3, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 2, 'duration': 5}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 1, 'duration': 47}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 0, 'duration': 53}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 3, 'duration': 75}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 2, 'duration': 39}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 1, 'duration': 95}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 0, 'duration': 3}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 3, 'duration': 7}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 0, 'duration': 51}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 2, 'duration': 22}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 1, 'duration': 63}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 2, 'duration': 80}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 3, 'duration': 90}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 0, 'duration': 49}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 1, 'duration': 49}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 2, 'duration': 38}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 0, 'duration': 65}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 3, 'duration': 21}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 1, 'duration': 61}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 0, 'duration': 7}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 3, 'duration': 69}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 2, 'duration': 47}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 1, 'duration': 16}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 2, 'duration': 8}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 3, 'duration': 26}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 0, 'duration': 72}, {'job_id': 'J7', 'task_id': 3, 'machine_id': 1, 'duration': 92}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 2, 'duration': 94}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 3, 'duration': 90}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 0, 'duration': 47}, {'job_id': 'J8', 'task_id': 3, 'machine_id': 1, 'duration': 3}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 7, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 8, 'machine': 2, 'duration': 5}, {'task': 2, 'start': 13, 'machine': 1, 'duration': 47}, {'task': 3, 'start': 123, 'machine': 0, 'duration': 53}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 8, 'machine': 3, 'duration': 75}, {'task': 1, 'start': 83, 'machine': 2, 'duration': 39}, {'task': 2, 'start': 143, 'machine': 1, 'duration': 95}, {'task': 3, 'start': 250, 'machine': 0, 'duration': 3}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 7}, {'task': 1, 'start': 7, 'machine': 0, 'duration': 51}, {'task': 2, 'start': 58, 'machine': 2, 'duration': 22}, {'task': 3, 'start': 80, 'machine': 1, 'duration': 63}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 122, 'machine': 2, 'duration': 80}, {'task': 1, 'start': 202, 'machine': 3, 'duration': 90}, {'task': 2, 'start': 292, 'machine': 0, 'duration': 49}, {'task': 3, 'start': 391, 'machine': 1, 'duration': 49}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 13, 'machine': 2, 'duration': 38}, {'task': 1, 'start': 58, 'machine': 0, 'duration': 65}, {'task': 2, 'start': 178, 'machine': 3, 'duration': 21}, {'task': 3, 'start': 238, 'machine': 1, 'duration': 61}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 7}, {'task': 1, 'start': 83, 'machine': 3, 'duration': 69}, {'task': 2, 'start': 296, 'machine': 2, 'duration': 47}, {'task': 3, 'start': 440, 'machine': 1, 'duration': 16}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 8}, {'task': 1, 'start': 152, 'machine': 3, 'duration': 26}, {'task': 2, 'start': 178, 'machine': 0, 'duration': 72}, {'task': 3, 'start': 299, 'machine': 1, 'duration': 92}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 202, 'machine': 2, 'duration': 94}, {'task': 1, 'start': 296, 'machine': 3, 'duration': 90}, {'task': 2, 'start': 386, 'machine': 0, 'duration': 47}, {'task': 3, 'start': 456, 'machine': 1, 'duration': 3}]}]",43,nl,0 |
| JSP,JSP,"Thereβs a busy makerspace where several projects are queued for cutting, sanding, and painting, and the coordinator needs to line up who uses which machine when. Each project follows the same ordered steps; each step belongs to a particular machine and takes a fixed amount of time, and a machine can only handle one step at any given moment. The aim is to get the whole lot wrapped up quickly β measure success by the time when the last projectβs final step finishes, and try to make that time as early as possible. All steps have to happen in order and exactly once, with no overlapping use of machines. The concrete project and timing details are shown below. |
|
|
| |
| |
| |
| |
| project_id,step_index,assigned_machine_id,step_duration |
| J1,0,B,1 |
| J1,1,D,18 |
| J1,2,E,23 |
| J1,3,C,98 |
| J1,4,A,29 |
| J2,0,C,61 |
| J2,1,D,99 |
| J2,2,B,70 |
| J2,3,A,74 |
| J2,4,E,45 |
| J3,0,C,60 |
| J3,1,A,15 |
| J3,2,E,63 |
| J3,3,B,93 |
| J3,4,D,54 |
| J4,0,E,3 |
| J4,1,D,5 |
| J4,2,A,65 |
| J4,3,C,59 |
| J4,4,B,68 |
| J5,0,B,49 |
| J5,1,A,38 |
| J5,2,D,7 |
| J5,3,E,9 |
| J5,4,C,92 |
| J6,0,E,79 |
| J6,1,D,81 |
| J6,2,C,58 |
| J6,3,A,36 |
| J6,4,B,60 |
| J7,0,D,38 |
| J7,1,E,78 |
| J7,2,B,31 |
| J7,3,A,4 |
| J7,4,C,57 |
| J8,0,A,90 |
| J8,1,D,77 |
| J8,2,E,30 |
| J8,3,C,24 |
| J8,4,B,6 |
|
|
| Also, when you send the schedule back, a plain JSON layout like the one below works best β just a relaxed, consistent shape so it's easy to read and check: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| This little sketch is just the shape Iβm expecting: ""solution"" holds a list of jobs (projects), each job has its id under ""job"" and an ordered ""tasks"" list. Each task entry says which task index it is, when it starts, which machine it uses, and how long it runs. Think of it like filling out a simple schedule form rather than anything formal β it doesnβt contain the actual scheduled times yet, just the fields Iβll need filled in. |
|
|
| Please use the identifiers exactly as they appear in the instance input β donβt rename them or invent new labels. |
| - for example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 5, 'nr_jobs': 8, 'jobs': [[[1, 1], [3, 18], [4, 23], [2, 98], [0, 29]], [[2, 61], [3, 99], [1, 70], [0, 74], [4, 45]], [[2, 60], [0, 15], [4, 63], [1, 93], [3, 54]], [[4, 3], [3, 5], [0, 65], [2, 59], [1, 68]], [[1, 49], [0, 38], [3, 7], [4, 9], [2, 92]], [[4, 79], [3, 81], [2, 58], [0, 36], [1, 60]], [[3, 38], [4, 78], [1, 31], [0, 4], [2, 57]], [[0, 90], [3, 77], [4, 30], [2, 24], [1, 6]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 43, 'machine': 3, 'duration': 18}, {'task': 2, 'start': 82, 'machine': 4, 'duration': 23}, {'task': 3, 'start': 180, 'machine': 2, 'duration': 98}, {'task': 4, 'start': 278, 'machine': 0, 'duration': 29}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 61}, {'task': 1, 'start': 61, 'machine': 3, 'duration': 99}, {'task': 2, 'start': 160, 'machine': 1, 'duration': 70}, {'task': 3, 'start': 333, 'machine': 0, 'duration': 74}, {'task': 4, 'start': 407, 'machine': 4, 'duration': 45}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 61, 'machine': 2, 'duration': 60}, {'task': 1, 'start': 121, 'machine': 0, 'duration': 15}, {'task': 2, 'start': 136, 'machine': 4, 'duration': 63}, {'task': 3, 'start': 329, 'machine': 1, 'duration': 93}, {'task': 4, 'start': 422, 'machine': 3, 'duration': 54}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 3}, {'task': 1, 'start': 38, 'machine': 3, 'duration': 5}, {'task': 2, 'start': 43, 'machine': 0, 'duration': 65}, {'task': 3, 'start': 121, 'machine': 2, 'duration': 59}, {'task': 4, 'start': 230, 'machine': 1, 'duration': 68}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 1, 'machine': 1, 'duration': 49}, {'task': 1, 'start': 226, 'machine': 0, 'duration': 38}, {'task': 2, 'start': 318, 'machine': 3, 'duration': 7}, {'task': 3, 'start': 348, 'machine': 4, 'duration': 9}, {'task': 4, 'start': 417, 'machine': 2, 'duration': 92}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 3, 'machine': 4, 'duration': 79}, {'task': 1, 'start': 160, 'machine': 3, 'duration': 81}, {'task': 2, 'start': 278, 'machine': 2, 'duration': 58}, {'task': 3, 'start': 407, 'machine': 0, 'duration': 36}, {'task': 4, 'start': 443, 'machine': 1, 'duration': 60}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 38}, {'task': 1, 'start': 199, 'machine': 4, 'duration': 78}, {'task': 2, 'start': 298, 'machine': 1, 'duration': 31}, {'task': 3, 'start': 329, 'machine': 0, 'duration': 4}, {'task': 4, 'start': 336, 'machine': 2, 'duration': 57}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 136, 'machine': 0, 'duration': 90}, {'task': 1, 'start': 241, 'machine': 3, 'duration': 77}, {'task': 2, 'start': 318, 'machine': 4, 'duration': 30}, {'task': 3, 'start': 393, 'machine': 2, 'duration': 24}, {'task': 4, 'start': 422, 'machine': 1, 'duration': 6}]}]",509.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 5, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': ['A', 'B', 'C', 'D', 'E'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'B', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'D', 'duration': 18}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'E', 'duration': 23}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 'C', 'duration': 98}, {'job_id': 'J1', 'task_id': 4, 'machine_id': 'A', 'duration': 29}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'C', 'duration': 61}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'D', 'duration': 99}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'B', 'duration': 70}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 'A', 'duration': 74}, {'job_id': 'J2', 'task_id': 4, 'machine_id': 'E', 'duration': 45}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'C', 'duration': 60}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'A', 'duration': 15}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'E', 'duration': 63}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 'B', 'duration': 93}, {'job_id': 'J3', 'task_id': 4, 'machine_id': 'D', 'duration': 54}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'E', 'duration': 3}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'D', 'duration': 5}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'A', 'duration': 65}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 'C', 'duration': 59}, {'job_id': 'J4', 'task_id': 4, 'machine_id': 'B', 'duration': 68}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'B', 'duration': 49}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'A', 'duration': 38}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'D', 'duration': 7}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 'E', 'duration': 9}, {'job_id': 'J5', 'task_id': 4, 'machine_id': 'C', 'duration': 92}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'E', 'duration': 79}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'D', 'duration': 81}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'C', 'duration': 58}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 'A', 'duration': 36}, {'job_id': 'J6', 'task_id': 4, 'machine_id': 'B', 'duration': 60}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 'D', 'duration': 38}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 'E', 'duration': 78}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 'B', 'duration': 31}, {'job_id': 'J7', 'task_id': 3, 'machine_id': 'A', 'duration': 4}, {'job_id': 'J7', 'task_id': 4, 'machine_id': 'C', 'duration': 57}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 'A', 'duration': 90}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 'D', 'duration': 77}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 'E', 'duration': 30}, {'job_id': 'J8', 'task_id': 3, 'machine_id': 'C', 'duration': 24}, {'job_id': 'J8', 'task_id': 4, 'machine_id': 'B', 'duration': 6}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 1}, {'task': 1, 'start': 43, 'machine': 'D', 'duration': 18}, {'task': 2, 'start': 82, 'machine': 'E', 'duration': 23}, {'task': 3, 'start': 180, 'machine': 'C', 'duration': 98}, {'task': 4, 'start': 278, 'machine': 'A', 'duration': 29}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 61}, {'task': 1, 'start': 61, 'machine': 'D', 'duration': 99}, {'task': 2, 'start': 160, 'machine': 'B', 'duration': 70}, {'task': 3, 'start': 333, 'machine': 'A', 'duration': 74}, {'task': 4, 'start': 407, 'machine': 'E', 'duration': 45}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 61, 'machine': 'C', 'duration': 60}, {'task': 1, 'start': 121, 'machine': 'A', 'duration': 15}, {'task': 2, 'start': 136, 'machine': 'E', 'duration': 63}, {'task': 3, 'start': 329, 'machine': 'B', 'duration': 93}, {'task': 4, 'start': 422, 'machine': 'D', 'duration': 54}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 'E', 'duration': 3}, {'task': 1, 'start': 38, 'machine': 'D', 'duration': 5}, {'task': 2, 'start': 43, 'machine': 'A', 'duration': 65}, {'task': 3, 'start': 121, 'machine': 'C', 'duration': 59}, {'task': 4, 'start': 230, 'machine': 'B', 'duration': 68}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 1, 'machine': 'B', 'duration': 49}, {'task': 1, 'start': 226, 'machine': 'A', 'duration': 38}, {'task': 2, 'start': 318, 'machine': 'D', 'duration': 7}, {'task': 3, 'start': 348, 'machine': 'E', 'duration': 9}, {'task': 4, 'start': 417, 'machine': 'C', 'duration': 92}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 3, 'machine': 'E', 'duration': 79}, {'task': 1, 'start': 160, 'machine': 'D', 'duration': 81}, {'task': 2, 'start': 278, 'machine': 'C', 'duration': 58}, {'task': 3, 'start': 407, 'machine': 'A', 'duration': 36}, {'task': 4, 'start': 443, 'machine': 'B', 'duration': 60}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 0, 'machine': 'D', 'duration': 38}, {'task': 1, 'start': 199, 'machine': 'E', 'duration': 78}, {'task': 2, 'start': 298, 'machine': 'B', 'duration': 31}, {'task': 3, 'start': 329, 'machine': 'A', 'duration': 4}, {'task': 4, 'start': 336, 'machine': 'C', 'duration': 57}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 136, 'machine': 'A', 'duration': 90}, {'task': 1, 'start': 241, 'machine': 'D', 'duration': 77}, {'task': 2, 'start': 318, 'machine': 'E', 'duration': 30}, {'task': 3, 'start': 393, 'machine': 'C', 'duration': 24}, {'task': 4, 'start': 422, 'machine': 'B', 'duration': 6}]}]",44,csv,names |
| JSP,JSP,"Recently the foreperson asked for a simple plan: spread digging, planting and mulching across the teams and tools so each garden moves from one step to the next in order without crews clashing. Each task must run on its designated crew or machine for the whole time it needs, and every plot must get each step once β nothing missing, nothing doubled. The success of the plan is judged by how soon everything is done, i.e., the clock time when the last plotβs work finishes, and the aim is to make that time as early as possible. The exact plot-by-plot details are given below. |
|
|
| There are 8 plots to complete using 3 crews and tools; plot ids: J1, J2, J3, J4, J5, J6, J7, J8; crew/tool ids: 1, 2, 3. |
| Plot J1, step 0, is performed by crew/tool 3 and takes 1 time units. |
| Plot J1, step 1, is performed by crew/tool 2 and takes 31 time units. |
| Plot J1, step 2, is performed by crew/tool 1 and takes 98 time units. |
| Plot J2, step 0, is performed by crew/tool 3 and takes 44 time units. |
| Plot J2, step 1, is performed by crew/tool 2 and takes 81 time units. |
| Plot J2, step 2, is performed by crew/tool 1 and takes 83 time units. |
| Plot J3, step 0, is performed by crew/tool 3 and takes 5 time units. |
| Plot J3, step 1, is performed by crew/tool 1 and takes 38 time units. |
| Plot J3, step 2, is performed by crew/tool 2 and takes 42 time units. |
| Plot J4, step 0, is performed by crew/tool 3 and takes 38 time units. |
| Plot J4, step 1, is performed by crew/tool 1 and takes 98 time units. |
| Plot J4, step 2, is performed by crew/tool 2 and takes 67 time units. |
| Plot J5, step 0, is performed by crew/tool 3 and takes 46 time units. |
| Plot J5, step 1, is performed by crew/tool 1 and takes 97 time units. |
| Plot J5, step 2, is performed by crew/tool 2 and takes 60 time units. |
| Plot J6, step 0, is performed by crew/tool 3 and takes 55 time units. |
| Plot J6, step 1, is performed by crew/tool 2 and takes 72 time units. |
| Plot J6, step 2, is performed by crew/tool 1 and takes 66 time units. |
| Plot J7, step 0, is performed by crew/tool 3 and takes 97 time units. |
| Plot J7, step 1, is performed by crew/tool 2 and takes 75 time units. |
| Plot J7, step 2, is performed by crew/tool 1 and takes 90 time units. |
| Plot J8, step 0, is performed by crew/tool 3 and takes 7 time units. |
| Plot J8, step 1, is performed by crew/tool 2 and takes 65 time units. |
| Plot J8, step 2, is performed by crew/tool 1 and takes 2 time units. |
| Cover all 8 plots on the 3 crews/tools and aim to finish as early as possible. |
|
|
| Oh, and one quick thing β when you send the plan back, please follow a little JSON shape like this: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| This just shows the shape I expect: a top-level ""solution"" list, one entry per job/plot with its id, and for each job a list of tasks giving the task index, the planned start time, which crew/tool (machine) it uses, and how long it runs. Think of it like filling out a simple form for each plot: who does what, when, and for how long. It's only a sketch of the expected shape, not the actual schedule. |
|
|
| Please make sure to use the exact identifiers from the instance input β don't rename them or invent new labels. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 3, 'nr_jobs': 8, 'jobs': [[[2, 1], [1, 31], [0, 98]], [[2, 44], [1, 81], [0, 83]], [[2, 5], [0, 38], [1, 42]], [[2, 38], [0, 98], [1, 67]], [[2, 46], [0, 97], [1, 60]], [[2, 55], [1, 72], [0, 66]], [[2, 97], [1, 75], [0, 90]], [[2, 7], [1, 65], [0, 2]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 5, 'machine': 2, 'duration': 1}, {'task': 1, 'start': 6, 'machine': 1, 'duration': 31}, {'task': 2, 'start': 43, 'machine': 0, 'duration': 98}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 187, 'machine': 2, 'duration': 44}, {'task': 1, 'start': 231, 'machine': 1, 'duration': 81}, {'task': 2, 'start': 426, 'machine': 0, 'duration': 83}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 5}, {'task': 1, 'start': 5, 'machine': 0, 'duration': 38}, {'task': 2, 'start': 43, 'machine': 1, 'duration': 42}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 103, 'machine': 2, 'duration': 38}, {'task': 1, 'start': 141, 'machine': 0, 'duration': 98}, {'task': 2, 'start': 449, 'machine': 1, 'duration': 67}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 141, 'machine': 2, 'duration': 46}, {'task': 1, 'start': 239, 'machine': 0, 'duration': 97}, {'task': 2, 'start': 516, 'machine': 1, 'duration': 60}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 231, 'machine': 2, 'duration': 55}, {'task': 1, 'start': 312, 'machine': 1, 'duration': 72}, {'task': 2, 'start': 509, 'machine': 0, 'duration': 66}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 6, 'machine': 2, 'duration': 97}, {'task': 1, 'start': 103, 'machine': 1, 'duration': 75}, {'task': 2, 'start': 336, 'machine': 0, 'duration': 90}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 286, 'machine': 2, 'duration': 7}, {'task': 1, 'start': 384, 'machine': 1, 'duration': 65}, {'task': 2, 'start': 575, 'machine': 0, 'duration': 2}]}]",577.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': [1, 2, 3], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 3, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 2, 'duration': 31}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 1, 'duration': 98}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 3, 'duration': 44}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 2, 'duration': 81}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 1, 'duration': 83}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 3, 'duration': 5}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 1, 'duration': 38}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 2, 'duration': 42}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 3, 'duration': 38}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 1, 'duration': 98}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 2, 'duration': 67}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 3, 'duration': 46}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 1, 'duration': 97}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 2, 'duration': 60}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 3, 'duration': 55}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 2, 'duration': 72}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 1, 'duration': 66}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 3, 'duration': 97}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 2, 'duration': 75}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 1, 'duration': 90}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 3, 'duration': 7}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 2, 'duration': 65}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 1, 'duration': 2}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 5, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 6, 'machine': 2, 'duration': 31}, {'task': 2, 'start': 43, 'machine': 1, 'duration': 98}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 187, 'machine': 3, 'duration': 44}, {'task': 1, 'start': 231, 'machine': 2, 'duration': 81}, {'task': 2, 'start': 426, 'machine': 1, 'duration': 83}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 5}, {'task': 1, 'start': 5, 'machine': 1, 'duration': 38}, {'task': 2, 'start': 43, 'machine': 2, 'duration': 42}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 103, 'machine': 3, 'duration': 38}, {'task': 1, 'start': 141, 'machine': 1, 'duration': 98}, {'task': 2, 'start': 449, 'machine': 2, 'duration': 67}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 141, 'machine': 3, 'duration': 46}, {'task': 1, 'start': 239, 'machine': 1, 'duration': 97}, {'task': 2, 'start': 516, 'machine': 2, 'duration': 60}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 231, 'machine': 3, 'duration': 55}, {'task': 1, 'start': 312, 'machine': 2, 'duration': 72}, {'task': 2, 'start': 509, 'machine': 1, 'duration': 66}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 6, 'machine': 3, 'duration': 97}, {'task': 1, 'start': 103, 'machine': 2, 'duration': 75}, {'task': 2, 'start': 336, 'machine': 1, 'duration': 90}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 286, 'machine': 3, 'duration': 7}, {'task': 1, 'start': 384, 'machine': 2, 'duration': 65}, {'task': 2, 'start': 575, 'machine': 1, 'duration': 2}]}]",45,nl,1 |
| JSP,JSP,"On a busy exam week the print room looks like a tiny factory: batch A needs printing, then stapling, then packing; batch B the same; and so on. Each batch must follow that order, each operation uses its designated equipment for a set duration, and no equipment can handle two batches at once. The win is the plan that gets the final batch completed earliest β check the clock time when the last batch finishes and try to reduce that time. The precise job-by-job times and machine assignments come next below. |
|
|
| |
| |
| |
| |
| exam_set_id,operation_index,equipment_id,processing_duration |
| J1,0,1,1 |
| J1,1,4,44 |
| J1,2,2,74 |
| J1,3,3,90 |
| J1,4,0,35 |
| J2,0,4,5 |
| J2,1,3,10 |
| J2,2,1,7 |
| J2,3,2,10 |
| J2,4,0,32 |
| J3,0,2,37 |
| J3,1,3,19 |
| J3,2,1,30 |
| J3,3,4,1 |
| J3,4,0,65 |
| J4,0,1,9 |
| J4,1,3,39 |
| J4,2,0,67 |
| J4,3,2,36 |
| J4,4,4,81 |
| J5,0,3,32 |
| J5,1,0,75 |
| J5,2,1,24 |
| J5,3,2,94 |
| J5,4,4,62 |
| J6,0,3,84 |
| J6,1,2,1 |
| J6,2,4,89 |
| J6,3,1,20 |
| J6,4,0,1 |
| J7,0,2,20 |
| J7,1,3,31 |
| J7,2,4,83 |
| J7,3,0,13 |
| J7,4,1,4 |
| J8,0,2,56 |
| J8,1,4,4 |
| J8,2,1,80 |
| J8,3,3,22 |
| J8,4,0,78 |
|
|
| And when you send the actual schedule back, a neat little JSON sketch is all I need β nothing fancy. Just follow this shape so I can read it easily: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| This just shows the overall shape: ""solution"" is a list of batches (jobs), each batch has a ""job"" id and a ""tasks"" list. Each task entry says which step number it is (""task""), when that step starts (""start""), which piece of equipment it uses (""machine""), and how long it takes (""duration""). Think of it like filling out a little form for each batch and each step β this example is only a sketch of the expected shape, not the actual schedule. |
|
|
| Please be sure to use the exact identifiers from the instance input β don't rename them or invent new ones. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 5, 'nr_jobs': 8, 'jobs': [[[1, 1], [4, 44], [2, 74], [3, 90], [0, 35]], [[4, 5], [3, 10], [1, 7], [2, 10], [0, 32]], [[2, 37], [3, 19], [1, 30], [4, 1], [0, 65]], [[1, 9], [3, 39], [0, 67], [2, 36], [4, 81]], [[3, 32], [0, 75], [1, 24], [2, 94], [4, 62]], [[3, 84], [2, 1], [4, 89], [1, 20], [0, 1]], [[2, 20], [3, 31], [4, 83], [0, 13], [1, 4]], [[2, 56], [4, 4], [1, 80], [3, 22], [0, 78]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 5, 'machine': 4, 'duration': 44}, {'task': 2, 'start': 76, 'machine': 2, 'duration': 74}, {'task': 3, 'start': 243, 'machine': 3, 'duration': 90}, {'task': 4, 'start': 351, 'machine': 0, 'duration': 35}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 5}, {'task': 1, 'start': 208, 'machine': 3, 'duration': 10}, {'task': 2, 'start': 218, 'machine': 1, 'duration': 7}, {'task': 3, 'start': 354, 'machine': 2, 'duration': 10}, {'task': 4, 'start': 386, 'machine': 0, 'duration': 32}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 187, 'machine': 2, 'duration': 37}, {'task': 1, 'start': 224, 'machine': 3, 'duration': 19}, {'task': 2, 'start': 243, 'machine': 1, 'duration': 30}, {'task': 3, 'start': 276, 'machine': 4, 'duration': 1}, {'task': 4, 'start': 286, 'machine': 0, 'duration': 65}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 1, 'machine': 1, 'duration': 9}, {'task': 1, 'start': 32, 'machine': 3, 'duration': 39}, {'task': 2, 'start': 107, 'machine': 0, 'duration': 67}, {'task': 3, 'start': 224, 'machine': 2, 'duration': 36}, {'task': 4, 'start': 277, 'machine': 4, 'duration': 81}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 32}, {'task': 1, 'start': 32, 'machine': 0, 'duration': 75}, {'task': 2, 'start': 160, 'machine': 1, 'duration': 24}, {'task': 3, 'start': 260, 'machine': 2, 'duration': 94}, {'task': 4, 'start': 358, 'machine': 4, 'duration': 62}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 102, 'machine': 3, 'duration': 84}, {'task': 1, 'start': 186, 'machine': 2, 'duration': 1}, {'task': 2, 'start': 187, 'machine': 4, 'duration': 89}, {'task': 3, 'start': 276, 'machine': 1, 'duration': 20}, {'task': 4, 'start': 418, 'machine': 0, 'duration': 1}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 20}, {'task': 1, 'start': 71, 'machine': 3, 'duration': 31}, {'task': 2, 'start': 102, 'machine': 4, 'duration': 83}, {'task': 3, 'start': 185, 'machine': 0, 'duration': 13}, {'task': 4, 'start': 198, 'machine': 1, 'duration': 4}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 20, 'machine': 2, 'duration': 56}, {'task': 1, 'start': 76, 'machine': 4, 'duration': 4}, {'task': 2, 'start': 80, 'machine': 1, 'duration': 80}, {'task': 3, 'start': 186, 'machine': 3, 'duration': 22}, {'task': 4, 'start': 208, 'machine': 0, 'duration': 78}]}]",420.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 5, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': [0, 1, 2, 3, 4], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 1, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 4, 'duration': 44}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 2, 'duration': 74}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 3, 'duration': 90}, {'job_id': 'J1', 'task_id': 4, 'machine_id': 0, 'duration': 35}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 4, 'duration': 5}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 3, 'duration': 10}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 1, 'duration': 7}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 2, 'duration': 10}, {'job_id': 'J2', 'task_id': 4, 'machine_id': 0, 'duration': 32}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 2, 'duration': 37}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 3, 'duration': 19}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 1, 'duration': 30}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 4, 'duration': 1}, {'job_id': 'J3', 'task_id': 4, 'machine_id': 0, 'duration': 65}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 1, 'duration': 9}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 3, 'duration': 39}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 0, 'duration': 67}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 2, 'duration': 36}, {'job_id': 'J4', 'task_id': 4, 'machine_id': 4, 'duration': 81}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 3, 'duration': 32}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 0, 'duration': 75}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 1, 'duration': 24}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 2, 'duration': 94}, {'job_id': 'J5', 'task_id': 4, 'machine_id': 4, 'duration': 62}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 3, 'duration': 84}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 2, 'duration': 1}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 4, 'duration': 89}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 1, 'duration': 20}, {'job_id': 'J6', 'task_id': 4, 'machine_id': 0, 'duration': 1}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 2, 'duration': 20}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 3, 'duration': 31}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 4, 'duration': 83}, {'job_id': 'J7', 'task_id': 3, 'machine_id': 0, 'duration': 13}, {'job_id': 'J7', 'task_id': 4, 'machine_id': 1, 'duration': 4}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 2, 'duration': 56}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 4, 'duration': 4}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 1, 'duration': 80}, {'job_id': 'J8', 'task_id': 3, 'machine_id': 3, 'duration': 22}, {'job_id': 'J8', 'task_id': 4, 'machine_id': 0, 'duration': 78}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 5, 'machine': 4, 'duration': 44}, {'task': 2, 'start': 76, 'machine': 2, 'duration': 74}, {'task': 3, 'start': 243, 'machine': 3, 'duration': 90}, {'task': 4, 'start': 351, 'machine': 0, 'duration': 35}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 5}, {'task': 1, 'start': 208, 'machine': 3, 'duration': 10}, {'task': 2, 'start': 218, 'machine': 1, 'duration': 7}, {'task': 3, 'start': 354, 'machine': 2, 'duration': 10}, {'task': 4, 'start': 386, 'machine': 0, 'duration': 32}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 187, 'machine': 2, 'duration': 37}, {'task': 1, 'start': 224, 'machine': 3, 'duration': 19}, {'task': 2, 'start': 243, 'machine': 1, 'duration': 30}, {'task': 3, 'start': 276, 'machine': 4, 'duration': 1}, {'task': 4, 'start': 286, 'machine': 0, 'duration': 65}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 1, 'machine': 1, 'duration': 9}, {'task': 1, 'start': 32, 'machine': 3, 'duration': 39}, {'task': 2, 'start': 107, 'machine': 0, 'duration': 67}, {'task': 3, 'start': 224, 'machine': 2, 'duration': 36}, {'task': 4, 'start': 277, 'machine': 4, 'duration': 81}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 32}, {'task': 1, 'start': 32, 'machine': 0, 'duration': 75}, {'task': 2, 'start': 160, 'machine': 1, 'duration': 24}, {'task': 3, 'start': 260, 'machine': 2, 'duration': 94}, {'task': 4, 'start': 358, 'machine': 4, 'duration': 62}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 102, 'machine': 3, 'duration': 84}, {'task': 1, 'start': 186, 'machine': 2, 'duration': 1}, {'task': 2, 'start': 187, 'machine': 4, 'duration': 89}, {'task': 3, 'start': 276, 'machine': 1, 'duration': 20}, {'task': 4, 'start': 418, 'machine': 0, 'duration': 1}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 20}, {'task': 1, 'start': 71, 'machine': 3, 'duration': 31}, {'task': 2, 'start': 102, 'machine': 4, 'duration': 83}, {'task': 3, 'start': 185, 'machine': 0, 'duration': 13}, {'task': 4, 'start': 198, 'machine': 1, 'duration': 4}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 20, 'machine': 2, 'duration': 56}, {'task': 1, 'start': 76, 'machine': 4, 'duration': 4}, {'task': 2, 'start': 80, 'machine': 1, 'duration': 80}, {'task': 3, 'start': 186, 'machine': 3, 'duration': 22}, {'task': 4, 'start': 208, 'machine': 0, 'duration': 78}]}]",46,csv,0 |
| JSP,JSP,"Thereβs a busy little workshop where the supervisor needs to line up cutting, assembly, and finishing tasks across a handful of saws, benches, and booths. Every piece has a fixed sequence of steps that must happen in order, each step belongs on a particular station for a given stretch of time, and stations canβt overlap jobs. The aim is to get the whole lot finished in the shortest possible time β basically, make the moment when the last piece is done as early as it can be. Every operation must be scheduled exactly once; nothing gets skipped or doubled. The specific orders, machines, and times are shown below. |
|
|
| Here are the 6 pieces to schedule across 5 stations: piece IDs J1, J2, J3, J4, J5, J6 and station IDs A, B, C, D, E. |
|
|
| | piece_id | operation_index | station_id | processing_time | |
| |---|---|---|---| |
| | J1 | 0 | E | 1 | |
| | J1 | 1 | C | 57 | |
| | J1 | 2 | B | 49 | |
| | J1 | 3 | D | 36 | |
| | J1 | 4 | A | 88 | |
| | J2 | 0 | E | 27 | |
| | J2 | 1 | A | 14 | |
| | J2 | 2 | B | 74 | |
| | J2 | 3 | D | 78 | |
| | J2 | 4 | C | 26 | |
| | J3 | 0 | E | 75 | |
| | J3 | 1 | B | 71 | |
| | J3 | 2 | C | 13 | |
| | J3 | 3 | A | 5 | |
| | J3 | 4 | D | 70 | |
| | J4 | 0 | C | 61 | |
| | J4 | 1 | B | 7 | |
| | J4 | 2 | A | 68 | |
| | J4 | 3 | E | 74 | |
| | J4 | 4 | D | 88 | |
| | J5 | 0 | B | 74 | |
| | J5 | 1 | A | 44 | |
| | J5 | 2 | D | 83 | |
| | J5 | 3 | E | 87 | |
| | J5 | 4 | C | 46 | |
| | J6 | 0 | E | 37 | |
| | J6 | 1 | D | 10 | |
| | J6 | 2 | B | 54 | |
| | J6 | 3 | A | 61 | |
| | J6 | 4 | C | 70 | |
|
|
| Schedule each listed operation exactly once so the last piece finishes as early as possible. |
|
|
| Also, when you give the schedule back, just use this simple JSON layout so everything is clear and consistent: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| This is just the shape I need β one object with a ""solution"" list, one entry per job, and each job listing its tasks. In plain terms: |
| - ""job"" is the job identifier. |
| - ""tasks"" is the list of operations for that job in whatever order you schedule them. |
| - ""task"" is the task's index (which step it is within the job). |
| - ""start"" is the scheduled start time for that task. |
| - ""machine"" is the machine/station the task runs on. |
| - ""duration"" is how long the task runs. |
|
|
| Keep in mind this JSON is only a sketch of the expected shape, not the actual schedule β you'll fill in the real values for each field. |
|
|
| Please use the identifiers exactly as they appear in the instance input β do not rename them and do not invent new labels. |
| - for example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 5, 'nr_jobs': 6, 'jobs': [[[4, 1], [2, 57], [1, 49], [3, 36], [0, 88]], [[4, 27], [0, 14], [1, 74], [3, 78], [2, 26]], [[4, 75], [1, 71], [2, 13], [0, 5], [3, 70]], [[2, 61], [1, 7], [0, 68], [4, 74], [3, 88]], [[1, 74], [0, 44], [3, 83], [4, 87], [2, 46]], [[4, 37], [3, 10], [1, 54], [0, 61], [2, 70]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 64, 'machine': 4, 'duration': 1}, {'task': 1, 'start': 65, 'machine': 2, 'duration': 57}, {'task': 2, 'start': 209, 'machine': 1, 'duration': 49}, {'task': 3, 'start': 279, 'machine': 3, 'duration': 36}, {'task': 4, 'start': 347, 'machine': 0, 'duration': 88}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 27}, {'task': 1, 'start': 27, 'machine': 0, 'duration': 14}, {'task': 2, 'start': 81, 'machine': 1, 'duration': 74}, {'task': 3, 'start': 201, 'machine': 3, 'duration': 78}, {'task': 4, 'start': 279, 'machine': 2, 'duration': 26}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 65, 'machine': 4, 'duration': 75}, {'task': 1, 'start': 258, 'machine': 1, 'duration': 71}, {'task': 2, 'start': 329, 'machine': 2, 'duration': 13}, {'task': 3, 'start': 342, 'machine': 0, 'duration': 5}, {'task': 4, 'start': 403, 'machine': 3, 'duration': 70}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 61}, {'task': 1, 'start': 74, 'machine': 1, 'duration': 7}, {'task': 2, 'start': 118, 'machine': 0, 'duration': 68}, {'task': 3, 'start': 186, 'machine': 4, 'duration': 74}, {'task': 4, 'start': 315, 'machine': 3, 'duration': 88}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 74}, {'task': 1, 'start': 74, 'machine': 0, 'duration': 44}, {'task': 2, 'start': 118, 'machine': 3, 'duration': 83}, {'task': 3, 'start': 260, 'machine': 4, 'duration': 87}, {'task': 4, 'start': 347, 'machine': 2, 'duration': 46}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 27, 'machine': 4, 'duration': 37}, {'task': 1, 'start': 64, 'machine': 3, 'duration': 10}, {'task': 2, 'start': 155, 'machine': 1, 'duration': 54}, {'task': 3, 'start': 209, 'machine': 0, 'duration': 61}, {'task': 4, 'start': 393, 'machine': 2, 'duration': 70}]}]",473.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 5, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': ['A', 'B', 'C', 'D', 'E'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'E', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'C', 'duration': 57}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'B', 'duration': 49}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 'D', 'duration': 36}, {'job_id': 'J1', 'task_id': 4, 'machine_id': 'A', 'duration': 88}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'E', 'duration': 27}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'A', 'duration': 14}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'B', 'duration': 74}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 'D', 'duration': 78}, {'job_id': 'J2', 'task_id': 4, 'machine_id': 'C', 'duration': 26}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'E', 'duration': 75}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'B', 'duration': 71}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'C', 'duration': 13}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 'A', 'duration': 5}, {'job_id': 'J3', 'task_id': 4, 'machine_id': 'D', 'duration': 70}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'C', 'duration': 61}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'B', 'duration': 7}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'A', 'duration': 68}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 'E', 'duration': 74}, {'job_id': 'J4', 'task_id': 4, 'machine_id': 'D', 'duration': 88}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'B', 'duration': 74}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'A', 'duration': 44}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'D', 'duration': 83}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 'E', 'duration': 87}, {'job_id': 'J5', 'task_id': 4, 'machine_id': 'C', 'duration': 46}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'E', 'duration': 37}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'D', 'duration': 10}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'B', 'duration': 54}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 'A', 'duration': 61}, {'job_id': 'J6', 'task_id': 4, 'machine_id': 'C', 'duration': 70}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 64, 'machine': 'E', 'duration': 1}, {'task': 1, 'start': 65, 'machine': 'C', 'duration': 57}, {'task': 2, 'start': 209, 'machine': 'B', 'duration': 49}, {'task': 3, 'start': 279, 'machine': 'D', 'duration': 36}, {'task': 4, 'start': 347, 'machine': 'A', 'duration': 88}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 'E', 'duration': 27}, {'task': 1, 'start': 27, 'machine': 'A', 'duration': 14}, {'task': 2, 'start': 81, 'machine': 'B', 'duration': 74}, {'task': 3, 'start': 201, 'machine': 'D', 'duration': 78}, {'task': 4, 'start': 279, 'machine': 'C', 'duration': 26}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 65, 'machine': 'E', 'duration': 75}, {'task': 1, 'start': 258, 'machine': 'B', 'duration': 71}, {'task': 2, 'start': 329, 'machine': 'C', 'duration': 13}, {'task': 3, 'start': 342, 'machine': 'A', 'duration': 5}, {'task': 4, 'start': 403, 'machine': 'D', 'duration': 70}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 61}, {'task': 1, 'start': 74, 'machine': 'B', 'duration': 7}, {'task': 2, 'start': 118, 'machine': 'A', 'duration': 68}, {'task': 3, 'start': 186, 'machine': 'E', 'duration': 74}, {'task': 4, 'start': 315, 'machine': 'D', 'duration': 88}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 74}, {'task': 1, 'start': 74, 'machine': 'A', 'duration': 44}, {'task': 2, 'start': 118, 'machine': 'D', 'duration': 83}, {'task': 3, 'start': 260, 'machine': 'E', 'duration': 87}, {'task': 4, 'start': 347, 'machine': 'C', 'duration': 46}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 27, 'machine': 'E', 'duration': 37}, {'task': 1, 'start': 64, 'machine': 'D', 'duration': 10}, {'task': 2, 'start': 155, 'machine': 'B', 'duration': 54}, {'task': 3, 'start': 209, 'machine': 'A', 'duration': 61}, {'task': 4, 'start': 393, 'machine': 'C', 'duration': 70}]}]",47,markdown_table,names |
| JSP,JSP,"There's a studio manager juggling several portrait shoots where every shoot needs a round of makeup, a photo session, then a retouch pass; each part must happen on its assigned chair or studio and lasts a set amount of time. The manager needs to schedule those steps so they happen in the right sequence for each client, nothing is left out or doubled up, and no chair or room is booked by two sessions at once. The aim is to make the whole day wrap up as soon as possible β you find that by checking all session finish times and using the latest one as the dayβs end; the smaller that value, the better the schedule. The concrete details are shown below. |
|
|
| They must schedule 8 portrait sessions across 3 assets β sessions J1, J2, J3, J4, J5, J6, J7, J8 on assets A, B, C. |
| For session J1, step 0 runs on B for 1. |
| For session J1, step 1 runs on C for 70. |
| For session J1, step 2 runs on A for 25. |
| For session J2, step 0 runs on B for 82. |
| For session J2, step 1 runs on C for 42. |
| For session J2, step 2 runs on A for 49. |
| For session J3, step 0 runs on B for 19. |
| For session J3, step 1 runs on C for 42. |
| For session J3, step 2 runs on A for 46. |
| For session J4, step 0 runs on C for 19. |
| For session J4, step 1 runs on A for 14. |
| For session J4, step 2 runs on B for 23. |
| For session J5, step 0 runs on C for 95. |
| For session J5, step 1 runs on A for 8. |
| For session J5, step 2 runs on B for 76. |
| For session J6, step 0 runs on B for 15. |
| For session J6, step 1 runs on C for 73. |
| For session J6, step 2 runs on A for 68. |
| For session J7, step 0 runs on A for 13. |
| For session J7, step 1 runs on C for 94. |
| For session J7, step 2 runs on B for 16. |
| For session J8, step 0 runs on C for 13. |
| For session J8, step 1 runs on A for 42. |
| For session J8, step 2 runs on B for 81. |
| The manager judges the day by the latest session finish time; minimizing that value yields the best schedule. |
|
|
| Oh, and when you send the schedule back, please follow this JSON layout β just a simple sketch of the shape I need: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| This is just a friendly form: ""solution"" holds a list of sessions (jobs). Each session has a job id and a list of tasks; each task entry says which step it is (task index), when it starts, which chair or studio it uses (machine), and how long it runs (duration). Think of job as the client/session, task as the ordered step (makeup, photo, retouch), start as the time the step begins, machine as the specific chair/room, and duration as how long that step takes. |
|
|
| This JSON is only the expected shape β not the actual schedule answer. Please make sure to use the exact identifiers from the instance input, without renaming or inventing new labels. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 3, 'nr_jobs': 8, 'jobs': [[[1, 1], [2, 70], [0, 25]], [[1, 82], [2, 42], [0, 49]], [[1, 19], [2, 42], [0, 46]], [[2, 19], [0, 14], [1, 23]], [[2, 95], [0, 8], [1, 76]], [[1, 15], [2, 73], [0, 68]], [[0, 13], [2, 94], [1, 16]], [[2, 13], [0, 42], [1, 81]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 97, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 181, 'machine': 2, 'duration': 70}, {'task': 2, 'start': 251, 'machine': 0, 'duration': 25}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 82}, {'task': 1, 'start': 251, 'machine': 2, 'duration': 42}, {'task': 2, 'start': 293, 'machine': 0, 'duration': 49}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 98, 'machine': 1, 'duration': 19}, {'task': 1, 'start': 293, 'machine': 2, 'duration': 42}, {'task': 2, 'start': 342, 'machine': 0, 'duration': 46}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 335, 'machine': 2, 'duration': 19}, {'task': 1, 'start': 388, 'machine': 0, 'duration': 14}, {'task': 2, 'start': 402, 'machine': 1, 'duration': 23}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 95}, {'task': 1, 'start': 95, 'machine': 0, 'duration': 8}, {'task': 2, 'start': 117, 'machine': 1, 'duration': 76}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 82, 'machine': 1, 'duration': 15}, {'task': 1, 'start': 108, 'machine': 2, 'duration': 73}, {'task': 2, 'start': 181, 'machine': 0, 'duration': 68}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 13}, {'task': 1, 'start': 354, 'machine': 2, 'duration': 94}, {'task': 2, 'start': 448, 'machine': 1, 'duration': 16}]}, {'job': 7, 'tasks': [{'task': 0, 'start': 95, 'machine': 2, 'duration': 13}, {'task': 1, 'start': 108, 'machine': 0, 'duration': 42}, {'task': 2, 'start': 193, 'machine': 1, 'duration': 81}]}]",464.0,"{'problem_type': 'JSP', 'nr_jobs': 8, 'nr_machines': 3, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7', 'J8'], 'machines': ['A', 'B', 'C'], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 'B', 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 'C', 'duration': 70}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 'A', 'duration': 25}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 'B', 'duration': 82}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 'C', 'duration': 42}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 'A', 'duration': 49}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 'B', 'duration': 19}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 'C', 'duration': 42}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 'A', 'duration': 46}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 'C', 'duration': 19}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 'A', 'duration': 14}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 'B', 'duration': 23}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 'C', 'duration': 95}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 'A', 'duration': 8}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 'B', 'duration': 76}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 'B', 'duration': 15}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 'C', 'duration': 73}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 'A', 'duration': 68}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 'A', 'duration': 13}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 'C', 'duration': 94}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 'B', 'duration': 16}, {'job_id': 'J8', 'task_id': 0, 'machine_id': 'C', 'duration': 13}, {'job_id': 'J8', 'task_id': 1, 'machine_id': 'A', 'duration': 42}, {'job_id': 'J8', 'task_id': 2, 'machine_id': 'B', 'duration': 81}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 97, 'machine': 'B', 'duration': 1}, {'task': 1, 'start': 181, 'machine': 'C', 'duration': 70}, {'task': 2, 'start': 251, 'machine': 'A', 'duration': 25}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 'B', 'duration': 82}, {'task': 1, 'start': 251, 'machine': 'C', 'duration': 42}, {'task': 2, 'start': 293, 'machine': 'A', 'duration': 49}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 98, 'machine': 'B', 'duration': 19}, {'task': 1, 'start': 293, 'machine': 'C', 'duration': 42}, {'task': 2, 'start': 342, 'machine': 'A', 'duration': 46}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 335, 'machine': 'C', 'duration': 19}, {'task': 1, 'start': 388, 'machine': 'A', 'duration': 14}, {'task': 2, 'start': 402, 'machine': 'B', 'duration': 23}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 'C', 'duration': 95}, {'task': 1, 'start': 95, 'machine': 'A', 'duration': 8}, {'task': 2, 'start': 117, 'machine': 'B', 'duration': 76}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 82, 'machine': 'B', 'duration': 15}, {'task': 1, 'start': 108, 'machine': 'C', 'duration': 73}, {'task': 2, 'start': 181, 'machine': 'A', 'duration': 68}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 0, 'machine': 'A', 'duration': 13}, {'task': 1, 'start': 354, 'machine': 'C', 'duration': 94}, {'task': 2, 'start': 448, 'machine': 'B', 'duration': 16}]}, {'job': 'J8', 'tasks': [{'task': 0, 'start': 95, 'machine': 'C', 'duration': 13}, {'task': 1, 'start': 108, 'machine': 'A', 'duration': 42}, {'task': 2, 'start': 193, 'machine': 'B', 'duration': 81}]}]",48,nl,names |
| JSP,JSP,"Many people think of repair benches as interchangeable, but here every device requires diagnostics, a parts change, then testing β and each step is fixed to a particular bench and length of time. The challenge for the depot coordinator is to arrange the start times so every device follows its step order, every step stays on its correct bench for the full duration, nothing is skipped or duplicated, and benches never have overlapping tasks. The best arrangement is the one that minimizes how long you wait for the whole batch to be finished β i.e., the moment the very last device completes. The detailed list of units, benches, and durations is shown below. |
|
|
| |
| |
| |
| |
| device_id,step_index,bench_id,step_duration |
| J1,0,1,1 |
| J1,1,2,84 |
| J1,2,3,1 |
| J1,3,0,28 |
| J2,0,2,94 |
| J2,1,0,70 |
| J2,2,1,24 |
| J2,3,3,10 |
| J3,0,1,14 |
| J3,1,0,13 |
| J3,2,3,52 |
| J3,3,2,74 |
| J4,0,3,78 |
| J4,1,2,12 |
| J4,2,1,81 |
| J4,3,0,67 |
| J5,0,3,40 |
| J5,1,0,69 |
| J5,2,2,51 |
| J5,3,1,2 |
| J6,0,0,57 |
| J6,1,1,81 |
| J6,2,3,1 |
| J6,3,2,74 |
|
|
| If you want to give me a candidate schedule, just drop it in this simple JSON shape so I can parse it easily β nothing fancy, just the fields I need. |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of it like a little form: each job (one device) gets a list of its tasks in order; every task entry says which step number it is, when that step starts, which bench (machine) it uses, and how long it runs. Super simple β just fill in the real IDs and numbers. |
|
|
| This JSON is just a sketch of the shape I expect, not the actual schedule β please return the real values for the instance instead of these placeholders. |
|
|
| Please use the identifiers exactly as they appear in the instance input β do not rename them or invent new labels. Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.","{'nr_machines': 4, 'nr_jobs': 6, 'jobs': [[[1, 1], [2, 84], [3, 1], [0, 28]], [[2, 94], [0, 70], [1, 24], [3, 10]], [[1, 14], [0, 13], [3, 52], [2, 74]], [[3, 78], [2, 12], [1, 81], [0, 67]], [[3, 40], [0, 69], [2, 51], [1, 2]], [[0, 57], [1, 81], [3, 1], [2, 74]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 14, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 106, 'machine': 2, 'duration': 84}, {'task': 2, 'start': 190, 'machine': 3, 'duration': 1}, {'task': 3, 'start': 300, 'machine': 0, 'duration': 28}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 94}, {'task': 1, 'start': 94, 'machine': 0, 'duration': 70}, {'task': 2, 'start': 219, 'machine': 1, 'duration': 24}, {'task': 3, 'start': 243, 'machine': 3, 'duration': 10}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 14}, {'task': 1, 'start': 57, 'machine': 0, 'duration': 13}, {'task': 2, 'start': 118, 'machine': 3, 'duration': 52}, {'task': 3, 'start': 315, 'machine': 2, 'duration': 74}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 78}, {'task': 1, 'start': 94, 'machine': 2, 'duration': 12}, {'task': 2, 'start': 138, 'machine': 1, 'duration': 81}, {'task': 3, 'start': 233, 'machine': 0, 'duration': 67}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 78, 'machine': 3, 'duration': 40}, {'task': 1, 'start': 164, 'machine': 0, 'duration': 69}, {'task': 2, 'start': 264, 'machine': 2, 'duration': 51}, {'task': 3, 'start': 315, 'machine': 1, 'duration': 2}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 57}, {'task': 1, 'start': 57, 'machine': 1, 'duration': 81}, {'task': 2, 'start': 170, 'machine': 3, 'duration': 1}, {'task': 3, 'start': 190, 'machine': 2, 'duration': 74}]}]",389.0,"{'problem_type': 'JSP', 'nr_jobs': 6, 'nr_machines': 4, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6'], 'machines': [0, 1, 2, 3], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 1, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 2, 'duration': 84}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 3, 'duration': 1}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 0, 'duration': 28}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 2, 'duration': 94}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 0, 'duration': 70}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 1, 'duration': 24}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 3, 'duration': 10}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 1, 'duration': 14}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 0, 'duration': 13}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 3, 'duration': 52}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 2, 'duration': 74}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 3, 'duration': 78}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 2, 'duration': 12}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 1, 'duration': 81}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 0, 'duration': 67}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 3, 'duration': 40}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 0, 'duration': 69}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 2, 'duration': 51}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 1, 'duration': 2}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 0, 'duration': 57}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 1, 'duration': 81}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 3, 'duration': 1}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 2, 'duration': 74}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 14, 'machine': 1, 'duration': 1}, {'task': 1, 'start': 106, 'machine': 2, 'duration': 84}, {'task': 2, 'start': 190, 'machine': 3, 'duration': 1}, {'task': 3, 'start': 300, 'machine': 0, 'duration': 28}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 94}, {'task': 1, 'start': 94, 'machine': 0, 'duration': 70}, {'task': 2, 'start': 219, 'machine': 1, 'duration': 24}, {'task': 3, 'start': 243, 'machine': 3, 'duration': 10}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 14}, {'task': 1, 'start': 57, 'machine': 0, 'duration': 13}, {'task': 2, 'start': 118, 'machine': 3, 'duration': 52}, {'task': 3, 'start': 315, 'machine': 2, 'duration': 74}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 78}, {'task': 1, 'start': 94, 'machine': 2, 'duration': 12}, {'task': 2, 'start': 138, 'machine': 1, 'duration': 81}, {'task': 3, 'start': 233, 'machine': 0, 'duration': 67}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 78, 'machine': 3, 'duration': 40}, {'task': 1, 'start': 164, 'machine': 0, 'duration': 69}, {'task': 2, 'start': 264, 'machine': 2, 'duration': 51}, {'task': 3, 'start': 315, 'machine': 1, 'duration': 2}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 57}, {'task': 1, 'start': 57, 'machine': 1, 'duration': 81}, {'task': 2, 'start': 170, 'machine': 3, 'duration': 1}, {'task': 3, 'start': 190, 'machine': 2, 'duration': 74}]}]",49,csv,0 |
| JSP,JSP,"On a typical day an engineer is laying out when to run the compile/test steps for a batch of builds. Every build is a short script of steps that have to happen in order, each step takes a fixed amount of time and must land on a specific build server, and servers are one-at-a-time only. The sensible target is to have the whole batch wrapped up quickly β measure a plan by the time the last build finishes, and smaller is better. Every step must take place exactly once and in the given sequence. The concrete items (which build does what, how long, and which server) are listed below. |
|
|
| |
| |
| |
| |
| build_id,step_index,server_id,step_duration |
| J1,0,4,1 |
| J1,1,3,97 |
| J1,2,2,76 |
| J1,3,1,73 |
| J2,0,3,48 |
| J2,1,2,92 |
| J2,2,4,28 |
| J2,3,1,77 |
| J3,0,1,81 |
| J3,1,4,6 |
| J3,2,2,89 |
| J3,3,3,27 |
| J4,0,2,62 |
| J4,1,1,15 |
| J4,2,3,86 |
| J4,3,4,21 |
| J5,0,4,8 |
| J5,1,1,70 |
| J5,2,3,89 |
| J5,3,2,9 |
| J6,0,4,99 |
| J6,1,3,50 |
| J6,2,2,60 |
| J6,3,1,67 |
| J7,0,4,1 |
| J7,1,3,95 |
| J7,2,2,37 |
| J7,3,1,51 |
|
|
| Oh, and when you send the schedule back, please stick to this JSON shape so it's easy to read and parse: |
|
|
| { |
| ""solution"": [ |
| { |
| ""job"": <job_id>, |
| ""tasks"": [ |
| { |
| ""task"": <task_index>, |
| ""start"": <start_time>, |
| ""machine"": <machine_id>, |
| ""duration"": <duration> |
| } |
| ] |
| } |
| ] |
| } |
|
|
| Think of that as a simple form: ""solution"" is a list of job entries; each job has the job identifier and a list of its tasks. For each task, ""task"" is the position in the job's sequence, ""start"" is when that step begins (time), ""machine"" is which build server it runs on, and ""duration"" is how long it takes. Easy and informal β like filling out a schedule sheet. |
|
|
| This JSON is just the expected shape (a sketch) β not the final plan itself. Make sure all identifiers are used exactly as they appear in the instance input β no renaming and no new labels. |
|
|
| - for example: ""Valid identifiers look like plain numbers such as β1β or β23β, single capital letters like βAβ or βBβ, or a capital letter followed by digits like βA1β or βX7β.""","{'nr_machines': 4, 'nr_jobs': 7, 'jobs': [[[3, 1], [2, 97], [1, 76], [0, 73]], [[2, 48], [1, 92], [3, 28], [0, 77]], [[0, 81], [3, 6], [1, 89], [2, 27]], [[1, 62], [0, 15], [2, 86], [3, 21]], [[3, 8], [0, 70], [2, 89], [1, 9]], [[3, 99], [2, 50], [1, 60], [0, 67]], [[3, 1], [2, 95], [1, 37], [0, 51]]]}","[{'job': 0, 'tasks': [{'task': 0, 'start': 8, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 48, 'machine': 2, 'duration': 97}, {'task': 2, 'start': 154, 'machine': 1, 'duration': 76}, {'task': 3, 'start': 259, 'machine': 0, 'duration': 73}]}, {'job': 1, 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 48}, {'task': 1, 'start': 62, 'machine': 1, 'duration': 92}, {'task': 2, 'start': 154, 'machine': 3, 'duration': 28}, {'task': 3, 'start': 182, 'machine': 0, 'duration': 77}]}, {'job': 2, 'tasks': [{'task': 0, 'start': 0, 'machine': 0, 'duration': 81}, {'task': 1, 'start': 109, 'machine': 3, 'duration': 6}, {'task': 2, 'start': 230, 'machine': 1, 'duration': 89}, {'task': 3, 'start': 465, 'machine': 2, 'duration': 27}]}, {'job': 3, 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 62}, {'task': 1, 'start': 151, 'machine': 0, 'duration': 15}, {'task': 2, 'start': 379, 'machine': 2, 'duration': 86}, {'task': 3, 'start': 465, 'machine': 3, 'duration': 21}]}, {'job': 4, 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 8}, {'task': 1, 'start': 81, 'machine': 0, 'duration': 70}, {'task': 2, 'start': 290, 'machine': 2, 'duration': 89}, {'task': 3, 'start': 416, 'machine': 1, 'duration': 9}]}, {'job': 5, 'tasks': [{'task': 0, 'start': 9, 'machine': 3, 'duration': 99}, {'task': 1, 'start': 240, 'machine': 2, 'duration': 50}, {'task': 2, 'start': 356, 'machine': 1, 'duration': 60}, {'task': 3, 'start': 416, 'machine': 0, 'duration': 67}]}, {'job': 6, 'tasks': [{'task': 0, 'start': 108, 'machine': 3, 'duration': 1}, {'task': 1, 'start': 145, 'machine': 2, 'duration': 95}, {'task': 2, 'start': 319, 'machine': 1, 'duration': 37}, {'task': 3, 'start': 356, 'machine': 0, 'duration': 51}]}]",492.0,"{'problem_type': 'JSP', 'nr_jobs': 7, 'nr_machines': 4, 'jobs': ['J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7'], 'machines': [1, 2, 3, 4], 'records': [{'job_id': 'J1', 'task_id': 0, 'machine_id': 4, 'duration': 1}, {'job_id': 'J1', 'task_id': 1, 'machine_id': 3, 'duration': 97}, {'job_id': 'J1', 'task_id': 2, 'machine_id': 2, 'duration': 76}, {'job_id': 'J1', 'task_id': 3, 'machine_id': 1, 'duration': 73}, {'job_id': 'J2', 'task_id': 0, 'machine_id': 3, 'duration': 48}, {'job_id': 'J2', 'task_id': 1, 'machine_id': 2, 'duration': 92}, {'job_id': 'J2', 'task_id': 2, 'machine_id': 4, 'duration': 28}, {'job_id': 'J2', 'task_id': 3, 'machine_id': 1, 'duration': 77}, {'job_id': 'J3', 'task_id': 0, 'machine_id': 1, 'duration': 81}, {'job_id': 'J3', 'task_id': 1, 'machine_id': 4, 'duration': 6}, {'job_id': 'J3', 'task_id': 2, 'machine_id': 2, 'duration': 89}, {'job_id': 'J3', 'task_id': 3, 'machine_id': 3, 'duration': 27}, {'job_id': 'J4', 'task_id': 0, 'machine_id': 2, 'duration': 62}, {'job_id': 'J4', 'task_id': 1, 'machine_id': 1, 'duration': 15}, {'job_id': 'J4', 'task_id': 2, 'machine_id': 3, 'duration': 86}, {'job_id': 'J4', 'task_id': 3, 'machine_id': 4, 'duration': 21}, {'job_id': 'J5', 'task_id': 0, 'machine_id': 4, 'duration': 8}, {'job_id': 'J5', 'task_id': 1, 'machine_id': 1, 'duration': 70}, {'job_id': 'J5', 'task_id': 2, 'machine_id': 3, 'duration': 89}, {'job_id': 'J5', 'task_id': 3, 'machine_id': 2, 'duration': 9}, {'job_id': 'J6', 'task_id': 0, 'machine_id': 4, 'duration': 99}, {'job_id': 'J6', 'task_id': 1, 'machine_id': 3, 'duration': 50}, {'job_id': 'J6', 'task_id': 2, 'machine_id': 2, 'duration': 60}, {'job_id': 'J6', 'task_id': 3, 'machine_id': 1, 'duration': 67}, {'job_id': 'J7', 'task_id': 0, 'machine_id': 4, 'duration': 1}, {'job_id': 'J7', 'task_id': 1, 'machine_id': 3, 'duration': 95}, {'job_id': 'J7', 'task_id': 2, 'machine_id': 2, 'duration': 37}, {'job_id': 'J7', 'task_id': 3, 'machine_id': 1, 'duration': 51}]}","[{'job': 'J1', 'tasks': [{'task': 0, 'start': 8, 'machine': 4, 'duration': 1}, {'task': 1, 'start': 48, 'machine': 3, 'duration': 97}, {'task': 2, 'start': 154, 'machine': 2, 'duration': 76}, {'task': 3, 'start': 259, 'machine': 1, 'duration': 73}]}, {'job': 'J2', 'tasks': [{'task': 0, 'start': 0, 'machine': 3, 'duration': 48}, {'task': 1, 'start': 62, 'machine': 2, 'duration': 92}, {'task': 2, 'start': 154, 'machine': 4, 'duration': 28}, {'task': 3, 'start': 182, 'machine': 1, 'duration': 77}]}, {'job': 'J3', 'tasks': [{'task': 0, 'start': 0, 'machine': 1, 'duration': 81}, {'task': 1, 'start': 109, 'machine': 4, 'duration': 6}, {'task': 2, 'start': 230, 'machine': 2, 'duration': 89}, {'task': 3, 'start': 465, 'machine': 3, 'duration': 27}]}, {'job': 'J4', 'tasks': [{'task': 0, 'start': 0, 'machine': 2, 'duration': 62}, {'task': 1, 'start': 151, 'machine': 1, 'duration': 15}, {'task': 2, 'start': 379, 'machine': 3, 'duration': 86}, {'task': 3, 'start': 465, 'machine': 4, 'duration': 21}]}, {'job': 'J5', 'tasks': [{'task': 0, 'start': 0, 'machine': 4, 'duration': 8}, {'task': 1, 'start': 81, 'machine': 1, 'duration': 70}, {'task': 2, 'start': 290, 'machine': 3, 'duration': 89}, {'task': 3, 'start': 416, 'machine': 2, 'duration': 9}]}, {'job': 'J6', 'tasks': [{'task': 0, 'start': 9, 'machine': 4, 'duration': 99}, {'task': 1, 'start': 240, 'machine': 3, 'duration': 50}, {'task': 2, 'start': 356, 'machine': 2, 'duration': 60}, {'task': 3, 'start': 416, 'machine': 1, 'duration': 67}]}, {'job': 'J7', 'tasks': [{'task': 0, 'start': 108, 'machine': 4, 'duration': 1}, {'task': 1, 'start': 145, 'machine': 3, 'duration': 95}, {'task': 2, 'start': 319, 'machine': 2, 'duration': 37}, {'task': 3, 'start': 356, 'machine': 1, 'duration': 51}]}]",50,csv,1 |
|
|