Live model · synthetic theatre · solved with CP-SAT on a Python server

One theatre, one day, every rule at once

The same screens and films, scheduled twice. Top: a rule-of-thumb plan — one film per screen, back to back from opening, starts on the hour or every twenty minutes. Bottom: the optimized plan from a constraint-programming model that respects every operating rule and hits the target seat share.

Daily screening schedule

Solving on the server…

connecting…
1 · Rules

Business rules become constraints

Cleaning time, first-show window, closing time, no dubbed children's films late at night, adult titles after noon, staggered starts so the lobby never jams, the top film in prime time on the biggest screen.

2 · Share

Seat share, not show count

Each film has a target share of the day's seats. The model weights every show by its screen's seats and keeps each film within ±5 points of target, while preferring time slots with higher expected attendance.

3 · Solve

A grid, a chain, a search

Starts sit on a five-minute grid; each screen is a chain of shows linked by cleaning gaps; a CP-SAT search assigns films and times. The production engine adds staged relaxation for days where not every rule can hold.