Abstract
The kidney exchange problem (KEP) is an increasingly important healthcare management problem in most European and North American countries which consists of matching incompatible patient-donor pairs in a centralized system. Despite the significant progress in the exact solution of KEP instances in recent years, larger instances still pose a challenge especially when non-directed donors are taken into account. In this article, we present a branch-and-price algorithm for the exact solution of KEP in the presence of non-directed donors. This algorithm is based on a disaggregated cycle and chains formulation where subproblems are managed through graph copies. We additionally present a branch-and-price algorithm based on the position-indexed chain-edge formulation as well as two compact formulations. We formalize and analyze the complexity of the resulting pricing problems and identify the conditions under which they can be solved using polynomial-time algorithms. We propose several algorithmic improvements for the branch-and-price algorithms as well as for the solution of pricing problems. We extensively test all of our implementations using a benchmark made up of different types of instances. Our numerical results show that the proposed algorithm can be significantly faster compared to the state-of-the-art. All models and algorithms presented in the paper are gathered in an open-access Julia package, KidneyExchange.jl.
Similar content being viewed by others
Availability of data and materials
The PrefLib instances studied in this article are publicly available. Other instances can be randomly generated using the Julia package available through our GitHub repository. URLs are included in this published article. The randomly generated instances used in this article as well as the analysed results are available through the corresponding author upon reasonable request.
Code availability
The full code was made available for review and is publicly available through our GitHub repository. We remark that a set of optimization packages were used in this study, that were either open source or available for academic use. Specific references are included in this published article.
Notes
https://slurm.schedmd.com/ (accessed July 2022).
Github repository of the code: https://github.com/JohnDickerson/KidneyExchange.
GLPK website: https://www.gnu.org/software/glpk/.
CPLEX website: https://www.gurobi.com.
Gurobi website: https://www.ibm.com/products/ilog-cplex-optimization-studio.
Github repository: https://github.com/jeremyomer/KidneyExchange.jl.
See the JuMP-dev organization.
References
Abraham, D.J., Blum, A., Sandholm, T.: Clearing algorithms for barter exchange markets: enabling nationwide kidney exchanges. In: Proceedings of the 8th ACM Conference on Electronic Commerce (San Diego, California, USA). EC ’07. New York, NY, USA: ACM, pp. 295–304. (2007) https://doi.org/10.1145/1250910.1250954.
Ahuja, R.K., Magnanti, T.L., James, B.: Orlin. “Network flows” (1988)
Anderson, R., Ashlagi, I., Gamarnik, D., Roth, A.E.: Finding long chains in kidney exchange using the traveling salesman problem. In: Proceedings of the National Academy of Sciences 112.3 , pp. 663–668. (2015). https://doi.org/10.1073/pnas.1421853112.
Ashlagi, I., Jaillet, P., Manshadi, V.H.: Kidney exchange in dynamic sparse heterogenous pools (2013). arxiv:1301.3509 (visited on 01/27/2022)
Axelrod, D.A., Schnitzler, M.A., Xiao, H., Irish, W., Tuttle-Newhall, E., Chang, S.-H., Kasiske, B.L., Alhamad, T., Lentine, K.L.: An economic assessment of contemporary kidney transplant practice. Am. J. Transpl. 18(5), 1168–1176 (2018). https://doi.org/10.1111/ajt.14702
Arslan, A., Navaro, P., Omer, J.: KidneyExchange.jl v1.0. (2023). https://doi.org/10.5281/zenodo.10138121. https://github.com/jeremyomer/KidneyExchange.jl/tree/1.0
Bezanson, J., Edelman, A., Karpinski, S., Shah, V.B.: Julia: A Fresh approach to numerical computing. SIAM Rev. 59(1), 65–98 (2017). https://doi.org/10.1137/141000671
Biró, P., de Klundert, J., van, Manlove, D., Pettersson, W., Andersson, T., Burnapp, L., Chromy, P., Delgado, P., Dworczak, P., Haase, B., Hemke, A., Johnson, R., Klimentova, X., Kuypers, D., Costa, A.N., Smeulders, B., Spieksma, F., Valentín, M.O., Viana, A.: Modelling and optimisation in European kidney exchange programmes. Eur. J. Oper. Res. (2019). https://doi.org/10.1016/j.ejor.2019.09.006
Carvalho, M., Lodi, A.: A theoretical and computational equilibria analysis of a multi-player kidney exchange program. Eur. J. Oper. Res. 305(1), 373–385. https://doi.org/10.1016/j.ejor.2022.05.027 (2023)
Constantino, M., Klimentova, X., Viana, A., Rais, A.: New insights on integer-programming models for the kidney exchange problem. Eur. J. Oper. Res. 231(1), 57–68. https://doi.org/10.1016/j.ejor.2013.05.025. (2013)
Delorme, M., García, S., Gondzio, J., Kalcsics, J., Manlove, D., Pettersson, W., Trimble, J.: Improved instance generation for kidney exchange programmes. Comput. Oper. Res. 141, 105707 (2022). https://doi.org/10.1016/j.cor.2022.105707
Desaulniers, G., Desrosiers, J., Solomon, M.M.: Accelerating strategies in column generation methods for vehicle routing and crew scheduling problems. In: Essays and Surveys in Metaheuristics. Vol. 15. Operations Research/Computer Science Interfaces Series. Springer, pp. 309–324 (2002)
Dickerson, J.P., Procaccia, A.D., Sandholm, T.: Optimizing kidney exchange with transplant chains: theory and reality. In: Proceedings of the 11th International Conference on Autonomous Agents and Multiagent Systems (AAMAS 2012). p. 8 (2012)
Dickerson, J.P., Manlove, D.F., Plaut, B., Sandholm, T., Trimble, J.: Position-indexed formulations for kidney exchange. In: Proceedings of the 2016 ACM Conference on Economics and Computation - EC ’16. The 2016 ACM Conference. Maastricht, The Netherlands: ACM Press, pp. 25-42. (2016) https://doi.org/10.1145/2940716.2940759.
Dickerson, J.P., Procaccia, A.D., Sandholm, T.: Failure–aware kidney exchange. Manage. Sci. 65(4), 1768–1791. https://doi.org/10.1287/mnsc.2018.3026. (2019)
Dunning, I., Huchette, J., Lubin, M.: JuMP: a modeling language for mathematical optimization. SIAM Rev. 59(2), 295–320. https://doi.org/10.1137/15M1020575 (2017)
Farnadi, G., St-Arnaud, W., Babaki, B., Carvalho, M.: Individual fairness in kidney exchange programs. In: Proceedings of the AAAI Conference on Artificial Intelligence 35.13, pp. 11496–11505. (2021) https://doi.org/10.1609/aaai.v35i13.17369.
Ferrari, P., Weimar, W., Johnson, R.J., Lim, R.J., Tinckam, K.J.: Kidney paired donation: principles, protocols and programs. Nephrol. Dial. Transpl. 30(8), 1276–1285 (2015). https://doi.org/10.1093/ndt/gfu309.
Forrest, J., Ralphs, T., Santos, H.G., Vigerske, S., Hafer, L., Forrest, J., Kristjansson, B., Jpfasano, E., Lubin, M., Rlougee, J., Jan-Willem, H.-I.-G., Brito, S., Cristina, S., Matthew, T., Matsushima, F., To-St.: COIN-OR Branch-and-Cut Solver. Version releases/2.10.7. Jan. 26 (2022) https://doi.org/10.5281/ZENODO.5904374.
Glorie, K.M., de Klundert, J. J.van, Wagelmans, A.P.M.: Kidney exchange with long chains: an efficient pricing algorithm for clearing barter exchanges with branch-and-price. Manuf. Serv. Oper. Manag. 16(4), 498–512 (2014). https://doi.org/10.1287/msom.2014.0496.
Huangfu, Q., Hall, J. A. J. : Parallelizing the dual revised simplex method. Math. Programm. Comput. 10(1), 119–142. (2018) https://doi.org/10.1007/s12532-017-0130-5.
Klimentova, X., Alvelos, F., Viana, A.: A new branch-and-price approach for the kidney exchange problem. In: Computational Science and Its Applications - ICCSA 2014. pp. 237-252 (2014)
Lam, E., Mak-Hau, V.: Branch-and-cut-and-price for the cardinality- constrained multi-cycle problem in kidney exchange. Comput. Oper. Res. 115, 104852 (2020). https://doi.org/10.1016/j.cor.2019.104852
Mak-Hau, V.: On the kidney exchange problem: cardinality constrained cycle and chain problems on directed graphs: a survey of integer programming approaches. J. Combinat. Optim. 33(1), 35–59 (2017). https://doi.org/10.1007/s10878-015-9932-4
Malik, S., Cole, E.: Foundations and principles of the Canadian living donor paired exchange program. Can. J. Kidney Health Dis. 1, 6 (2014)
Plaut, B., Dickerson, J., Sandholm, T.: Fast optimal clearing of capped-chain barter exchanges. In: Proceedings of the AAAI Conference on Artificial Intelligence. Vol. 30 (2016)
Plaut, B., Dickerson, J.P., Sandholm, T.: Hardness of the pricing problem for chains in barter exchanges (2016). arxiv:1606.00117 (visited on 02/28/2021)
Rapaport, F.T.: Transplantation Proceedings. Vol. 18(3) Suppl. 2. pp. 5-9 (1986)
Riascos-Álvarez, L.C., Bodur, M., Aleman, D.M.: A branch-and-price algorithm enhanced by decision diagrams for the kidney exchange problem (2020). arxiv:2009.13715 (visited on 02/22/2021)
Roth, A. E., Sonmez, T., Unver, M. U.: Kidney exchange. Quart. J. Econ. 119(2), 457–488. https://doi.org/10.1162/0033553041382157 (2004)
Roth, A.E., Sönmez, T., Ünver, M.U.: Efficient kidney exchange: coincidence of wants in markets with compatibility-based preferences. Am. Econ. Rev. 97(3), 828–851. https://doi.org/10.1257/aer.97.3.828 (2007)
Roth, A.E., Sönmez, T., Ünver, M.U.: Pairwise kidney exchange. J. Econ. Theory 125(2), 151–188. https://doi.org/10.1016/j.jet.2005.04.004 (2005)
Saidman, S.L., Roth, A.E., Ünver, T.S., Mutku, D., Francis, L.: Increasing the opportunity of live kidney donation by matching for two- and three-way exchanges. Transplantation 81(5), 773–782. https://doi.org/10.1097/01.tp.0000195775.77081.25 (2006)
Smeulders, B., Bartier, V., Crama, Y., Spieksma, F.C.R.: Recourse in kidney exchange programs. INFORMS J. Comput. 34(2), 1191–1206 (2022). https://doi.org/10.1287/ijoc.2021.1099
Taccari, L.: Integer programming formulations for the elementary shortest path problem. Eur. J. Oper. Res. 252(1), 122–130. https://doi.org/10.1016/j.ejor.2016.01.003 (July 2016)
Tarjan, R.E.: Edge-disjoint spanning trees and depth-first search. Acta Informatica 6(2), 171–185 (1976). https://doi.org/10.1007/BF00268499
Acknowledgements
The authors gratefully thank Pierre Navarro, CNRS research engineer at IRMAR, for his skillful support with Julia Language.
For the purpose of Open Access, a CC-BY public copyright licence has been applied by the authors to the present document and will be applied to all subsequent versions up to the Author Accepted Manuscript arising from this submission.
Funding
The authors declare that no funds, grants, or other support were received during the preparation of this manuscript.
Author information
Authors and Affiliations
Corresponding author
Ethics declarations
Conflict of interest
The authors declare that they have no conflict of interest.
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Experiments presented in this paper were carried out using the PlaFRIM experimental testbed, supported by Inria, CNRS (LABRI and IMB), Université de Bordeaux, Bordeaux INP and Conseil Régional d’Aquitaine (see https://www.plafrim.fr/).
Appendix
Appendix
1.1 6.1 Position-indexed chain-edge formulation (PICEF)
Here, constraints (33) impose that each vertex is involved in at most one chain or cycle, (34) are flow balance constraints and ensure that a chain is formed by the chain-flow (y) variables, (35)–(36) impose that only non-directed donors can initiate a chain and therefore appear in position \(l=1\) and only in position \(l=1\).
1.2 6.2 Detailed numerical results
See Table 4 here.
Rights and permissions
Springer Nature or its licensor (e.g. a society or other partner) holds exclusive rights to this article under a publishing agreement with the author(s) or other rightsholder(s); author self-archiving of the accepted manuscript version of this article is solely governed by the terms of such publishing agreement and applicable law.
About this article
Cite this article
Arslan, A.N., Omer, J. & Yan, F. KidneyExchange.jl: a Julia package for solving the kidney exchange problem with branch-and-price. Math. Prog. Comp. 16, 151–184 (2024). https://doi.org/10.1007/s12532-023-00251-7
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s12532-023-00251-7