Solver as a Service
Sign Up Now →Sign Up Now

Hotel Booking

Hotel Room Assignment / Booking Optimization problem domain. Assigns guests to rooms while maximizing revenue (RevPAR) and guest satisfaction. Supports real-time booking requests, overbooking resolution, and room swaps.

Previewproblem type hotelmanifest 1.0

Objectives#

What the solver optimizes. Enabled objectives are weighed together.

ObjectiveWhat it meansDirectionOn by defaultWeight
Maximize Occupancy
maximize_occupancy
Maximize the number of reservations placed in a room. Executable: occupancy is the count of assignments, which needs no data beyond the candidate itself.maximizeYes1.0
Maximize Revenue
maximize_revenue
Maximize total revenue from room bookings (RevPAR optimization)maximizeYes1.0
Maximize Guest Satisfaction
maximize_satisfaction
Optimize room assignments based on guest preferences and loyaltymaximizeYes0.5
Economic Efficiency
economic_efficiency
Only make swaps/changes that improve overall economic outcomeYes0.8

Problem inputs#

The setup values you send with a problem. The console renders them as form fields.

bookings#

InputNameTypeRequiredDefaultDescription
avg_stay_nightsAverage Stay DurationnumberNo2.5Average number of nights per booking
current_dayCurrent DaynumberNoCurrent day in the planning horizon (day 0 = start)
checked_in_percentageInitial Checked-In GuestsnumberNo30Percentage of current-day bookings that are already checked in
check_in_timeCheck-in TimenumberNo15Standard check-in hour (24h format)
check_out_timeCheck-out TimenumberNo11Standard check-out hour (24h format)

dimensions#

InputNameTypeRequiredDefaultDescription
n_roomsNumber of RoomsnumberYes100Total rooms available in the hotel
n_room_typesNumber of Room TypesnumberYes4Different room categories (standard, deluxe, suite, etc.)
n_guestsNumber of Guests/BookingsnumberYes150Total booking requests to optimize
planning_horizon_daysPlanning HorizonnumberYes30Number of days in the planning period

guests#

InputNameTypeRequiredDefaultDescription
loyalty_tiersLoyalty TiersselectNostandardGuest loyalty tier definitions
preference_weightPreference WeightnumberNo0.3How much to weight guest preferences vs revenue

pricing#

InputNameTypeRequiredDefaultDescription
dynamic_pricingDynamic PricingbooleanNoTrueEnable demand-based pricing adjustments
peak_multiplierPeak Season MultipliernumberNo1.5Rate multiplier for peak demand periods

rooms#

InputNameTypeRequiredDefaultDescription
room_typesRoom Type ConfigurationobjectNoDefine room types with capacity and base rates
floorsNumber of FloorsnumberNo5Hotel floors

Constraints#

A hard constraint must hold or the problem is infeasible; a soft one adds a penalty when broken.

ConstraintWhat it requiresKindOn by default
No Overbooking
no_overbooking
Total bookings for any room type on any day cannot exceed available roomshardYes
No Future Overbooking
no_future_overbooking
Cannot accept bookings that would cause future capacity overflowhardYes
Room Capacity
room_capacity
Room cannot exceed its guest capacityhardYes
No Double Booking
no_double_booking
Room cannot be assigned to overlapping bookingshardYes
Room Type Match
room_type_match
Booking must get requested room type or upgrade (never downgrade)hardYes
No Downgrades
no_downgrades
Cannot downgrade a guest's room type to accommodate another guesthardYes
Bed Configuration Match
bed_config_compatibility
Assigned room must have compatible bed configurationhardYes
Maintenance Blocked
maintenance_blocked
Rooms under maintenance cannot be assigned. ELIGIBILITY, not hard: a room out of service cannot receive a guest at all. There is no plan in which it happens, so the pair is removed from the domain rather than penalised within it.eligibilityYes
No Moving Checked-In Guests
no_moving_checked_in
Guests who have already checked in cannot be moved or swapped. ELIGIBILITY: the guest is physically in the room. Moving them is not an expensive option, it is not an option.eligibilityYes
Upgrades Before Check-In Only
upgrades_before_checkin
Room upgrades can only be applied before guest check-in. ELIGIBILITY: after check-in the decision no longer exists to be made — the window has closed rather than narrowed.eligibilityYes
No Partial Swaps
no_partial_swaps
Room swaps must exchange the entire stay durationhardNo
Swap Date Alignment
swap_date_alignment
Room swaps only between bookings with identical date rangeshardNo
Economic Viability
economic_viability
Swaps must not decrease total revenuehardNo
Preferred Floor
preferred_floor
Assign guest to preferred floor when possiblesoftYes
Quiet Room
quiet_room
Assign noise-sensitive guests to quiet roomssoftYes
Accessible Room
accessible_room
Assign accessibility-required guests to accessible roomssoftYes
Loyalty Upgrade
loyalty_upgrade
Upgrade loyal guests when availability permitssoftYes
Maximize Occupancy
maximize_occupancy
Fill rooms efficiently to maximize occupancy ratesoftNo
Maximize Revenue
maximize_revenue
Optimize for highest revenue assignments (RevPAR)softNo