Building on the success of the earlier timetabling competitions, the Integrated Healthcare Timetabling Competition 2024 intends to stimulate research focusing on the challenges of integrated optimization problems. The competition will officially begin 1st September 2024, and will run until 31 March 2025. The award ceremony will take place during EURO 2025 on 22-25 June 2025 in Leeds (UK).

The considered optimization problem integrates three critical problems in healthcare: surgical case planning, patient admission scheduling and nurse-to-room assignment. The complete problem description and an overview of the competition's rules can be found here.

The top three competitors will receive a cash prize (€1100 for first, €700 for second, €400 for third), as well as one free registration to the EURO 2025 conference. An additional prize of €200 is awarded for the best participant that uses only open-source software. There is no limitation on the size of the competing teams.

If you want to receive timely updates about the competition, write us to be included in the designated mailing list.

Dates

Instances

Instances are provided in JSON format with the fixed structure that is described in detail in the specification document. Each instance is contained in a single file. We provide a public dataset composed of 30 instances, named i01, … i30, with a scheduling period ranging from 2 to 4 weeks, and a number of patients ranging from about 50 to about 500. In addition, we provide 5 test instances, test01, … test05 for testing and debugging purposes. For the test dataset, we also provide a solution for each specific instance.

Test dataset

The test dataset can be downloaded here. Solutions for these instances can be found here.

Public dataset

Validator

The validator that certifies the quality of a given solution is provided as a C++ source code and should be compiled using, for example, the GNU compiler g++. The compilation requires that file json.hpp (available here) is in the path. The validator receives as command line parameters the instance and the solution files, as shown in the following example:

./IHTP_Validator.exe toy.json sol-toy.json

To get additional details on constraint violations and individual objectives, the keyword verbose can be added as a third parameter.

File formats

Problem instance files

The problem instances are provided as json files. A small toy example can be found here. The header section in each file specifies general information such the total number of days in the scheduling period, the number of different nurse skill_levels, the list of types of daily shifts shift_types, the enumeration of different age_groups considered in the scheduling and the instance-specific weight set.

		
		"days": 7,
		"skill_levels": 3,
		"shift_types": [
			"early",
			"late",
			"night"
		],
		"age_groups": [
			"infant",
			"adult",
			"elderly"
		],
		"weights": {
			"room_mixed_age": 5,
			"room_nurse_skill": 1,
			"continuity_of_care": 1,
			"nurse_eccessive_workload": 1,
			"open_operating_theater": 50,
			"surgeon_transfer": 5,
			"patient_delay": 10,
			"unscheduled_optional": 300
		},
		...		
		

The next section presents the list of occupants, each characterized by a unique id along with their gender group and age_group as well as the duration of their stay length_of_stay. Two arrays indicate the workload_produced, and the skill_level_required for each shift of their stay. Additionally, each occupant is linked to a room_id, specifying their assigned room.


		"occupants": [
			{
				"id": "a0",
				"gender": "A",
				"age_group": "elderly",
				"length_of_stay": 2,
				"workload_produced": [2, 1, 1, 2, 3, 2],
				"skill_level_required": [1, 2, 0, 0, 0, 0],
				"room_id": "r21"
			},
			...
		]
		

Each patient, as per occupant, is identified by an id, assigned a gender group, an age_group, and their length_of_stay in the hospital. Information regarding the workload_produced, and the skill_level_required for each shift of their stay is also provided.

The patient section includes additional details pertaining to scheduled surgeries. The mandatory field denotes whether a patient is required to be scheduled must be scheduled within the given period, while surgery_release_day indicates the earliest day for surgery (and hospital admission). For mandatory patients, the field surgery_due_day signifies the latest possible surgery date, while optional patients do not have this attribute. Further surgery details include the surgery_duration (in minutes) and the pre-assigned surgeon (surgeon_id).

Additionally, each patient is accompanied by a list of incompatible_room_ids which specifies all the rooms the patient cannot be assigned to.


		"patients": [
			{
				"id": "p5",
				"mandatory": true,
				"gender": "A",
				"age_group": "adult",
				"length_of_stay": 2,
				"surgery_release_day": 1,
				"surgery_due_day": 4,
				"surgery_duration": 30,
				"surgeon_id": "s0",
				"incompatible_room_ids": [
					r1"
				],
				"workload_produced": [3, 2, 1, 1, 1, 1],
				"skill_level_required": [0, 2, 0, 2, 1, 0]
			}
			...
		 ]
		

The nurses section comprises a list of individual nurses, each with their unique identifier id, skill_level, and the list of their working shifts. Each working shift includes the day of the shift, the shift type (shift), and the maximum workload max_load allowed for that shift.


		"nurses": [
			{
				"id": "n00",
				"skill_level": 0,
				"working_shifts": [
					{
						"day": 0,
						"shift": "early",
						"max_load": 10
					},
					{
						"day": 1,
						"shift": "night",
						"max_load": 5
					},
					...
				]
			},
			...
		]
		

Each surgeon has an id and a max_surgery_time list specifying their availability (in minutes) on each day of the scheduling period. Similarly, each operating theater is identified by an id accompanied by an availability list indicating the theater’s availability (in minutes) for each day of the scheduling period. Finally, to each room is associated an id and a capacity (constant during the entire scheduling period).


		"surgeons": [
			{
				"id": "s0",
				"max_surgery_time": [0, 360, 0, 600, 480, 0, 0, 600]
			},
			...
		  ],
		"operating_theaters": [
			{
				"id": "t0",
				"availability": [0, 600, 720, 600, 600, 720, 720]
			},
			...
		],
		"rooms": [
			{
				"id": "r0",
				"capacity": 2
			},
		   ...
		]
		
Solution files

The solution file format is divided into two sections: one about patients and one about nurses. A small toy example can be found here.

The patient section comprises of the list of admitted patients. For each admitted patient it’s necessary to state their id their admission_day as well as the ids representing the room and operating theater they have been assigned to. Non-admitted patients can be either omitted from the solution or be present with the syntax "admission_day": "none".

The nurse section should contain the list of assignments for each nurse. Each assignment should include the day and shift of the working shift and the list of rooms covered by the nurse. If no rooms are covered, the assignment may be omitted or the list of rooms may be empty. If a nurse does not cover any rooms in any of their work shifts, they can be omitted completely.


		{
			"patients": [
				{
					"id": "p00",
					"admission_day": 4,
					"room": "r3",
					"operating_theater": "t0"
				},
				{
					"id": "p02",
					"admission_day": "none"
				},
				...
			],
			"nurses": [
				{
					"id": "n00",
					"assignments": [
						{
							"day": 0,
							"shift": "early",
							"rooms": ["r1", "r4"]
						},
						{
							"day": 1,
							"shift": "night",
							"rooms": ["r4", "r5"]
						},
						{
							"day": 2,
							"shift": "night",
							"rooms": []
						},
						...
					]
				},
				...
			]
		}
		

Organizers

The organization team consists of the following people:


Sponsors

The competition is supported by the following organizations:

Contact

For any questions or comments, please contact us the organizers using this email address.