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.
The results of the first phase are now available! You can view the list of finalists as well as the best solutions found on the public dataset.
Participants should submit the following by 1 March 2025 AoE (strict deadline) to the competition email:
The email subject line should start with [IHTC-2024-Submission] and include the name of your team.
In case of multiple submissions by the same team, only the last one will be considered (please refrain from sending many submissions, and try to send directly the final version). No submission will be accepted after the deadline.
At this stage, we do not require the source code, but please be ready to provide it (with suitable instructions) for possible verification. The code will be requested only to the finalists and will be treated as confidential.
A dedicated session on IHTC-2024 will take place within the Automated Timetabling stream at EURO 2025 in Leeds (22–25 June). The session is open to anyone who has worked on any aspect of solving the IHTC problem. Participants are welcome to submit an abstract and present their work, regardless of whether they reached the final or even successfully submitted their solutions within the IHTC-2024 deadline.
The deadline for abstract submission to EURO 2025 is March 8th (for more details, visit the call for abstracts page). For submissions to the IHTC-2024 session, please use the code: dbd431da
We also aim to organize a dedicated session at ORAHS 2025 in Trondheim (6–11 July). If you are interested in presenting your work there, please let us know. If there is enough interest, we will request one or more IHTC-2024 sessions from the organizers.
In this case, the deadline for abstract submission is April 7th, 2025 (for more details, visit the submissions page).
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 10 test instances, test01, … test10 for testing and debugging purposes. For the test dataset, we also provide a solution for each specific instance.
The test dataset can be downloaded here. Solutions for these instances can be found here.
The competition dataset is available here as a zip file.
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.
We are pleased to share that 32 teams submitted their solvers to the IHTC-2024 competition. We would like to thank all participating teams for their contributions.
After collecting and validating the results, we are pleased to announce the finalists (listed in alphabetical order):
Team Name | Affiliation | Team members |
---|---|---|
ORTEC | independent | Wouter Kool, Lotte Berghman, Martijn van Brink, Charlie Ye, Eva van Rooijen, Judith Mourits,Per Kampman |
SDU-IMADA | University of Southern Denmark | Ahmad Othman,Marco Chiarandini |
Twente | University of Twente | Daniela Guericke, Rolf van der Hulst, Asal Karimpour, Ieke Schrader, Matthias Walter |
UGent Mippets | Ghent University | Dries Goossens, David Van Bulck, Samuel Bakker, Karel Devriesere,Lisa Garcia Tercero |
v777v | independent | Venislav Varbanov |
Additionally, we acknowledge some of the other teams (listed in alphabetical order) that submitted their work within the deadline:
Team Name | Affiliation | Team members | Solver |
---|---|---|---|
BIA Team | St. Petersburg State University | Polina Agzyamova, Ekaterina Kalacheva, Igor Lyabakin, Aleksejs Lozkins | |
Bielefeld Healthcare Optimizers | Bielefeld University | Daniel Wetzel, Michael Römer, Arne Henning Witteborg, Jakob Schulte | |
ComBend | RWTH Aachen University | Simon Paulus, Felix Engelhardt, Tabea Brandt, Johanna Leweke | |
DIAM | Delft Institute of Applied Mathematics | Frank de Meijer, Cindy Pistorius | |
4th Dimension | Koç University | Ceyda Özdeş, Ege Erdem Özlü, İdil İşsever, Ezgi Aydın, Zeynep Aydın, Enis Ata Göğüş, Tan Karahasanoğlu | |
GIPS | Technical University of Darmstadt/King’s College London/Philipps-Universität Marburg | Maximilian Kratz, Steffen Zschaler, Jens Kosiol, Andy Schürr | |
Greedys Anatomy | University of Campinas | Ainaras Marão, Bruna Daher de Albuquerque, Ieremies Vieira, João Paulo Francisco da Silva, Lucas Ribeiro Bortoletto, Rachel Vanucchi Saraiva, Rafael Crivellari Saliba Schouery, Renan Fernando Franco da Silva, Vitor Antonio Pimenta Silva | |
Guido-Candelieri | University of Calabria/Università degli Studi di Milano, Bicocca | Rosita Guido, Antonio Candelieri | |
Health Sabauda | Politecnico di Torino | Daniele Giovanni Gioia, Lorenzo Mazza, Manuel Macis, Edoardo Fadda, Paolo Brandimarte | |
HEIG-VD | Haute Ecole d’Ingénierie et de Gestion du Canton de Vaud (HEIG-VD)/University of Applied Sciences of Western Switzerland (HES-SO) | Efstratios Rappos, Jérôme Varani, Stephan Robert | |
ManyWorlds Combinatorial Programming | independent | Jo Devriendt | |
MetaOptiMinds | Dayalbagh Educational Institute | Pihu Agarwal, Sant Saran Vuppuluri, Prem Prakash Vuppuluri | |
Michael Marte | independent | Michael Marte | |
Montéfiore | University of Liege | Laurie Boveroux, Guillaume Derval, Erwann Estève, Manon Gérard, Quentin Louveaux, Bardhyl Miftari | |
NightShift | Polytechnique Montreal | Nohaila Ahssinou, Flore Caye, Prakash Gawas,Erfaneh Nikzad,Camille Pinçon | |
Operation STOR-i Time(tabling) | Lancaster University | Matthew Davison, Adam Page, Ben Lowery, Graham Burgess, Rebecca Hamm | |
Saturn | independent | Daniil Sumin, Ivan Rodin | |
Solution Seekers | Technical University of Munich | Emily Lex, Fabian Fabian Schäfer | |
Spindox_Applied_AI | Sapienza University of Rome | Francesco Romito, Raffaele Mariosa, Alessandro Pannone, Carlo Caligaris, Silvia Colasante, Marco Taiuti, Gabriella Stecco, Immacolata Basile, Tommaso Colombo, Graziano Galiano | |
Team 42 | independent | Franco Peschiera | github |
timeTUcare | TU Wien | Lucas Kletzander | |
Team TUM Operations research | Technical University of Munich | Patrick Poremba | |
Unical_deHealth_2 | University of Calabria | Cristian Belfiore, Domenico Conforti | |
Wiesław Dudek Timetables, Kraków, Poland | independent | Wiesław Dudek | |
WUST | Wroclaw University of Science and Technology | Konrad Gmyrek, Paweł B. Myszkowski |
Below, we report the best results per instance achieved by participants, adhering to the IHTC-2024 competition rules (10-minute timeout and maximum 4-threads parallelism). Additionally, we provide the corresponding .json file containing the reported solutions for reference:
Instance | Cost | Solution |
---|---|---|
i01 | 3842 | sol_i01.json |
i02 | 1264 | sol_i02.json |
i03 | 10490 | sol_i03.json |
i04 | 1884 | sol_i04.json |
i05 | 12760 | sol_i05.json |
i06 | 10671 | sol_i06.json |
i07 | 5026 | sol_i07.json |
i08 | 6291 | sol_i08.json |
i09 | 6682 | sol_i09.json |
i10 | 20820 | sol_i10.json |
Instance | Cost | Solution |
---|---|---|
i11 | 25938 | sol_i11.json |
i12 | 12430 | sol_i12.json |
i13 | 17328 | sol_i13.json |
i14 | 9746 | sol_i14.json |
i15 | 12486 | sol_i15.json |
i16 | 10139 | sol_i16.json |
i17 | 40535 | sol_i17.json |
i18 | 37660 | sol_i18.json |
i19 | 44587 | sol_i19.json |
i20 | 29098 | sol_i20.json |
Instance | Cost | Solution |
---|---|---|
i21 | 24703 | sol_i21.json |
i22 | 47861 | sol_i22.json |
i23 | 37550 | sol_i23.json |
i24 | 33221 | sol_i24.json |
i25 | 11517 | sol_i25.json |
i26 | 64613 | sol_i26.json |
i27 | 51828 | sol_i27.json |
i28 | 75172 | sol_i28.json |
i29 | 12475 | sol_i29.json |
i30 | 37943 | sol_30.json |
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
},
...
]
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": []
},
...
]
},
...
]
}
The organization team consists of the following people:
The competition is supported by the following organizations:
For any questions or comments, please contact us the organizers using this email address.