Dynamic Transfer Policies for Parallel Queues
<|reference_start|>Dynamic Transfer Policies for Parallel Queues: We consider the problem of load balancing in parallel queues by transferring customers between them at discrete points in time. Holding costs accrue as customers wait in the queue, while transfer decisions incur both fixed (setup) and variable costs proportional to the number and direction of transfers. Our work is primarily motivated by inter-facility patient transfers between hospitals during a surge in demand for hospitalization (e.g., during a pandemic). By analyzing an associated fluid control problem, we show that under fairly general assumptions including time-varying arrivals and convex increasing holding costs, the optimal policy in each period partitions the state-space into a well-defined $\textit{no-transfer region}$ and its complement, such that transferring is optimal if and only if the system is sufficiently imbalanced. In the absence of fixed transfer costs, an optimal policy moves the state to the no-transfer region's boundary; in contrast, with fixed costs, the state is moved to the no-transfer region's relative interior. We further leverage the fluid control problem to provide insights on the trade-off between holding and transfer costs, emphasizing the importance of preventing excessive idleness when transfers are not feasible in continuous-time. Using simulation experiments, we investigate the performance and robustness of the fluid policy for the stochastic system. In particular, our case study calibrated using data during the pandemic in the Greater Toronto Area demonstrates that transferring patients between hospitals could result in up to 27.7% reduction in total cost with relatively few transfers.<|reference_end|>
@article{chan2024dynamic,
    title={Dynamic Transfer Policies for Parallel Queues},
    author={Timothy C. Y. Chan, Jangwon Park, Vahid Sarhangian},
    journal={arXiv preprint arXiv:2404.00543},
    year={2024},
    archivePrefix={arXiv},
    eprint={2404.00543},
    primaryClass={math.OC cs.SY eess.SY}
}