A flexible discrete optimization approach to the physician scheduling problem