{"id":38813937,"url":"https://github.com/aims-umich/neorl","last_synced_at":"2026-01-17T12:57:52.794Z","repository":{"id":38050681,"uuid":"244514373","full_name":"aims-umich/neorl","owner":"aims-umich","description":"NeuroEvolution Optimization with Reinforcement Learning","archived":false,"fork":false,"pushed_at":"2025-02-16T21:48:26.000Z","size":169843,"stargazers_count":69,"open_issues_count":8,"forks_count":18,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-01-14T09:15:49.146Z","etag":null,"topics":["evolutionary-algorithms","large-scale","neuroevolution","optimization-algorithms","reinforcement-learning"],"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/aims-umich.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":"2020-03-03T01:33:46.000Z","updated_at":"2025-12-24T02:30:08.000Z","dependencies_parsed_at":"2024-08-20T04:35:46.682Z","dependency_job_id":"41f83cde-6e6f-424e-a629-0f428150f04e","html_url":"https://github.com/aims-umich/neorl","commit_stats":{"total_commits":315,"total_committers":6,"mean_commits":52.5,"dds":0.5746031746031746,"last_synced_commit":"628edaedf2c107cf79099f4e0d25fd2b71bb4b38"},"previous_names":["aims-umich/neorl","mradaideh/neorl"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/aims-umich/neorl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aims-umich%2Fneorl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aims-umich%2Fneorl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aims-umich%2Fneorl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aims-umich%2Fneorl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aims-umich","download_url":"https://codeload.github.com/aims-umich/neorl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aims-umich%2Fneorl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28508882,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T11:50:55.898Z","status":"ssl_error","status_checked_at":"2026-01-17T11:50:55.569Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["evolutionary-algorithms","large-scale","neuroevolution","optimization-algorithms","reinforcement-learning"],"created_at":"2026-01-17T12:57:52.670Z","updated_at":"2026-01-17T12:57:52.762Z","avatar_url":"https://github.com/aims-umich.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"docs/logo.png\" align=\"right\" width=\"40%\"/\u003e\n\n\u003c!---\n[![Build Status](https://travis-ci.com/hill-a/stable-baselines.svg?branch=master)](https://travis-ci.com/hill-a/stable-baselines) [![Documentation Status](https://readthedocs.org/projects/stable-baselines/badge/?version=master)](https://stable-baselines.readthedocs.io/en/master/?badge=master) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/3bcb4cd6d76a4270acb16b5fe6dd9efa)](https://www.codacy.com/app/baselines_janitors/stable-baselines?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=hill-a/stable-baselines\u0026amp;utm_campaign=Badge_Grade) [![Codacy Badge](https://api.codacy.com/project/badge/Coverage/3bcb4cd6d76a4270acb16b5fe6dd9efa)](https://www.codacy.com/app/baselines_janitors/stable-baselines?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=hill-a/stable-baselines\u0026utm_campaign=Badge_Coverage)\n---\u003e\n\n# NEORL\n\nNEORL (**N**euro**E**volution **O**ptimization with **R**einforcement **L**earning) is a set of implementations of hybrid algorithms combining neural networks and evolutionary computation based on a wide range of machine learning and evolutionary intelligence architectures. NEORL aims to solve large-scale optimization problems relevant to operation \u0026 optimization research, engineering, business, and other disciplines. \n\nNEORL can be used for multidisciplinary applications for research, industrial, academic, and/or teaching purposes. NEORL can be used as a standalone platform or an additional benchmarking tool to supplement or validate other optimization packages. Our objective when we built NEORL is to give the user a simple and easy-to-use framework with an access to a wide range of algorithms, covering both standalone and hybrid algorithms in evolutionary, swarm, supervised learning, deep learning, and reinforcement learning. We hope NEORL will allow beginners to enjoy more advanced optimization and algorithms, without being involved in too many theoretical/implementation details, and give experts an opportunity to solve large-scale optimization problems.\n\n## Documentation\n\nDocumentation is available online: [https://neorl.readthedocs.io/en/latest/index.html](https://neorl.readthedocs.io/en/latest/index.html)\n\nThe framework paper is available online: [https://doi.org/10.1016/j.nucengdes.2023.112423](https://doi.org/10.1016/j.nucengdes.2023.112423)\n\n## Copyright\n\n\u003cimg src=\"docs/copyright.png\" align=\"right\" width=\"40%\"/\u003e\n\nThis repository and its content are copyright of [Exelon Corporation](https://www.exeloncorp.com/) © in collaboration with [MIT](https://web.mit.edu/nse/) Nuclear Science and Engineering 2021. All rights reserved.\n\nIn January 2023, a [University of Michigan team](https://ners.engin.umich.edu/) took over maintaining this repository after its founder, [Majdi Radadideh](https://ners.engin.umich.edu/people/radaideh-majdi/), joined their faculty. Now NEORL is part of the Artificial Intelligence and Multiphysics Simulations (AIMS) Lab at the University of Michigan. \n\nYou can read the first successful and the baseline application of NEORL for nuclear fuel optimization in this [News Article](https://news.mit.edu/2020/want-cheaper-nuclear-energy-turn-design-process-game-1217).\n\n## Basic Features\n\n| **Features**                             | **NEORL**                         \n| -----------------------------------------| ----------------------------------- \n| Reinforcement Learning (standalone)      | :heavy_check_mark:                |\n| Evolutionary Computation (standalone)    | :heavy_check_mark:                |\n| Hybrid Neuroevolution                    | :heavy_check_mark:                |\n| Supervised Learning                      | :heavy_check_mark:                |\n| Parallel processing                      | :heavy_check_mark:                |\n| Combinatorial/Discrete Optimization      | :heavy_check_mark:                |\n| Continuous Optimization                  | :heavy_check_mark:                |\n| Mixed Discrete/Continuous Optimization   | :heavy_check_mark:                |\n| Hyperparameter Tuning                    | :heavy_check_mark:                |\n| Ipython / Notebook friendly              | :heavy_check_mark:                |\n| Detailed Documentation                   | :heavy_check_mark:                |\n| Advanced logging                         | :heavy_check_mark:                |\n| Optimization Benchmarks                  | :heavy_check_mark:                |\n\n### Knowledge Prerequisites\n\n**Note: despite the simplicity of NEORL usage, most algorithms, especially the neuro-based, need some basic knowledge about the optimization research and neural networks in supervised and reinforcement learning**. Using NEORL without sufficient knowledge may lead to undesirable results due to the poor selection of algorithm hyperparameters. You should not utilize this package without basic knowledge in machine learning and optimization. \n\n## Safe Installation (Strongly Recommended)\n\nSafe installation will setup NEORL in a separate virtual environment with its own dependencies. This eliminates any conflict with your existing package versions (e.g. numpy, Tensorflow).\n\nTo install on Linux, here are the steps:\n\nhttps://neorl.readthedocs.io/en/latest/guide/detinstall.html\n\nFor Windows, the steps can be found here:\n\nhttps://neorl.readthedocs.io/en/latest/guide/detinstall.html#windows-10\n\n## Quick Installation\n\nFor both Ubuntu and Windows, you can install NEORL via pip\n\n```\npip install neorl\n```\n\nHowever, we strongly recommend following safe installation steps to avoid any conflict between NEORL dependencies (e.g. TensorFlow) and your current Python packages. \n\n## Testing NEORL Installation\n\nUpon successful installation, NEORL offers a robust unit test package to test all algorithms, you can run the tests via terminal using \n\n```\nneorl --test\n```\n\nAll unit tests in NEORL can be executed using pytest runner. If pytest is not installed, please use\n```\npip install pytest pytest-cov\n```\nbefore running the tests. \n\n## Example\n\nHere is a quick example of how to use NEORL to minimize a 5-D sphere function:\n```python\n#---------------------------------\n# Import packages\n#---------------------------------\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom neorl import DE, XNES\n\n#---------------------------------\n# Fitness\n#---------------------------------\n#Define the fitness function\ndef FIT(individual):\n    \"\"\"Sphere test objective function.\n            F(x) = sum_{i=1}^d xi^2\n            d=1,2,3,...\n            Range: [-100,100]\n            Minima: 0\n    \"\"\"\n\n    return sum(x**2 for x in individual)\n\n#---------------------------------\n# Parameter Space\n#---------------------------------\n#Setup the parameter space (d=5)\nnx=5\nBOUNDS={}\nfor i in range(1,nx+1):\n    BOUNDS['x'+str(i)]=['float', -100, 100]\n\n#---------------------------------\n# DE\n#---------------------------------\nde=DE(mode='min', bounds=BOUNDS, fit=FIT, npop=50, CR=0.5, F=0.7, ncores=1, seed=1)\nx_best, y_best, de_hist=de.evolute(ngen=120, verbose=0)\nprint('---DE Results---', )\nprint('x:', x_best)\nprint('y:', y_best)\n\n#---------------------------------\n# NES\n#---------------------------------\nx0=[-50]*len(BOUNDS)\namat = np.eye(nx)\nxnes=XNES(mode='min', bounds=BOUNDS, fit=FIT, npop=50, eta_mu=0.9,\n          eta_sigma=0.5, adapt_sampling=True, seed=1)\nx_best, y_best, nes_hist=xnes.evolute(120, x0=x0, verbose=0)\nprint('---XNES Results---', )\nprint('x:', x_best)\nprint('y:', y_best)\n\n\n#---------------------------------\n# Plot\n#---------------------------------\n#Plot fitness for both methods\nplt.figure()\nplt.plot(np.array(de_hist), label='DE')\nplt.plot(np.array(nes_hist['fitness']), label='NES')\nplt.xlabel('Generation')\nplt.ylabel('Fitness')\nplt.legend()\nplt.show()\n```\n\n\n\u003c!---\n## Enjoy NEORL with Colab Notebooks !\n\nAll the following examples can be executed online using Google colab notebooks:\n- [Sphere](https://github.com/araffin/rl-tutorial-jnrr19)\n- [Pressure Vessel](https://github.com/Stable-Baselines-Team/rl-colab-notebooks)\n- [Welded Beam](https://colab.research.google.com/github/Stable-Baselines-Team/rl-colab-notebooks/blob/master/stable_baselines_getting_started.ipynb)\n---\u003e\n\n## Implemented Algorithms\n\nNEORL offers a wide range of algorithms, where some algorithms could be used with a specific parameter space.\n\n| **Algorithm**       | **Discrete Space** | **Continuous Space**| **Mixed Space**    | **Multiprocessing**|   \n| ------------------- | ------------------ | ------------------  | ------------------ | ------------------ |\n| ACER                | :heavy_check_mark: | :x:                 | :x:                | :heavy_check_mark: |\n| ACKTR               | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| A2C                 | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| PPO                 | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| DQN                 | :heavy_check_mark: | :x:                 | :x:                | :x:                |\n| ES                  | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| PSO                 | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| DE                  | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| XNES                | :x:                | :heavy_check_mark:  | :x:                | :heavy_check_mark: |\n| GWO                 | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| PESA                | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| PESA2               | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| RNEAT               | :x:                | :heavy_check_mark:  | :x:                | :heavy_check_mark: |\n| FNEAT               | :x:                | :heavy_check_mark:  | :x:                | :heavy_check_mark: |\n| SA                  | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| SSA                 | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| WOA                 | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| JAYA                | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| MFO                 | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| HHO                 | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| BAT                 | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| PPO-ES              | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| ACKTR-DE            | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| ACO                 | :x:                | :heavy_check_mark:  | :x:                | :heavy_check_mark: |\n| NGA                 | :x:                | :heavy_check_mark:  | :x:                | :x:                |\n| NHHO                | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| CS                  | :heavy_check_mark: | :heavy_check_mark:  | :heavy_check_mark: | :heavy_check_mark: |\n| TS                  | :heavy_check_mark: | :heavy_check_mark:  | :x:                | :x:                |\n\n## Major Founding Papers of NEORL\n\n1- Radaideh, M. I., Du, K., Seurin, P., Seyler, D., Gu, X., Wang, H., \u0026 Shirvan, K. (2023). NEORL: NeuroEvolution Optimization with Reinforcement Learning—Applications to carbon-free energy systems. Nuclear Engineering and Design, 412, 112423.\n\n2- Radaideh, M. I., Wolverton, I., Joseph, J., Tusar, J. J., Otgonbaatar, U., Roy, N., Forget, B., Shirvan, K. (2021). Physics-informed reinforcement learning optimization of nuclear assembly design. *Nuclear Engineering and Design*, **372**, p. 110966.\n\n3- Radaideh, M. I., Shirvan, K. (2021). Rule-based reinforcement learning methodology to inform evolutionary algorithms for constrained optimization of engineering applications. *Knowledge-Based Systems*, **217**, p. 106836.\n\n4- Radaideh, M. I., Forget, B., \u0026 Shirvan, K. (2021). Large-scale design optimisation of boiling water reactor bundles with neuroevolution. *Annals of Nuclear Energy*, **160**, p. 108355.\n\n## Citing the Project\n\nTo cite this repository in publications:\n\n```\n@article{radaideh2023neorl,\n  title={NEORL: NeuroEvolution Optimization with Reinforcement Learning—Applications to carbon-free energy systems},\n  author={Radaideh, Majdi I and Du, Katelin and Seurin, Paul and Seyler, Devin and Gu, Xubo and Wang, Haijia and Shirvan, Koroush},\n  journal={Nuclear Engineering and Design},\n  volume={412},\n  pages={112423},\n  year={2023},\n  publisher={Elsevier}\n}\n```\n\nPaper link: [https://doi.org/10.1016/j.nucengdes.2023.112423](https://doi.org/10.1016/j.nucengdes.2023.112423)\n\n## Maintainers\n\nSee our team here [Contributors](https://neorl.readthedocs.io/en/latest/misc/contrib.html). We are welcoming new contributors to the project. \n\n**Important Note**: We do not do technical support and we do not answer personal questions via email.\n\n## Acknowledgments\n\nNEORL was established in MIT back to 2020 with feedback, validation, and usage of different colleagues: Issac Wolverton (MIT Quest for Intelligence), Joshua Joseph (MIT Quest for Intelligence), Benoit Forget (MIT Nuclear Science and Engineering), Ugi Otgonbaatar (Exelon Corporation), and James Tusar (Exelon Corporation). We also thank our fellows at [Stable Baselines](https://github.com/hill-a/stable-baselines), [DEAP](https://github.com/DEAP/deap), and [EvoloPy](https://github.com/7ossam81/EvoloPy) for sharing their implementation, which inspired us to leverage our optimization classes.  \n\nIn January 2023, a University of Michigan team took over maintaining this repository after its founder, Majdi Radadideh, joined their faculty. Now NEORL is part of the Artificial Intelligence and Multiphysics Simulations (AIMS) Lab at the University of Michigan. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faims-umich%2Fneorl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faims-umich%2Fneorl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faims-umich%2Fneorl/lists"}