mealpy.music_based package

mealpy.music_based.HS module

class mealpy.music_based.HS.DevHS(epoch: int = 10000, pop_size: int = 100, c_r: float = 0.95, pa_r: float = 0.05, **kwargs: object)[source]

Bases: Optimizer

Our developed version: Harmony Search (HS)

Parameters
  • epoch (int) – Maximum number of iterations, in range [1, 100000]. Default is 750.

  • pop_size (int) – Number of population size, in range [5, 10000]. Default is 100.

  • c_r (float) – Harmony Memory Consideration Rate, in range [0.1, 0.5]. Default is 0.15.

  • pa_r (float) – Pitch Adjustment Rate, in range [0.3, 0.8]. Default is 0.5.

Note

We used the global best in the harmony memories and we removed all third for loops

Examples

>>> import numpy as np
>>> from mealpy import FloatVar, HS
>>>
>>> def objective_function(solution):
>>>     return np.sum(solution**2)
>>>
>>> problem_dict = {
>>>     "bounds": FloatVar(lb=(-10.,) * 30, ub=(10.,) * 30, name="delta"),
>>>     "minmax": "min",
>>>     "obj_func": objective_function
>>> }
>>>
>>> model = HS.DevHS(epoch=1000, pop_size=50, c_r = 0.95, pa_r = 0.05)
>>> g_best = model.solve(problem_dict)
>>> print(f"Solution: {g_best.solution}, Fitness: {g_best.target.fitness}")
>>> print(f"Solution: {model.g_best.solution}, Fitness: {model.g_best.target.fitness}")
OPT_INFO: ClassVar[OptInfo | None] = OptInfo(difficulty='easy', kind='developed', name='Harmony Search (Dev)', year=None, family=None, scientific_status='normal', concerns=(), evidence_urls=())
evolve(epoch)[source]

The main operations (equations) of algorithm. Inherit from Optimizer class

Parameters

epoch (int) – The current iteration

initialize_variables()[source]
class mealpy.music_based.HS.OriginalHS(epoch: int = 10000, pop_size: int = 100, c_r: float = 0.95, pa_r: float = 0.05, **kwargs: object)[source]

Bases: DevHS

The original version of: Harmony Search (HS)

Parameters
  • epoch (int) – Maximum number of iterations, in range [1, 100000]. Default is 750.

  • pop_size (int) – Number of population size, in range [5, 10000]. Default is 100.

  • c_r (float) – Harmony Memory Consideration Rate, in range [0.1, 0.5]. Default is 0.15.

  • pa_r (float) – Pitch Adjustment Rate, in range [0.3, 0.8]. Default is 0.5.

References

  1. Geem, Z.W., Kim, J.H. and Loganathan, G.V., 2001. A new heuristic optimization algorithm: harmony search. simulation, 76(2), pp.60-68. https://doi.org/10.1177/003754970107600201

Examples

>>> import numpy as np
>>> from mealpy import FloatVar, HS
>>>
>>> def objective_function(solution):
>>>     return np.sum(solution**2)
>>>
>>> problem_dict = {
>>>     "bounds": FloatVar(lb=(-10.,) * 30, ub=(10.,) * 30, name="delta"),
>>>     "minmax": "min",
>>>     "obj_func": objective_function
>>> }
>>>
>>> model = HS.OriginalHS(epoch=1000, pop_size=50, c_r = 0.95, pa_r = 0.05)
>>> g_best = model.solve(problem_dict)
>>> print(f"Solution: {g_best.solution}, Fitness: {g_best.target.fitness}")
>>> print(f"Solution: {model.g_best.solution}, Fitness: {model.g_best.target.fitness}")
OPT_INFO: ClassVar[OptInfo | None] = OptInfo(difficulty='easy', kind='original', name='Harmony Search', year=2001, family=None, scientific_status='normal', concerns=(), evidence_urls=())
evolve(epoch)[source]

The main operations (equations) of algorithm. Inherit from Optimizer class

Parameters

epoch (int) – The current iteration