{"id":50799932,"url":"https://github.com/grayzing/green-gcn","last_synced_at":"2026-06-12T18:33:57.034Z","repository":{"id":338675801,"uuid":"1058259287","full_name":"grayzing/green-gcn","owner":"grayzing","description":"Advanced O-RU sleep control using Graph Convolutional Deep Q Network + Distributed PER","archived":false,"fork":false,"pushed_at":"2026-05-29T00:38:59.000Z","size":43012,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-29T02:22:59.039Z","etag":null,"topics":["3gpp","5g","deep-q-learning","gnn","graph-neural-network","machine-learning","reinforcement-learning","simulation"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grayzing.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-16T21:04:31.000Z","updated_at":"2026-05-20T00:42:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/grayzing/green-gcn","commit_stats":null,"previous_names":["grayzing/rasmo","grayzing/green-gcn"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/grayzing/green-gcn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grayzing%2Fgreen-gcn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grayzing%2Fgreen-gcn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grayzing%2Fgreen-gcn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grayzing%2Fgreen-gcn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grayzing","download_url":"https://codeload.github.com/grayzing/green-gcn/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grayzing%2Fgreen-gcn/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34258368,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3gpp","5g","deep-q-learning","gnn","graph-neural-network","machine-learning","reinforcement-learning","simulation"],"created_at":"2026-06-12T18:33:56.523Z","updated_at":"2026-06-12T18:33:57.025Z","avatar_url":"https://github.com/grayzing.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GREEN-GCN Testbed\nOpen Radio Access Networks (O-RAN) significantly reduces operating costs, increases flexibility for network operators, and allow for more intelligent cellular networks. In the context of Ultra Dense Networks (UDNs), energy efficiency (EE) is a critical problem, especially due to the dense placement of Radio Units (O-RUs), which drives up energy costs for providers. O-RU sleep switching, where underutilized O-RUs are placed into sleep modes to conserve energy, is a practical and attractive solution. Hard-coded methods such as MILP solvers and heuristics struggle with the dynamic and asymmetrical traffic associated with UDNs. We propose GREEN-GCN: a deep reinforcement learning (DRL) approach to O-RU sleep switching, which leverages a graph convolutional network for intelligent advanced sleep mode (ASM) management of O-RUs. To train the model, we utilized Ape-X distributed prioritized experience replay, ensuring generalization of the model to different network scenarios, and reducing the training time required for convergence of the model.\n\n## Artefact Evaluation\nFirst clone the repo\n\n```bash\ngit clone https://github.com/grayzing/rasmo.git\ncd rasmo\n```\n\nThen install dependencies (after setting up whatever venv)\n```bash\npip install -r requirements.txt\n```\n### Training\nChange your hyperparameters in `hyperparameters.yaml`, then run\n\n```bash\ncd src\npython3 distributed.py\n```\n\nunfortunately you can't read training logs in `/logs` in real-time, since they are `.h5.` To stop your training and read the training logs (which really only record mean loss per training pass), do a KeyboardInterrupt on the `distributed.py` training (usually Ctrl + C on UNIX-like systems), and then\n\n```bash\ncd ../logs\npython3 plot_training.py\n```\n\nIf you've been running the training for long enough, the updated Q model should've been saved anyway. So you can just spin the `distributed.py` back up as normal.\n\n### Quirks/Bugs\n**\"CRITICAL ERROR in Learner Loop: high - low range exceeds valid bounds\"**\nThis means that there is an NaN TD-error that was generated. If you were messing with the reward/state functions, that is why. Revert the reward/state functions and try again.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrayzing%2Fgreen-gcn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrayzing%2Fgreen-gcn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrayzing%2Fgreen-gcn/lists"}