BedPlanner NANY 2018 Release

BedPlanner BedPlanner
Download Testdata:
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)

Some numbers:

  • 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

Output files:

  • 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)


Version Date Description/Changes 2017-07-15 Final release version for 2017, used for production run.
Previous versions not documented here

Command-line parameters:


Short Long Type Description/Changes
-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:
-h or -? --help global Show the help message. No planning performed.

  • Version
  • Downloads 108
  • 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