Skip to main content

customhys

Module Dependency Diagram
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.

Detailed information about this framework can be found in [1, 2]. Plus, the code for each module is well-documented.

🛠 Requirements:

  • Check the requirements.txt file.
  • For Apple Silicon, one may need to install TensorFlow via conda such as:
conda install -c apple tensorflow-deps

Further information can be found at Install TensorFlow on Mac M1/M2 with GPU support by D. Ganzaroli.

🧰 Modules

The 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:

Module Dependency Diagram

NOTE: Each module is briefly described below. If you require further information, please check the corresponding source code.

🤯 Problems (benchmark functions)

This 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.

Source: benchmark_func.py

👯‍♂️ Population

This 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.

Source: population.py

🦾 Search Operators (low-level heuristics)

This 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.

Source: operators.py

🤖 Metaheuristic (mid-level heuristic)

This 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.

Source: metaheuristic.py

👽 Hyper-heuristic (high-level heuristic)

This 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.

Source: hyperheuristic.py

🏭 Experiment

This module contains the Experiment class. An experiment object can run several hyper-heuristic procedures for a list of optimisation problems.

Source: experiment.py

🗜️ Tools

This module contains several functions and methods utilised by many modules in this package.

Source: tools.py

🧠 Machine Learning

This 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.

Source: machine_learning.py

💾 Data Structure

The experiments are saved in JSON files. The data structure of a saved file follows a particular scheme described below.

Expand structure

data_frame = {dict: N}
|-- 'problem' = {list: N}
|  |-- 0 = {str}
:  :
|-- 'dimensions' = {list: N}
|  |-- 0 = {int}
:  :
|-- 'results' = {list: N}
|  |-- 0 = {dict: 6}
|  |  |-- 'iteration' = {list: M}
|  |  |  |-- 0 = {int}
:  :  :  :
|  |  |-- 'time' = {list: M}
|  |  |  |-- 0 = {float}
:  :  :  :
|  |  |-- 'performance' = {list: M}
|  |  |  |-- 0 = {float}
:  :  :  :
|  |  |-- 'encoded_solution' = {list: M}
|  |  |  |-- 0 = {int}
:  :  :  :
|  |  |-- 'solution' = {list: M}
|  |  |  |-- 0 = {list: C}
|  |  |  |  |-- 0 = {list: 3}
|  |  |  |  |  |-- search_operator_structure
:  :  :  :  :  :
|  |  |-- 'details' = {list: M}
|  |  |  |-- 0 = {dict: 4}
|  |  |  |  |-- 'fitness' = {list: R}
|  |  |  |  |  |-- 0 = {float}
:  :  :  :  :  :
|  |  |  |  |-- 'positions' = {list: R}
|  |  |  |  |  |-- 0 = {list: D}
|  |  |  |  |  |  |-- 0 = {float}
:  :  :  :  :  :  :
|  |  |  |  |-- 'historical' = {list: R}
|  |  |  |  |  |-- 0 = {dict: 5}
|  |  |  |  |  |  |-- 'fitness' = {list: I}
|  |  |  |  |  |  |  |-- 0 = {float}
:  :  :  :  :  :  :  :
|  |  |  |  |  |  |-- 'positions' = {list: I}
|  |  |  |  |  |  |  |-- 0 = {list: D}
|  |  |  |  |  |  |  |  |-- 0 = {float}
:  :  :  :  :  :  :  :  :
|  |  |  |  |  |  |-- 'centroid' = {list: I}
|  |  |  |  |  |  |  |-- 0 = {list: D}
|  |  |  |  |  |  |  |  |-- 0 = {float}
:  :  :  :  :  :  :  :  :
|  |  |  |  |  |  |-- 'radius' = {list: I}
|  |  |  |  |  |  |  |-- 0 = {float}
:  :  :  :  :  :  :  :
|  |  |  |  |  |  |-- 'stagnation' = {list: I}
|  |  |  |  |  |  |  |-- 0 = {int}
:  :  :  :  :  :  :  :
|  |  |  |  |-- 'statistics' = {dict: 10}
|  |  |  |  |  |-- 'nob' = {int}
|  |  |  |  |  |-- 'Min' = {float}
|  |  |  |  |  |-- 'Max' = {float}
|  |  |  |  |  |-- 'Avg' = {float}
|  |  |  |  |  |-- 'Std' = {float}
|  |  |  |  |  |-- 'Skw' = {float}
|  |  |  |  |  |-- 'Kur' = {float}
|  |  |  |  |  |-- 'IQR' = {float}
|  |  |  |  |  |-- 'Med' = {float}
|  |  |  |  |  |-- 'MAD' = {float}
:  :  :  :  :  :

