Course:CPSC312-2019/HospitalScheduler
Hospital Scheduler (Interval Scheduling Problem)
Authors:
Paul, Petal
What is the problem?
State the general problem. If applicable, tell us what information you will use, e.g., a link to some web site that provides the information you used. What will you do?
The classic interval scheduling problem in the hospital domain. User will input jobs (patients) to be completed (treated), via a .csv file. The .csv file will hold the list of patients' names, along with their respective appointment start and appointment end times. The program will determine the optimal solution, i.e. the optimal ordering of the jobs (patients) to maximize the number of jobs (patients) that can be completed by one resource (doctor) without any conflicts arising.
The optimal solution will be displayed on the command line, as well as being printed to a .txt output file.
What is the something extra?
What is the in-depth aspect you will do? If the problem is related to some other group's project, tell us how they fit together. If in doubt, include the information.
We have improved the problem to handle more complex scenarios, such as:
- How to accommodate a new patient arrival when the currently inputted patient list has not yet finished processing.
- How to produce the optimal ordering of the jobs (patients) to maximize the number of jobs (patients) that can be completed by two resources (doctors) without any conflicts arising.
The optimal solution will be displayed on the command line, as well as being printed to a .txt output file.
What did we learn from doing this?
(This should be written after you have done the work.) What is the bottom-line? Is functional programming suitable for (part-of) the task? Make sure you include the evidence for your claims.
Working on this project improved our understanding of Haskell's static typing, as we learned how to create simple yet effective programs through recursion while figuring out how to work with IO types and custom data types. We found that functional programming is definitely suitable for this type of program. That being said, our experience leads us to believe that it is much more useful for implementing the backend of a program, rather than the user interface to be displayed on the command line.
Furthermore, we learned how to handle potential anticipated errors. Finally, we found that our project's goals needed to evolve as we discovered what was possible to create without overly complicating our program. We did however set up our program in such a way that it can be easily modified in the future, in order to handle further obstacles, such as handling another resource (doctor) being added or removed.