{"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/deep-reinforcement-learning-meets-graph","title":"Deep Reinforcement Learning meets Graph Neural Networks: exploring a routing optimization use case","arxiv_id":"1910.07421","date":"2019-10-16","proceeding":null,"authors":["Paul Almasan","José Suárez-Varela","Krzysztof Rusek","Pere Barlet-Ros","Albert Cabellos-Aparicio"],"abstract":"Deep Reinforcement Learning (DRL) has shown a dramatic improvement in decision-making and automated control problems. Consequently, DRL represents a promising technique to efficiently solve many relevant optimization problems (e.g., routing) in self-driving networks. However, existing DRL-based solutions applied to networking fail to generalize, which means that they are not able to operate properly when applied to network topologies not observed during training. This lack of generalization capability significantly hinders the deployment of DRL technologies in production networks. This is because state-of-the-art DRL-based networking solutions use standard neural networks (e.g., fully connected, convolutional), which are not suited to learn from information structured as graphs. In this paper, we integrate Graph Neural Networks (GNN) into DRL agents and we design a problem specific action space to enable generalization. GNNs are Deep Learning models inherently designed to generalize over graphs of different sizes and structures. This allows the proposed GNN-based DRL agent to learn and generalize over arbitrary network topologies. We test our DRL+GNN agent in a routing optimization use case in optical networks and evaluate it on 180 and 232 unseen synthetic and real-world network topologies respectively. The results show that the DRL+GNN agent is able to outperform state-of-the-art solutions in topologies never seen during training.","url_abs":"https://arxiv.org/abs/1910.07421v3","url_pdf":"https://arxiv.org/pdf/1910.07421v3.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":"deep-reinforcement-learning-meets-graph","repo_url":"https://github.com/knowledgedefinednetworking/DRL-GNN","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"tasks":[{"task_slug":"decision-making","task_name":"Decision Making"},{"task_slug":"deep-reinforcement-learning","task_name":"Deep Reinforcement Learning"},{"task_slug":"reinforcement-learning","task_name":"Reinforcement Learning"},{"task_slug":"reinforcement-learning-1","task_name":"Reinforcement Learning (RL)"}],"methods":[{"method_slug":"test","method_name":"Test"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1910.07421","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1910.07421"}},"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/knowledgedefinednetworking/DRL-GNN","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"summary":{"unverified":5},"by_repo_kind":{"official":{"samples":5,"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":"b8fbd00be8a3af26","entry":"compute_link_betweenness","repo":"knowledgedefinednetworking/DRL-GNN","repo_kind":"official","path":"DQN/gym-environments/gym_environments/envs/environment1.py","file_url":"https://github.com/knowledgedefinednetworking/DRL-GNN/blob/HEAD/DQN/gym-environments/gym_environments/envs/environment1.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"b8fbd00be8a3af26"}},{"code_sha256_prefix":"d61da9ef74946438","entry":"cummax","repo":"knowledgedefinednetworking/DRL-GNN","repo_kind":"official","path":"DQN/evaluate_DQN.py","file_url":"https://github.com/knowledgedefinednetworking/DRL-GNN/blob/HEAD/DQN/evaluate_DQN.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"d61da9ef74946438"}},{"code_sha256_prefix":"062ef3a5f9104f4b","entry":"exec_lb_model_episodes","repo":"knowledgedefinednetworking/DRL-GNN","repo_kind":"official","path":"DQN/evaluate_DQN.py","file_url":"https://github.com/knowledgedefinednetworking/DRL-GNN/blob/HEAD/DQN/evaluate_DQN.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"062ef3a5f9104f4b"}},{"code_sha256_prefix":"929674564e60ff4b","entry":"exec_sap_model_episodes","repo":"knowledgedefinednetworking/DRL-GNN","repo_kind":"official","path":"DQN/evaluate_DQN.py","file_url":"https://github.com/knowledgedefinednetworking/DRL-GNN/blob/HEAD/DQN/evaluate_DQN.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"929674564e60ff4b"}},{"code_sha256_prefix":"ace56eb90976a556","entry":"generate_nx_graph","repo":"knowledgedefinednetworking/DRL-GNN","repo_kind":"official","path":"DQN/gym-environments/gym_environments/envs/environment1.py","file_url":"https://github.com/knowledgedefinednetworking/DRL-GNN/blob/HEAD/DQN/gym-environments/gym_environments/envs/environment1.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"ace56eb90976a556"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}