where:

  • N is the number of files within data_files folder
  • M is the number of hyper-heuristic iterations (metaheuristic candidates)
  • C is the number of search operators in the metaheuristic (cardinality)
  • P is the number of control parameters for each search operator
  • R is the number of repetitions performed for each metaheuristic candidate
  • D is the dimensionality of the problem tackled by the metaheuristic candidate
  • I is the number of iterations performed by the metaheuristic candidate
  • search_operator_structure corresponds to [operator_name = {str}, control_parameters = {dict: P}, selector = {str}]

🏗️ Work-in-Progress

The following modules are available, but they may do not work. They are currently under developing.

🌡️ Characterisation

This module intends to provide metrics for characterising the benchmark functions.

Source: characterisation.py

📊 Visualisation

This module intends to provide several tools for plotting results from the experiments.

Source: visualisation.py

References

Seminal Papers

The seminal papers that describe the framework's theoretical background and software implementation are:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Published Journal Papers

These are the journal articles that have been published using this framework:

  1. G. C. Duque-Gimenez, D. F. Zambrano-Gutierrez, M. Rodriguez-Nieto, J. L. Menchaca, J. M. Cruz-Duarte, D. G. Zárate-Triviño, J. G. Avina-Cervantes, J. C. Ortiz-Bayliss, Viscoelastic Characterization of the Human Osteosarcoma Cancer Cell Line MG-63 Using a Fractional-Order Zener Model Through Automated Algorithm Design and Configuration, Nature Scientific Reports, 15, 31436, 2025.
  2. D. F. Zambrano-Gutierrez, J. M. Cruz-Duarte, H. Castañeda, J. G. Avina-Cervantes, Optimization of Adaptive Sliding Mode Controllers Using Customized Metaheuristics in DC-DC Buck-Boost Converters, Swarm and Evolutionary Computation, 12(23), 370, 2024.
  3. 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.
  4. 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.
  5. 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.
  6. 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.

Presented Conference Papers

These are the conference articles that have been presented using this framework:

  1. D. F. Zambrano-Gutierrez, J. Ramos-Frutos, O. Ramos-Soto, J. G. Avina-Cervantes, D. Oliva, J. M. Cruz-Duarte, Automated Tailoring of Heuristic-Based Renyi’s Entropy Maximizers for Efficient Melanoma Segmentation, 2025 IEEE Symposium on Computational Intelligence in Image, Signal Processing and Synthetic Media (CISM), 2024.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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
  8. 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.
  9. 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.
  10. 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.

Sponsors

Metadata

Release files for customhys 1.1.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for customhys 1.1.9
File Size Uploaded Provenance Actions
customhys-1.1.9.tar.gz 232.6 kB Without provenance Details for customhys-1.1.9.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for customhys 1.1.9
File Interpreter ABI Platform Actions
customhys-1.1.9-py3-none-any.whl Python 3 none any Details for customhys-1.1.9-py3-none-any.whl

Total release size: 457.7 kB

Release files / customhys-1.1.9.tar.gz

Download URL customhys-1.1.9.tar.gz
Size 232.6 kB
Tags Source
SHA-256 checksum
How to use checksums
c9d344d17d61e09d760018e37205915f24f2b5f3903d2a1e728666f15e0ffa76
BLAKE2b-256 checksum
How to use checksums
8c3bd3fa876fa336279d4e6515e6c0850577f4f0a2502c04c3c821e702773778
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.14

Release files / customhys-1.1.9-py3-none-any.whl

Download URL customhys-1.1.9-py3-none-any.whl
Size 225.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ae34ec62cc5de7b967e14b36e7b32edccdcd9018e029935e02dbab3e46c53c34
BLAKE2b-256 checksum
How to use checksums
a3df9e47956db1bdf7fd60c882e3698aad0d738db0e11057ad41a86661740192
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.14

Security for customhys 1.1.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page