As a personal trainer I have 3 primary business activities: training/classes, paperwork, and marketing. I have set hours each day/week that commit to those activities. If a client needs to reschedule it must be withing those set hours; this way it doesn’t interfere with my personal life. I simply swap training sessions with other business activities when a client cancels. For clients who cancel regularly I have sessions expire so they have to finish all their sessions within a certain period of time.
This actually allows me to have a 12 hour cancellation policy; clients know upfront that I have limited availability and they have to complete all their sessions within a reasonable time period, but I am reasonable about cancellation requests. This has helped me with the flip side of this issue: clients that won’t cancel even if they’re incredibly sick because they don’t want to lose a session.