{"id":43556487,"url":"https://github.com/jcrvz/customhys","last_synced_at":"2026-02-03T20:22:05.289Z","repository":{"id":45715664,"uuid":"278207916","full_name":"jcrvz/customhys","owner":"jcrvz","description":"Customising optimisation metaheuristics via hyper-heuristic search (CUSTOMHyS). This framework provides tools for solving, but not limited to, continuous optimisation problems using a hyper-heuristic approach for customising metaheuristics. Such an approach is powered by a strategy based on Simulated Annealing. Also, several search operators serve as building blocks for tailoring metaheuristics. They were extracted from ten well-known metaheuristics in the literature.","archived":false,"fork":false,"pushed_at":"2025-08-21T12:40:25.000Z","size":53764,"stargazers_count":25,"open_issues_count":5,"forks_count":12,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-01-07T17:06:43.368Z","etag":null,"topics":["continuous-optimization","hyperheuristic","metaheuristic-algorithms","metaheuristic-framework","metaheuristic-optimisation","metaheuristics","population-methods"],"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/jcrvz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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-07-08T22:34:10.000Z","updated_at":"2025-10-27T17:06:14.000Z","dependencies_parsed_at":"2023-02-19T02:45:48.360Z","dependency_job_id":"8239938f-d5eb-4670-a193-3456968f1c1b","html_url":"https://github.com/jcrvz/customhys","commit_stats":{"total_commits":258,"total_committers":6,"mean_commits":43.0,"dds":0.3643410852713178,"last_synced_commit":"55a5565f53b3ec95a3bc63b1db07c9f6b38d95b7"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/jcrvz/customhys","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcrvz%2Fcustomhys","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcrvz%2Fcustomhys/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcrvz%2Fcustomhys/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcrvz%2Fcustomhys/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jcrvz","download_url":"https://codeload.github.com/jcrvz/customhys/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcrvz%2Fcustomhys/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29055986,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T20:13:53.544Z","status":"ssl_error","status_checked_at":"2026-02-03T20:13:40.507Z","response_time":96,"last_error":"SSL_read: 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":["continuous-optimization","hyperheuristic","metaheuristic-algorithms","metaheuristic-framework","metaheuristic-optimisation","metaheuristics","population-methods"],"created_at":"2026-02-03T20:22:04.532Z","updated_at":"2026-02-03T20:22:05.284Z","avatar_url":"https://github.com/jcrvz.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# customhys\n\n\u003cdiv\u003e\n    \u003cimg align=\"left\" alt=\"Module Dependency Diagram\" src=\"https://raw.githubusercontent.com/jcrvz/customhys/master/docfiles/chm_logo.png\" title=\"Customhys logo\" width=\"25%\"/\u003e\n\u003c/div\u003e\n\u003cdiv align=\"justify\"\u003e \n    \u003cb\u003eCustomising optimisation metaheuristics via hyper-heuristic search\u003c/b\u003e (CUSTOMHyS). This framework provides tools for solving, but not limited to, continuous optimisation problems using a hyper-heuristic approach for customising metaheuristics. Such an approach is powered by a strategy based on Simulated Annealing. Also, several search operators serve as building blocks for tailoring metaheuristics. They were extracted from ten well-known metaheuristics in the literature.\n\u003c/div\u003e\n\nDetailed information about this framework can be found in [[1, 2]](#references). Plus, the code for each module is well-documented.\n\n\n### 🛠 Requirements: \n\n* Check the [requirements.txt](requirements.txt) file.\n* For Apple Silicon, one may need to install TensorFlow via `conda` such as:\n```shell\nconda install -c apple tensorflow-deps\n```\nFurther information can be found at [Install TensorFlow on Mac M1/M2 with GPU support](https://medium.com/mlearning-ai/install-tensorflow-on-mac-m1-m2-with-gpu-support-c404c6cfb580) by D. Ganzaroli.\n\n## 🧰 Modules\n\nThe modules that comprise this framework depend on some basic Python packages, as well as they liaise each other. The module dependency diagram is presented as follows:\n\n![Module Dependency Diagram](https://github.com/jcrvz/customhys/blob/master/docfiles/dependency_diagram.png?raw=true)\n\n**NOTE:** Each module is briefly described below. If you require further information, please check the corresponding source code.\n\n### 🤯 Problems (benchmark functions)\n\nThis module includes several benchmark functions as classes to be solved by using optimisation techniques. The class structure is based on Keita Tomochika's repository [optimization-evaluation](https://github.com/keit0222/optimization-evaluation).\n\nSource: [``benchmark_func.py``](customhys/benchmark_func.py)\n\n### 👯‍♂️ Population\n\nThis module contains the class Population. A Population object corresponds to a set of agents or individuals within a problem domain. These agents themselves do not explore the function landscape, but they know when to update the position according to a selection procedure.\n\nSource: [``population.py``](customhys/population.py)\n\n### 🦾 Search Operators (low-level heuristics)\n\nThis module has a collection of search operators (simple heuristics) extracted from several well-known metaheuristics in the literature. Such operators work over a population, i.e., modify the individuals' positions. \n\nSource: [``operators.py``](customhys/operators.py)\n\n### 🤖 Metaheuristic (mid-level heuristic)\n\nThis module contains the Metaheuristic class. A metaheuristic object implements a set of search operators to guide a population in a search procedure within an optimisation problem.\n\nSource: [``metaheuristic.py``](customhys/metaheuristic.py)\n\n### 👽 Hyper-heuristic (high-level heuristic)\n\nThis module contains the Hyperheuristic class. Similar to the Metaheuristic class, but in this case, a collection of search operators is required. A hyper-heuristic object searches within the heuristic space to find the sequence that builds the best metaheuristic for a specific problem.\n\nSource: [``hyperheuristic.py``](customhys/hyperheuristic.py)\n\n### 🏭 Experiment\n\nThis module contains the Experiment class.  An experiment object can run several hyper-heuristic procedures for a list of optimisation problems.\n\nSource: [``experiment.py``](customhys/experiment.py)\n\n### 🗜️ Tools\n\nThis module contains several functions and methods utilised by many modules in this package.\n\nSource: [``tools.py``](customhys/tools.py)\n\n### 🧠 Machine Learning\n\nThis module contains the implementation of Machine Learning models which can power a hyper-heuristic model from this framework. In particular, it is implemented a wrapper for a Neural Network model from Tensorflow. Also, contains auxiliar data structures which process sample of sequences to generate training data for Machine Learning models.\n\nSource: [``machine_learning.py``](customhys/machine_learning.py)\n\n### 💾 Data Structure\n\nThe experiments are saved in JSON files. The data structure of a saved file follows a particular scheme described below.\n\n\u003cdetails\u003e\n\u003csummary\u003e Expand structure \u003c/summary\u003e\n\u003cp\u003e\n\n```\ndata_frame = {dict: N}\n|-- 'problem' = {list: N}\n|  |-- 0 = {str}\n:  :\n|-- 'dimensions' = {list: N}\n|  |-- 0 = {int}\n:  :\n|-- 'results' = {list: N}\n|  |-- 0 = {dict: 6}\n|  |  |-- 'iteration' = {list: M}   \n|  |  |  |-- 0 = {int}\n:  :  :  :\n|  |  |-- 'time' = {list: M}\n|  |  |  |-- 0 = {float}\n:  :  :  :\n|  |  |-- 'performance' = {list: M}\n|  |  |  |-- 0 = {float}\n:  :  :  :\n|  |  |-- 'encoded_solution' = {list: M}\n|  |  |  |-- 0 = {int}\n:  :  :  :\n|  |  |-- 'solution' = {list: M}\n|  |  |  |-- 0 = {list: C}\n|  |  |  |  |-- 0 = {list: 3}\n|  |  |  |  |  |-- search_operator_structure\n:  :  :  :  :  :\n|  |  |-- 'details' = {list: M}\n|  |  |  |-- 0 = {dict: 4}\n|  |  |  |  |-- 'fitness' = {list: R}\n|  |  |  |  |  |-- 0 = {float}\n:  :  :  :  :  :\n|  |  |  |  |-- 'positions' = {list: R}\n|  |  |  |  |  |-- 0 = {list: D}\n|  |  |  |  |  |  |-- 0 = {float}\n:  :  :  :  :  :  :\n|  |  |  |  |-- 'historical' = {list: R}\n|  |  |  |  |  |-- 0 = {dict: 5}\n|  |  |  |  |  |  |-- 'fitness' = {list: I}\n|  |  |  |  |  |  |  |-- 0 = {float}\n:  :  :  :  :  :  :  :\n|  |  |  |  |  |  |-- 'positions' = {list: I}\n|  |  |  |  |  |  |  |-- 0 = {list: D}\n|  |  |  |  |  |  |  |  |-- 0 = {float}\n:  :  :  :  :  :  :  :  :\n|  |  |  |  |  |  |-- 'centroid' = {list: I}\n|  |  |  |  |  |  |  |-- 0 = {list: D}\n|  |  |  |  |  |  |  |  |-- 0 = {float}\n:  :  :  :  :  :  :  :  :\n|  |  |  |  |  |  |-- 'radius' = {list: I}\n|  |  |  |  |  |  |  |-- 0 = {float}\n:  :  :  :  :  :  :  :\n|  |  |  |  |  |  |-- 'stagnation' = {list: I}\n|  |  |  |  |  |  |  |-- 0 = {int}\n:  :  :  :  :  :  :  :\n|  |  |  |  |-- 'statistics' = {dict: 10}\n|  |  |  |  |  |-- 'nob' = {int}\n|  |  |  |  |  |-- 'Min' = {float}\n|  |  |  |  |  |-- 'Max' = {float}\n|  |  |  |  |  |-- 'Avg' = {float}\n|  |  |  |  |  |-- 'Std' = {float}\n|  |  |  |  |  |-- 'Skw' = {float}\n|  |  |  |  |  |-- 'Kur' = {float}\n|  |  |  |  |  |-- 'IQR' = {float}\n|  |  |  |  |  |-- 'Med' = {float}\n|  |  |  |  |  |-- 'MAD' = {float}\n:  :  :  :  :  :\n```\nwhere:\n- ```N``` is the number of files within data_files folder\n- ```M``` is the number of hyper-heuristic iterations (metaheuristic candidates)\n- ```C``` is the number of search operators in the metaheuristic (cardinality)\n- ```P``` is the number of control parameters for each search operator\n- ```R``` is the number of repetitions performed for each metaheuristic candidate\n- ```D``` is the dimensionality of the problem tackled by the metaheuristic candidate\n- ```I``` is the number of iterations performed by the metaheuristic candidate\n- ```search_operator_structure``` corresponds to ```[operator_name = {str}, control_parameters = {dict: P}, selector = {str}]```\n\u003c/p\u003e\n\u003c/details\u003e\n\n## 🏗️ Work-in-Progress\n\nThe following modules are available, but they may do not work. They are currently under developing.\n\n### 🌡️ Characterisation\n\nThis module intends to provide metrics for characterising the benchmark functions.\n\nSource: [``characterisation.py``](customhys/characterisation.py)\n\n### 📊 Visualisation\n\nThis module intends to provide several tools for plotting results from the experiments.\n\nSource: [``visualisation.py``](customhys/visualisation.py)\n\n## Sponsors\n\n\u003ca href=\"https://tec.mx/en\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/jcrvz/customhys/raw/master/docfiles/logoTEC_full.png\" width=\"250\"\u003e\u003c/a\u003e\n\u003ca href=\"http://www.cas.cn/\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/jcrvz/customhys/raw/master/docfiles/cas_logo.png\" width=\"250\"\u003e\u003c/a\u003e\n\u003ca href=\"https://www.gob.mx/conacyt\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/jcrvz/customhys/raw/master/docfiles/conacyt-logo.png\" width=\"250\"\u003e\u003c/a\u003e\n\n## References\n\n### Seminal Papers\nThe seminal papers that describe the framework's theoretical background and software implementation are:\n1. [J. M. Cruz-Duarte, I. Amaya, J. C. Ortiz-Bayliss, H. Terashima-Marín, and Y. Shi, _CUSTOMHyS: Customising Optimisation Metaheuristics via Hyper-heuristic Search_, **SoftwareX**, vol. 12, p. 100628, 2020.](https://www.sciencedirect.com/science/article/pii/S2352711020303411)\n1. [J. M. Cruz-Duarte, J. C. Ortiz-Bayliss, I. Amaya, Y. Shi, H. Terashima-Marín, and N. Pillay, _Towards a Generalised Metaheuristic Model for Continuous Optimisation Problems_, **Mathematics**, vol. 8, no. 11, p. 2046, Nov. 2020.](https://www.mdpi.com/2227-7390/8/11/2046)\n1. [J. M. Cruz-Duarte, I. Amaya, J. C. Ortiz-Bayliss, S. E. Connat-Pablos, and H. Terashima-Marín, _A Primary Study on Hyper-Heuristics to Customise Metaheuristics for Continuous Optimisation_. **2020 IEEE Congress on Evolutionary Computation (CEC)**, 2020.](docfiles/SearchOperators_CEC.pdf)\n1. [J. M. Cruz-Duarte, I. Amaya, J. C. Ortiz-Bayliss, S. E. Conant-Pablos, H. Terashima-Marín, H., and Y. Shi. _Hyper-Heuristics to Customise Metaheuristics for Continuous Optimisation_, **Swarm and Evolutionary Computation**, 100935.](https://doi.org/10.1016/j.swevo.2021.100935)\n\n### Published Journal Papers\nThese are the journal articles that have been published using this framework:\n1. [J. M. Tapia-Avitia, J. M. Cruz‐Duarte, I. Amaya, J. C. Ortiz-Bayliss, H. Terashima-Marín, and N. Pillay, _Analysing Hyper-Heuristics based on Neural Networks for the Automatic Design of Population-based Metaheuristics in Continuous Optimisation Problems_, **Swarm and Evolutionary Computation**, 89, 101616, 2024.](https://doi.org/10.1016/j.swevo.2024.101616)\n1. [D. F. Zambrano-Gutierrez, G. H. Valencia-Rivera, J. G. Avina-Cervantes, I. Amaya, and J. M. Cruz-Duarte, _Designing Heuristic-Based Tuners for Fractional-Order PID Controllers in Automatic Voltage Regulator Systems Using a Hyper-heuristic Approach_, **Fractal Fract**, 2024.](https://doi.org/10.3390/fractalfract8040223)\n1. [D. F. Zambrano-Gutierrez, J. M. Cruz-Duarte, J. G. Avina-Cervantes, J. C. Ortiz-Bayliss, J. J. Yanez-Borjas, and I. Amaya, _Automatic Design of Metaheuristics for Practical Engineering Applications_, **IEEE Access**., vol. 11, pp. 7262-7276, 2023.](https://doi.org/10.1109/ACCESS.2023.3236836)\n1. [J. M. Cruz-Duarte, J. C. Ortiz-Bayliss, I. Amaya, and N. Pillay, _Global Optimisation through Hyper-Heuristics: Unfolding Population-Based Metaheuristics_, **Appl. Sci.**, vol. 11, no. 12, p. 5620, 2021.](http://dx.doi.org/10.3390/app11125620)\n\n### Presented Conference Papers\nThese are the conference articles that have been presented using this framework:\n1. [D. F.  Zambrano-Gutierrez, J. M. Cruz-Duarte, J. C. Ortiz-Bayliss, I. Amaya, and J. G. Avina-Cervantes, _Beyond Traditional Tuning: Unveiling Metaheuristic Operator Trends in PID Control Tuning for Automatic Voltage Regulation_, **2024 IEEE Congress on Evolutionary Computation (CEC)**, 2024.](https://doi.org/10.1109/CEC60901.2024.10611968)\n1. [G. Pérez-Espinosa, J. M. Cruz-Duarte, I. Amaya, J. C. Ortiz-Bayliss, H. Terashima-Marín, and N. Pillay, _Tailoring Metaheuristics for Designing Thermodynamic-Optimal Cooling Devices for Microelectronic Thermal Management Applications_, **2024 IEEE Congress on Evolutionary Computation (CEC)**, 2024.](https://doi.org/10.1109/CEC60901.2024.10611938)\n1. [D. Acosta-Ugalde, J. M. Cruz-Duarte, S. E. Conant-Pablos, and J. G. Falcón-Cardona, _Beyond 'Novel' Metaphor-based Metaheuristics: An Interactive Algorithm Design Software_, **2024 IEEE Congress on Evolutionary Computation (CEC)**, 2024.](https://doi.org/10.1109/CEC60901.2024.10611912)\n1. [D. F. Zambrano-Gutierrez, A. C. Molina-Porras, J. G. Avina-Cervantes, R. Correa, and J. M. Cruz-Duarte, _Designing Heuristic-Based Tuners for PID Controllers in Automatic Voltage Regulator Systems Using an Automated Hyper-Heuristic Approach_, **2023 IEEE Symposium Series on Computational Intelligence (SSCI)**, Mexico City, Mexico, 2023, pp. 1263-1268.](https://doi.org/10.1109/SSCI52147.2023.10371925)\n1. [D. F. Zambrano-Gutierrez, A. C. Molina-Porras, E. Ovalle-Magallanes, I. Amaya, J. C. Ortiz-Bayliss, J. G. Avina-Cervantes, and J. M. Cruz-Duarte,  _SIGNRL: A Population-Based Reinforcement Learning Method for Continuous Control_, **2023 IEEE Symposium Series on Computational Intelligence (SSCI)**, Mexico City, Mexico, 2023, pp. 1443-1448.](https://doi.org/10.1109/SSCI52147.2023.10371875)\n1. [D. F. Zambrano-Gutierrez, J. M. Cruz-Duarte, and H. Castañeda, _Automatic Hyper-Heuristic to Generate Heuristic-based Adaptive Sliding Mode Controller Tuners for Buck-Boost Converters_, in **The Genetic and Evolutionary Computation Conference (GECCO)**, 2023, pp. 1-8. **Nominated to Best Paper Award**](https://dl.acm.org/doi/10.1145/3583131.3590510)\n1. [J. M. Tapia-Avitia, J. M. Cruz-Duarte, I. Amaya, J. C. Ortiz-Bayliss, H. Terashima-Marin, and N. Pillay. _A Primary Study on Hyper-Heuristics Powered by Artificial Neural Networks for Customising Population-based Metaheuristics in Continuous Optimisation Problems_, **2022 IEEE Congress on Evolutionary Computation (CEC)**, 2022.](https://doi.org/10.1109/CEC55065.2022.9870275)\n1. [J. M. Cruz-Duarte, I. Amaya, J. C. Ortiz-Bayliss, N. Pillay. _A Transfer Learning Hyper-heuristic Approach for Automatic Tailoring of Unfolded Population-based Metaheuristics_, **2022 IEEE Congress on Evolutionary Computation (CEC)**, 2022.](https://doi.org/10.1109/CEC55065.2022.9870426)\n1. [J. M. Cruz-Duarte, I. Amaya, J. C. Ortiz-Bayliss, N. Pillay. _Automated Design of Unfolded Metaheuristics and the Effect of Population Size_. **2021 IEEE Congress on Evolutionary Computation (CEC)**, 1155–1162, 2021.](https://doi.org/10.1109/CEC45853.2021.9504879)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcrvz%2Fcustomhys","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjcrvz%2Fcustomhys","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcrvz%2Fcustomhys/lists"}