{"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/reinforcement-learning-for-multi-product","title":"Reinforcement Learning for Multi-Product Multi-Node Inventory Management in Supply Chains","arxiv_id":"2006.04037","date":"2020-06-07","proceeding":null,"authors":["Nazneen N Sultana","Hardik Meisheri","Vinita Baniwal","Somjit Nath","Balaraman Ravindran","Harshad Khadilkar"],"abstract":"This paper describes the application of reinforcement learning (RL) to multi-product inventory management in supply chains. The problem description and solution are both adapted from a real-world business solution. The novelty of this problem with respect to supply chain literature is (i) we consider concurrent inventory management of a large number (50 to 1000) of products with shared capacity, (ii) we consider a multi-node supply chain consisting of a warehouse which supplies three stores, (iii) the warehouse, stores, and transportation from warehouse to stores have finite capacities, (iv) warehouse and store replenishment happen at different time scales and with realistic time lags, and (v) demand for products at the stores is stochastic. We describe a novel formulation in a multi-agent (hierarchical) reinforcement learning framework that can be used for parallelised decision-making, and use the advantage actor critic (A2C) algorithm with quantised action spaces to solve the problem. Experiments show that the proposed approach is able to handle a multi-objective reward comprised of maximising product sales and minimising wastage of perishable products.","url_abs":"https://arxiv.org/abs/2006.04037v1","url_pdf":"https://arxiv.org/pdf/2006.04037v1.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":"reinforcement-learning-for-multi-product","repo_url":"https://github.com/mangushev/inventory_management","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"decision-making","task_name":"Decision Making"},{"task_slug":"hierarchical-reinforcement-learning","task_name":"Hierarchical Reinforcement Learning"},{"task_slug":"management","task_name":"Management"},{"task_slug":"reinforcement-learning","task_name":"Reinforcement Learning"},{"task_slug":"reinforcement-learning-1","task_name":"Reinforcement Learning (RL)"},{"task_slug":"reinforcement-learning-2","task_name":"reinforcement-learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2006.04037","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2006.04037"}},"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":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/mangushev/inventory_management","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":6},"by_repo_kind":{"listed":{"samples":6,"ran":0,"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":"898a604ff6e4f448","entry":"capacity_example","repo":"mangushev/inventory_management","repo_kind":"listed","path":"prepare_data.py","file_url":"https://github.com/mangushev/inventory_management/blob/HEAD/prepare_data.py","link_basis":"harvester_set","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":"898a604ff6e4f448"}},{"code_sha256_prefix":"576971fdc233f0b9","entry":"capacity_parser","repo":"mangushev/inventory_management","repo_kind":"listed","path":"training.py","file_url":"https://github.com/mangushev/inventory_management/blob/HEAD/training.py","link_basis":"harvester_set","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":"576971fdc233f0b9"}},{"code_sha256_prefix":"3ed4206e78e2afb1","entry":"sales_example","repo":"mangushev/inventory_management","repo_kind":"listed","path":"prepare_data.py","file_url":"https://github.com/mangushev/inventory_management/blob/HEAD/prepare_data.py","link_basis":"harvester_set","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":"3ed4206e78e2afb1"}},{"code_sha256_prefix":"58fc74089137ba6a","entry":"sales_parser","repo":"mangushev/inventory_management","repo_kind":"listed","path":"training.py","file_url":"https://github.com/mangushev/inventory_management/blob/HEAD/training.py","link_basis":"harvester_set","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":"58fc74089137ba6a"}},{"code_sha256_prefix":"c72f1565315e01ad","entry":"stock_example","repo":"mangushev/inventory_management","repo_kind":"listed","path":"prepare_data.py","file_url":"https://github.com/mangushev/inventory_management/blob/HEAD/prepare_data.py","link_basis":"harvester_set","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":"c72f1565315e01ad"}},{"code_sha256_prefix":"250f22f0f73460ee","entry":"stock_parser","repo":"mangushev/inventory_management","repo_kind":"listed","path":"training.py","file_url":"https://github.com/mangushev/inventory_management/blob/HEAD/training.py","link_basis":"harvester_set","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":"250f22f0f73460ee"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}