Saltar a contenido

Recocido simulado

La búsqueda de recocido simulado la podemos importar:

1
from pyristic.heuristic.SimulatedAnnealing_search import SimulatedAnnealing

SimulatedAnnealing (Clase recocido simulado)

  • logger. Diccionario con información relacionada a la búsqueda con las siguientes llaves:
    • best_individual. Mejor individuo encontrado.
    • best_f. El valor obtenido de la función objetivo de individual.
    • temperature. Temperatura inicial que se actualizará cada iteración.
  • f. Función objetivo.
  • Constraints. Lista de restricciones del problema. Las restricciones deben ser funciones que retornan True o False, indicando si cumple dicha restricción.
  • __init__. Inicializa la clase.

    Argumentos:

    • function. Función objetivo.
    • constraints. Lista con las restricciones del problema.

    Valor de retorno:

    • Ninguno.
  • optimize. método principal, realiza la ejecución empleando la metaheurística llamada SimulatedAnnealing.

    Argumentos:

    • Init. Solución inicial, se admite un arreglo de numpy o una función que retorne un arreglo de numpy.
    • IniTemperature. Valor de punto flotante que indica con que temperatura inicia la búsqueda.
    • eps. Valor de punto flotante que indica con que temperatura termina la búsqueda.
    • **kwargs. Parámetros externos a la búsqueda.

    Valor de retorno:

    • Ninguno
  • update_temperature. Función que decrementa la temperatura.

    Argumentos:

    • **kwargs Parámetros externos a la búsqueda.

    Valor de retorno:

    • La nueva temperatura.

Funciones que se deben sobreescribir

  • get_neighbor. Genera una solución realizando una variación aleatoria en la solución actual.

    Argumentos:

    • x. Arreglo de numpy representando a la solución actual.
    • **kwargs Parámetros externos a la búsqueda.

    Valor de retorno:

    • Arreglo de numpy representando la solución generada.

Ejemplo

Para emplear la búsqueda se debe crear una clase nueva que herede todos los métodos de SimulatedAnnealing, por ejemplo:

1
2
3
4
5
6
7
    class simulatedAnnealingExample(SimulatedAnnealing):

        def __init__(self, f_ : function_type , constraints_: list):
            super().__init__(f_,constraints_)

        def get_neighbor(self, x : np.ndarray) -> np.ndarray:             
            # Código para su búsqueda.