Public API
Here, all exported types and methods are listed, which the user needs when using the package.
RoomJuggler.GuestRoomJuggler.JuggleConfigRoomJuggler.RoomRoomJuggler.RoomJugglerJobRoomJuggler.WishRoomJuggler.juggle!RoomJuggler.report
Types
RoomJuggler.Guest — TypeGuest(name::String, gender::Symbol)A guest with a name and a gender.
Fields
name::String: name of the guestgender::Symbol: gender of the guest, currently only supports :M or :F
RoomJuggler.Wish — TypeWish(mail::String, guest_ids::Vector{Int}, gender::Symbol)A wish of multiple guests that want to share the same room.
Fields
mail::String: e-mail the wish was sent withguest_ids::Vector{Int}: guest indices of the guest in this wishgender::Symbol: gender of the guests in the wish, currently only supports :M or :F
RoomJuggler.Room — TypeRoom(name::String, capacity::Int, gender::Symbol)A room containing multiple guests.
Fields
name::String: name of the roomcapacity::Int: number of guests the room can containgender::Symbol: gender of the guests in the room, currently only supports :M or :F
RoomJuggler.RoomJugglerJob — TypeRoomJugglerJob(excel_file::String)A RoomJugglerJob containing the guests, rooms and wishes - a problem that needs juggling!
Arguments
excel_file::String: Excel file with extension.xlsx, containing the guests, rooms and wishes
Fields
n_guests::Int: number of guestsn_wishes::Int: number of wishesn_rooms::Int: number of roomsn_beds::Int: number of all beds in the room, the sum of all room capacitiesropf::RoomOccupancyProblem: room occupancy problem of the female guestsropm::RoomOccupancyProblem: room occupancy problem of the male guests
RoomJuggler.JuggleConfig — TypeJuggleConfig(; [n_iter, beta, t_0, t_min])Configuration of the underlying simulated annealing optimization.
Arguments
n_iter::Int=300: number of iterations per temperature (default=300)beta::Real=0.999: temperature decrease factor (default=0.999, condition: 0 < β < 1)t_0::Real=1.0: starting temperature (default=1.0)t_min::Real=1e-7: minimum temperature (default=1e-7)
Fields
n_iter::Int: number of iterations per temperaturen_total_iter::Int: number of total iterations (n_iter * length(t_history))beta::Float64: temperature decrease factort_0::Float64: starting temperaturet_min::Float64: minimum temperaturet_history::Vector{Float64}: temperature steps
Functions
RoomJuggler.juggle! — Functionjuggle!(rjj::RoomJugglerJob; config=JuggleConfig())Function to start juggling of the guests in the RoomJugglerJob.
Arguments
rjj::RoomJugglerJob:RoomJugglerJobthat gets juggledconfig: two possible options:config::JuggleConfig: same configuration for the female and male problemconfig::Tuple{JuggleConfig, JuggleConfig}: two configurations, the first is for the female problem, the second is for the male problem
RoomJuggler.report — Functionreport(excel_file::String, rjj::RoomJugglerJob)Export a report about the RoomJugglerJob as an Excel-file.
Arguments
excel_file::String: path & name of the exported Excel-file with extension.xlsxrjj::RoomJugglerJob:RoomJugglerJobthe report is about