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.
What the solver optimizes. Enabled objectives are weighed together.
Objective
What it means
Direction
On by default
Weight
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.
maximize
Yes
1.0
Maximize Revenue maximize_revenue
Maximize total revenue from room bookings (RevPAR optimization)
maximize
Yes
1.0
Maximize Guest Satisfaction maximize_satisfaction
Optimize room assignments based on guest preferences and loyalty
maximize
Yes
0.5
Economic Efficiency economic_efficiency
Only make swaps/changes that improve overall economic outcome
A hard constraint must hold or the problem is infeasible; a soft one adds a penalty when broken.
Constraint
What it requires
Kind
On by default
No Overbooking no_overbooking
Total bookings for any room type on any day cannot exceed available rooms
hard
Yes
No Future Overbooking no_future_overbooking
Cannot accept bookings that would cause future capacity overflow
hard
Yes
Room Capacity room_capacity
Room cannot exceed its guest capacity
hard
Yes
No Double Booking no_double_booking
Room cannot be assigned to overlapping bookings
hard
Yes
Room Type Match room_type_match
Booking must get requested room type or upgrade (never downgrade)
hard
Yes
No Downgrades no_downgrades
Cannot downgrade a guest's room type to accommodate another guest
hard
Yes
Bed Configuration Match bed_config_compatibility
Assigned room must have compatible bed configuration
hard
Yes
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.
eligibility
Yes
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.
eligibility
Yes
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.
eligibility
Yes
No Partial Swaps no_partial_swaps
Room swaps must exchange the entire stay duration
hard
No
Swap Date Alignment swap_date_alignment
Room swaps only between bookings with identical date ranges
hard
No
Economic Viability economic_viability
Swaps must not decrease total revenue
hard
No
Preferred Floor preferred_floor
Assign guest to preferred floor when possible
soft
Yes
Quiet Room quiet_room
Assign noise-sensitive guests to quiet rooms
soft
Yes
Accessible Room accessible_room
Assign accessibility-required guests to accessible rooms