I've tried Or-Tools and MILP solvers a couple of different ways on this, but they take a surprisingly long time to realize that the solution they generated fairly quickly is in fact minimal. Is there a better way? Does this problem have a name?
Problem
Given a fixed set of meetings, their dates, start times and end times, an individual is required to attend a subset of the meetings respecting some (pseudo-)Boolean constraints (e.g., at least $k$ of a subset of $m$ meetings must be attended; if a particular meeting is attended, a selection of other meetings must be attended). In particular, the individual cannot attend two meetings at once.
Goal
Choose a set of meetings to attend that meets the Boolean constraints and minimizes the total time the individual spends both in meetings and waiting for the next meeting on the same day.
More precisely, minimize the sum of the day lengths, where the length of a day is the duration from the start of the day's earliest attended meeting to the end of the latest attended. (A solution with meetings on Monday at 9am-12pm, 3pm-5pm, and on Wednesday 10am-11am, 3pm-4pm has a total day length of 8 + 6 = 14hrs.)
To simplify, consider one day in isolation, and on it a set $M_D$ of possible meetings $\{m_1, \dots, m_n\}$, with functions $\mathrm{start_D}, \mathrm{end_D} : M_D \to \{0, 1, \dots, 24\}$, where $\mathrm{start_D}(m_i) \lt \mathrm{end_D}(m_i)$.
Assume all meeting times are unique, i.e., $\mathrm{start_D}(m_i) = \mathrm{start_D}(m_j) \implies i = j$ or $\mathrm{end_D}(m_i) \neq \mathrm{end_D}(m_j)$.
Denote by $S_D$ the solution: the (possibly empty) subset of $M_D$ chosen for that day.
Then the objective to minimize is
$$\begin{equation} \mathrm{length_D} = \begin{cases} \max_{m_i \in S_D}\{\mathrm{end_D}(m_i)\} - \min_{m_i \in S_D}\{\mathrm{start_D}(m_i)\} & \text{if $S_D$ is non-empty}\\ 0 & \text{otherwise}\\ \end{cases} \end{equation}$$
Attempt 1 (slower)
Boolean variables: $m_1, \dots, m_n, dayNotEmpty$
Integer variables: $dayLength$, $latestEnd$, $earliestStart$, $earliestStart'$
Objective: $\text{minimize $dayLength$}$
Constraints:
$$\begin{align}&\text{[... other Boolean constraints...]}\\\\ m_i + m_j &\leq 1 \text{ if $m_i$ and $m_j$'s times overlap} & \forall_{i, j}, i \neq j\\\\ dayLength &= latestEnd - earliestStart\\\\ latestEnd &\geq \mathrm{end_D}(m_i) \cdot m_i & \forall_{i} \\\\ earliestStart' &\geq 24 - \mathrm{start_D}(m_i) \cdot m_i & \forall_{i}\\ earliestStart &= (24 - earliestStart') - 24 \cdot (1 - dayNotEmpty)\\\\ (dayNotEmpty &\equiv \bigvee_i m_i)\\ dayNotEmpty &\leq \sum_i m_i\\ dayNotEmpty &\geq m_i &\forall_{i} \end{align}$$
(So that, when no meetings are in the solution, $earliestStart' = 0$ and $dayLength = 0 - ((24 - 0) - 24 \cdot 1) = 0$.)
Attempt 2 (faster)
Boolean variables: $m_1, \dots, m_n, and_{1,2}, \dots, and_{1,n}, \dots, and_{n-1, n}$
Integer variables: $dayLength$
Objective: $\text{minimize $dayLength$}$
Constraints:
$$\begin{align}&\text{[... other Boolean constraints...]}\\\\ m_i + m_j &\leq 1 \text{ if $m_i$ and $m_j$'s times overlap} &\forall_{i, j}, i \neq j\\\\ dayLength &\geq (\mathrm{end_D}(m_i) - \mathrm{start_D}(m_i)) \cdot m_i &\forall_{i}\\ dayLength &\geq (\mathrm{end_D}(m_j) - \mathrm{start_D}(m_i)) \cdot and_{i,j} &\forall_{i, j}, i \neq j, \mathrm{end_D}(m_i) \leq \mathrm{start_D}(m_j)\\\\ (and_{i,j} &\equiv m_i \wedge m_j) & \forall_{i, j}, i \neq j\\ and_{i,j} &\geq m_i + m_j - 1 &\forall_{i, j}, i \neq j \\ and_{i,j} &\leq m_i &\forall_{i, j}, i \neq j\\ and_{i,j} &\leq m_j &\forall_{i, j}, i \neq j \end{align}$$