{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/combinatorial-optimization-enriched-machine","title":"Combinatorial Optimization enriched Machine Learning to solve the Dynamic Vehicle Routing Problem with Time Windows","arxiv_id":"2304.00789","date":"2023-04-03","proceeding":null,"authors":["Léo Baty","Kai Jungel","Patrick S. Klein","Axel Parmentier","Maximilian Schiffer"],"abstract":"With the rise of e-commerce and increasing customer requirements, logistics service providers face a new complexity in their daily planning, mainly due to efficiently handling same day deliveries. Existing multi-stage stochastic optimization approaches that allow to solve the underlying dynamic vehicle routing problem are either computationally too expensive for an application in online settings, or -- in the case of reinforcement learning -- struggle to perform well on high-dimensional combinatorial problems. To mitigate these drawbacks, we propose a novel machine learning pipeline that incorporates a combinatorial optimization layer. We apply this general pipeline to a dynamic vehicle routing problem with dispatching waves, which was recently promoted in the EURO Meets NeurIPS Vehicle Routing Competition at NeurIPS 2022. Our methodology ranked first in this competition, outperforming all other approaches in solving the proposed dynamic vehicle routing problem. With this work, we provide a comprehensive numerical study that further highlights the efficacy and benefits of the proposed pipeline beyond the results achieved in the competition, e.g., by showcasing the robustness of the encoded policy against unseen instances and scenarios.","url_abs":"https://arxiv.org/abs/2304.00789v1","url_pdf":"https://arxiv.org/pdf/2304.00789v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"combinatorial-optimization-enriched-machine","repo_url":"https://github.com/tumbais/euro-meets-neurips-2022","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"combinatorial-optimization","task_name":"Combinatorial Optimization"},{"task_slug":"stochastic-optimization","task_name":"Stochastic Optimization"}],"methods":[{"method_slug":null,"method_name":null}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2304.00789","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2304.00789"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"deterministic:regex_extraction","url":"https://github.com/tumBAIS/euro-meets-neurips-2022","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/tumbais/euro-meets-neurips-2022","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":4,"ran_draft_wrong":3,"ran_honours":5,"ran_fixture":2,"unverified":7},"by_repo_kind":{"official":{"samples":21,"ran":14,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"23fbd12cb9ebd45b","entry":"NeuralNetwork","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"23fbd12cb9ebd45b"}},{"code_sha256_prefix":"df2e0e8bac763335","entry":"NumpyJSONEncoder","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"df2e0e8bac763335"}},{"code_sha256_prefix":"37dc75bdb37e8331","entry":"apply_perturbation","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"37dc75bdb37e8331"}},{"code_sha256_prefix":"17c7151f9a5817a8","entry":"calculate_accuracy_mean","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"17c7151f9a5817a8"}},{"code_sha256_prefix":"232200b94d4c4a11","entry":"calculate_default_accuracy","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"232200b94d4c4a11"}},{"code_sha256_prefix":"f3d2c454c7122b15","entry":"create_ffn_output","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"none","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f3d2c454c7122b15"}},{"code_sha256_prefix":"12ad886a430d54de","entry":"create_ffn_preprocess","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"none","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"12ad886a430d54de"}},{"code_sha256_prefix":"8028b74e11e83174","entry":"create_solution_from_dynamic","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"evaluation/solve_bound.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/evaluation/solve_bound.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8028b74e11e83174"}},{"code_sha256_prefix":"4536b7b5b4e8fae9","entry":"decode_solution","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4536b7b5b4e8fae9"}},{"code_sha256_prefix":"0eafde21a445f1e9","entry":"format_pchgs_instance_as_json","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0eafde21a445f1e9"}},{"code_sha256_prefix":"5011071a64e93d22","entry":"get_edges_in_solution","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5011071a64e93d22"}},{"code_sha256_prefix":"9153250275162f98","entry":"get_model_name","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/run_training.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/run_training.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9153250275162f98"}},{"code_sha256_prefix":"a536b44435a29858","entry":"get_nodes_in_solution","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a536b44435a29858"}},{"code_sha256_prefix":"b5090f3074119346","entry":"make_to_ints","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b5090f3074119346"}},{"code_sha256_prefix":"29a904c381ea69eb","entry":"GraphConvLayer","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"29a904c381ea69eb"}},{"code_sha256_prefix":"9f6eaf73d42e09f1","entry":"GraphNeuralNetwork","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9f6eaf73d42e09f1"}},{"code_sha256_prefix":"6a821ffa842d04e8","entry":"GraphNeuralNetwork_sparse","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6a821ffa842d04e8"}},{"code_sha256_prefix":"a0f31bdd1ab03cbe","entry":"Linear","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a0f31bdd1ab03cbe"}},{"code_sha256_prefix":"f71c69c65ce31fe1","entry":"Optimizer","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f71c69c65ce31fe1"}},{"code_sha256_prefix":"b4b96fb57ac8bc15","entry":"loss_for_perturbation","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b4b96fb57ac8bc15"}},{"code_sha256_prefix":"88a8624dad9dd20b","entry":"solve_pchgs","repo":"tumbais/euro-meets-neurips-2022","repo_kind":"official","path":"training/optimization.py","file_url":"https://github.com/tumbais/euro-meets-neurips-2022/blob/HEAD/training/optimization.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"88a8624dad9dd20b"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}