  A challenge in same-day delivery operations is that delivery requests are
typically not known beforehand, but are instead revealed dynamically during the
day. This uncertainty introduces a trade-off between dispatching vehicles to
serve requests as soon as they are revealed to ensure timely delivery, and
delaying the dispatching decision to consolidate routing decisions with future,
currently unknown requests. In this paper, we study the \emph{dynamic dispatch
waves} problem, a same-day delivery problem in which vehicles are dispatched at
fixed decision moments. At each decision moment, the system operator must
decide which of the known requests to dispatch, and how to route these
dispatched requests. The operator's goal is to minimize the total routing cost
while ensuring that all requests are served on time. We propose \emph{iterative
conditional dispatch} (ICD), an iterative solution construction procedure based
on a sample scenario approach. ICD iteratively solves sample scenarios to
classify requests to be dispatched, postponed, or undecided. The set of
undecided requests shrinks in each iteration until a final dispatching decision
is made in the last iteration. We develop two variants of ICD: one variant
based on thresholds, and another variant based on similarity. A significant
strength of ICD is that it is conceptually simple and easy to implement. This
simplicity does not harm performance: through rigorous numerical experiments,
we show that both variants efficiently navigate the large state and action
spaces of the dynamic dispatch waves problem and quickly converge to a
high-quality solution. Finally, we demonstrate that the threshold-based ICD
variant achieves excellent results on instances from the \emph{EURO meets
NeurIPS 2022} vehicle routing competition, nearly matching the performance of
the winning machine learning-based strategy.
