|Download Testdata: BedPlanner-testdata.zip|
|Last update: 2017-12-26||Support: DonationCoder (NANY 2018) thread|
BedPlanner is an application to match persons on bunk-beds in multiple rooms in several locations. Men and woman are separated by default, special needs, like requiring a low bed or an electric outlet near the bed, are taken into account.
This application is developed to plan the sleeping needs for Red Cross volunteers (medically) supporting walkers in "The Walk of The World" Four Days Marches in Nijmegen, NL, worlds largest yearly walking achievement event with tens of thousands walkers, that has been organized for the 101st time in 2017.
Sleeping accommodations for the walkers is organized separately, this application does the bed-planning for registered Red Cross volunteers only!
The global process for the volunteers is like this:
- A request for volunteers is sent to all Red Cross volunteers
- These volunteers register at a web application (already in place for several years), stating their availbility (mon-fri), team, physical needs (some can't reach the upper bed of a bunk-bed, some require re-breathers) and wishes (special bed/room, male/female mixed room for a few teams)
- Close to the starting date of the event (second week of July) the list of volunteers is exported as an MS Excel (.xlsx) file
- The exported file is read by BedPlanner, and combined with a specific location/bed planning list, resulting in several ordered lists of the people planned on their bed.
- The resulting planning is fed back into the registration system, so the front-desk of the locations can find the bed of anyone that is sought for, and guide people to the bed they where assigned.
BedPlanner replaces a tedious manual planning process, that starts about 1 week before the event, and costs 1 person about all days of that week, (including stress and a bad headache), taking care of new additions and relocations.
These are the main starting points for execution of the planning:
- Men and woman are sleeping separately (exceptions apply, one large team is used to sleeping mixed, in a separate room)
- People using a re-breather are grouped in separate room(s) (a rather small group)
- Teams are to be kept close together, at least at a single location
- Some teams are placed in a specific location/rooms (drivers), to have the least noise disturbance
- Team leads are pre-located together to be easily located in case of emergency
- A single bed can be used by multiple people consecutively (say, mon-wed and thu-fri)
- Volunteers that are available for 1 day only don't get a bed assigned, as are a few volunteers that indicate to sleep elsewhere
- Only bunk-beds are available with a lower and an upper bed
- Bed numbering is switchable, all lower beds are even or odd numbered, and numbering odd/even is consistent over all locations
- Input and output files should be of .csv or .xls(x) type
BedPlanner is a command-line driven application, as it was originally planned as a helper application to the web application used for registration. Eventually the files where sent to me, calculcation done by me, and resulting files returned to the IT team.
There is too much data to be entered to build a GUI application, and as only 1 or 2 people are supposed to build the planning, no effort was put into this feature.
Only test data is available as a separate download (It is named with 2016, but no real data is included for privacy reasons)
- ca. 700 volunteers are involved, in nearly 60 teams, of which ca. 570 need to be placed on a bed, but ca. 120 are pre-located so aren't planned using BedPlanner
- ca. 800 beds are available, of which ca. 500 are used
- 2 locations are available
- 21 rooms are available, ranging from 2 to 172 beds, only the 6 larger rooms (4x 100; 1x 118; 1x 172 beds) are planned, the smaller rooms are pre-located for team leads.
- Planning of all people on their beds takes around 40 seconds on an Intel i7 laptop with 8 GB memory and SSD disk
- Total people list with all beds planned
- Total list of beds with all persons planned
- List per team
- List per room
- List of unplanned persons (should be empty...)
- List of free beds
- Input file with people can be updated with the bed (optional)
|18.104.22.168||2017-07-15||Final release version for 2017, used for production run.|
|Previous versions not documented here|
|-b||--beds||input||Load Beds and Locations from file (csv/xls/xlsx).|
|-p||--persons||input||Load Persons and Teams from file (csv/xls/xlsx).|
|-w||--personsPassword||input||Password for the persons file (xls/xlsx). Optional.|
|-s||--personsSheet||input||The 0-based sheet-number of the persons file (xls/xlsx), default: 0.|
|-r||--result||output||Save Persons-Bed planning to file (csv/xls/xlsx). If same filename as persons file and xls/xlsx, only Bed column will be updated.|
|-e||--secresult||output||Save Persons-Bed planning to secondary file (csv/xls/xlsx).|
|-t||--teams||output||Save all Teams-Bed planning to file (csv/xls/xlsx).|
|-o||--output||output||Save planned Beds to file (csv/xls/xlsx).|
|-f||--freebeds||output||Save available Beds to file (csv/xls/xlsx).|
|-u||--unplanned||output||Save unplanned persons to file (csv/xls/xlsx). Not created if all persons are planned.|
|-l||--leads||output||Save planned persons per team to teamplannedfile.ext (csv/xls/xlsx). Uses secondary file format. If the mask contains a # then the team name is inserted instead of the #, so mask "teams-#-2017.xlsx" results in a filename like "teams-Transport team-2017.xlsx"|
|-m||--rooms||output||Save all beds per room to roomlistfile.ext (csv/xls/xlsx). Uses bedsoutputfile format. If the mask contains 1 or 2 #'s then the location and room name is inserted instead of the #, so mask "2017-#-#.xlsx" results in a filename like "2017-Schouwburg-Toneel.xlsx"|
|-c||--config||global||Load configuration from file (.properties). Default: BedPlanner.properties.|
|-h or -?||--help||global||Show the help message. No planning performed.|
- Downloads 74
- File Size 15.46 MB
- File Count 1
- Create Date December 26, 2017
- Last update 2017-12-26 11:02:29
- Last Updated January 29, 2018