1 Introducción
Frecuentemente, una gran cantidad de problemas relevantes en matemática, estadística, física e ingeniería tienen por objeto la determinación del óptimo global de una función multidimensional [1],[2],[3]. Un método de optimización es aquel que involucra el hallazgo del óptimo (máximo o mínimo) global de una función objetivo que representa a un determinado problema [4].
Métodos de optimización son rutinariamente clasificados como estocásticos o determinísticos. Un método de optimización determinístico es aquel que bajo las mismas entradas producirá los mismos resultados. Uno de carácter estocástico será aquel que para iguales entradas puede arrojar resultados diferentes [5],[6]. Cuando un problema de optimización global envuelve una función objetivo convexa (un óptimo global), cualquier método determinístico tradicional, tal como el simplex, el de gradiente y el de cuasi-Newton resolverá fácilmente el problema. No obstante, si el problema implica una función objetivo no convexa (varios óptimos locales distanciados entre sí) es muy probable que métodos determinísticos, aunque rápidos, puedan quedar atrapados en algunos de los óptimos locales sin posibilidad de convergencia al óptimo global [7],[8],[9]. Contrariamente, aunque los métodos estocásticos suelan ser más lentos, estos evitan más fácilmente quedar atrapados en mínimos locales, siendo generalmente más exitosos en alcanzar el óptimo global [8],[9].
Varios métodos estocásticos han sido propuestos para tratar problemas de optimización global [10]. Algunos de los más conocidos son: mínimos cuadrados [11]; algoritmo genético [12]; recocido simulado [13] y búsqueda tabú [14]. Entre estos, el recocido simulado es considerado como uno de los más populares debido a su alta eficiencia [7],[15].
El recocido simulado es un método metaheurístico que permite solucionar problemas de optimización global. Debido a su naturaleza estocástica, este método garantiza que, en sentido probabilístico, el óptimo global será alcanzado. Su principal desventaja es que el tiempo de búsqueda puede tornarse infinito [16]. El recocido simulado es especialmente efectivo para resolver problemas de larga escala (multidimensionales) en los que el óptimo global se encuentra escondido detrás de muchos óptimos locales [2],[17].
La idea central del recocido simulado es imitar al proceso de recocido físico. En este último, un metal es calentado hasta una temperatura mayor a la de su punto de fusión (muchos estados físicos permitidos) para inmediatamente después ser gradualmente enfriado hasta llegar a una temperatura muy baja (único estado físico permitido). Si el proceso de enfriamiento es lo suficientemente lento, los átomos del metal formarán una estructura libre de defectos o estructura estable. En contrapartida, si el proceso de enfriamiento se realiza con rapidez, los átomos del metal formarán una estructura defectuosa, llena de irregularidades e imperfecciones, o estructura metaestable [2],[18],[19].
En consecuencia, es posible establecer un paralelo entre recocido simulado y recocido físico tal que, en cada ciclo del proceso, la estructura física del metal corresponda a la solución del problema de optimización; el valor de la energía en dicha estructura equivalga al valor de la función objetivo en la solución y la temperatura del metal funcione como un parámetro de control [20]. De este modo, un estado físico con irregularidades sería un óptimo local. Entretanto, un estado libre de imperfecciones correspondería a un óptimo global [2].
En el recocido simulado, tres factores son cruciales para la convergencia al óptimo global: i) mecanismo de caminada o distribución de visitación; ii) mecanismo de decisión o probabilidad de aceptación; iii) mecanismo de direccionamiento o esquema de enfriamiento [16].
El mecanismo de caminada se refiere a la búsqueda de una nueva solución a partir de la solución actual, por medio de un muestreo inteligente del espacio solución. Lo que caracteriza a un buen mecanismo de caminada es que cuando la temperatura de recocido es alta, el algoritmo es capaz de dar saltos largos desde la solución actual, mientras que cuando la temperatura es baja, el algoritmo apenas consigue saltar a puntos vecinos, indicando la presencia del algoritmo en la cuenca de atracción al óptimo global [16].
El mecanismo de decisión o probabilidad de aceptación indica la regla de cumplimiento mediante la cual una nueva solución puede ser aceptada. Una nueva solución será aceptada siempre que disminuya el valor de la función objetivo. Sin embargo, aquellas soluciones indeseadas que aumentan el valor de la función objetivo, pueden ser eventualmente aceptadas. Esto último permite al algoritmo evitar quedar atrapado en óptimos locales [16].
El mecanismo de direccionamiento o esquema de enfriamiento se refiere a la manera en que la temperatura dirige el proceso de enfriamiento. Cuanto más alta es la temperatura, más fácil es dar saltos largos. En cambio, cuanto menor es, los saltos en torno a la vecindad de la solución actual son recurrentes. Un buen mecanismo de direccionamiento evitará movimientos alrededor de un óptimo local a fin de acortar el tiempo de convergencia al óptimo global. En otras palabras, la temperatura actúa como una fuente de estocasticidad extremadamente conveniente para rehuir de óptimos locales, tal que, cerca del final del proceso de optimización, el sistema esté inmerso en la cuenca de atracción hacia el óptimo global [7],[16].
De acuerdo con el mecanismo de caminada empleado, el recocido simulado puede ser clasificado en tres categorías [7],[16]: i) Recocido Simulado Clásico (Classical Simulated Annealing (CSA) en inglés) o Máquina de Boltzmann [13],[17]; ii) Recocido Simulado Rápido (Fast Simulated Annealing (FSA) en inglés) o Máquina de Cauchy [17],[21] y iii) Recocido Simulado Generalizado (Generalized Simulated Annealing (GSA) en inglés) o Máquina de Tsallis [7],[17]. Cada tipo de recocido simulado surgió del intento de agilizar el mecanismo de direccionamiento mientras se garantizaba que la probabilidad de quedar atrapado en un óptimo local era mínima [7].
En este artículo, se propone la función GSA como una herramienta rápida y eficaz para la solución de problemas de optimización global. Para evaluar su eficiencia, en términos de rapidez y eficacia, se realiza un análisis comparativo con respecto a algunas funciones del paquete de optimización de Matlab. Por último, se concluye que GSA no solo es capaz de obtener el óptimo global de problemas de optimización complejos, con mayor eficacia que sus pares del paquete de optimización de Matlab, sino que lo hace más rápidamente. Así, la función GSA se constituye en una alternativa novedosa y confiable para la resolución de problemas de optimización usando Matlab.
2 Materiales y Métodos
2.1 Recocido Simulado Clásico
El método de recocido simulado clásico fue propuesto por Kirkpatrick et al [13], a inicios de la década de los 80, como solución al problema del vendedor ambulante [18]. Este método extiende el reconocido procedimiento de Metrópolis para la estadística de Boltzmann-Gibbs [18]. En CSA, el mecanismo de direccionamiento se fundamenta en la introducción de una temperatura artificial, T (t), a fin de evitar óptimos locales. La referencia [22] muestra que, si tal temperatura disminuye con el inverso del logaritmo del tiempo, como en la Ec. (1), el sistema alcanzaría el óptimo global.
en el que T 1 es el valor inicial de la temperatura de visitación, T y t es el número de ciclos temporales (iteraciones) [10].
El mecanismo de caminada, descrito a través de su distribución de visitación o función densidad de probabilidad, tiene que ver con el salto de exploración en el espacio solución, ∆r t , entre la solución actual r t y la nueva solución r(t+1).
La distribución de visitación para CSA es la distribución gaussiana de probabilidad,
donde D es la dimensión del espacio solución y k B es la constante de Boltzmann. Dado que la distribución de visitación de CSA es de búsqueda local, esta apenas permite dar pequeños saltos desde la solución actual [23].
El mecanismo de decisión o probabilidad de aceptar una nueva solución viene dado por la distribución de Boltzmann-Gibbs [18],
en el que ∆f t es el cambio de valor de la función objetivo entre la solución actual, f t , y la solución siguiente, f t+1 , o sea, ∆f t = f t+1 - f t . Además, siempre que f t+1 < f t , CSA admitirá la nueva solución y la actualizará en el siguiente ciclo de tiempo. Caso contrario, CSA admitirá la nueva solución solo de forma aleatoria.
2.2 Recocido simulado rápido
El método de recocido simulado rápido fue desarrollado por [21], en 1987, como una mejora al método clásico por medio de una modificación en la distribución de visitación de este. El objetivo era acelerar la convergencia al óptimo global [18], de ahí el adjetivo de “rápido”.
La distribución de visitación, en lugar de ser una distribución gaussiana como en CSA, es una distribución de Cauchy-Lorentz [7],[10], o sea,
donde Γ corresponde a la función gamma. La distribución de Cauchy, al ser de búsqueda semilocal, puede dar saltos lejanos desde la solución actual. No obstante, saltos en las cercanías del punto actual continuan siendo más frecuentes [18],[24].
El mecanismo de direccionamiento del FSA se fundamenta en que la temperatura de visitación disminuye inversamente con el tiempo de simulación [7],[10], es decir,
provocando que el enfriamiento sea mucho más rápido que en CSA [24].
El mecanismo de decisión del FSA permanece inalterado respecto al CSA. En otras palabras, la probabilidad de aceptación de un nuevo punto de solución viene dada por la Ec. (3) [24].
El hecho de que el FSA posea una distribución de visitación de búsqueda semilocal, no solo lo torna más rápido que el CSA, sino que también le representa mayor éxito en escapar de óptimos locales y así encontrar más fácilmente el óptimo global. No obstante, en problemas realistas de reconocida complejidad, ni el FSA, ni el CSA, son lo suficientemente eficientes como para hallar el óptimo global [24].
2.3 Recocido simulado generalizado
El método de recocido simulado generalizado, ideado de manera conjunta por Tsallis y Stariolo [7] y basado en el formalismo de Tsallis [25], generaliza la distribución de visitación, la probabilidad de aceptación y la temperatura de visitación, bajo la premisa de mejorar la eficiencia del proceso de optimización [10]. De esta manera, el CSA y el FSA vienen a ser situaciones particulares del GSA [10].
El GSA se desarrolla en tres etapas [15]: I) mecanismo generalizado de caminada, ; II) mecanismo generalizado de visitación, P q a (r t → r t+1 ) y III) mecanismo generalizado de direccionamiento, T q v (t).
La distribución de visitación del GSA es una distribución de Cauchy-Lorentz levemente distorsionada, también conocida como distribución gaussiana generalizada [8],
cuya forma y apertura es controlada por el parámetro de visitación q v . El parámetro D denota el número de dimensiones de r t .
En la Figura 1 se muestra como g q v cambia su forma y apertura conforme cambia el valor de q v .
La probabilidad de visitación del GSA es una generalización del algoritmo de Metrópolis [8],[24], de manera que,
donde q a es el denominado parámetro de aceptación.
Finalmente, el esquema de enfriamiento viene dado por,
donde T q v (1) es la temperatura de visitación inicial.
En la Figura 2 se visualiza cómo la temperatura de visitación disminuye en función del valor de q v .
Allí se puede observar que cuanto más altos son los valores de q v , más rápidamente cae la temperatura de visitación. Esto representa un enfriamiento más rápido, es decir, menor tiempo de cálculo.
El proceso de recuperación del CSA y el FSA a partir del GSA depende del valor asignado a q v [7]. Si q v = 1, GSA recupera a CSA. Entretanto, cuando q v = 2, GSA retorna a FSA [8],[15],[24]. Adicionalmente, cuando q v > 2 el esquema de enfriamiento es acelerado, por lo que GSA será más eficiente, en la convergencia al global, que el CSA y el FSA [24]. Esto se atribuye al proceso de búsqueda no local y homogeneo implícito en la distribución de visitación del GSA.
Una búsqueda no local implica dar saltos fuera de la vecindad inmediata de la solución actual [24],[26]. El proceso de búsqueda no local se refleja en la mayor apertura de la distribución generalizada de visitación y en la mayor caída en la temperatura de visitación, sobre todo para q v > 2 (modo GSA), como visto en la Figura 1 y la Figura 2, respectivamente. Por otra parte, una búsqueda homogenea es aquella que permite realizar transiciones lejanas a partir de la solución actual con bastante frecuencia, incluso, cuando T q v (t) → 0 [24].
Para GSA, el parámetro de visitación está sujeto a 2 < q v < 3, mientras que el parámetro de aceptación, q a , se recomienda sea tan negativo cuanto fuese posible, a fin de garantizar que una menor cantidad de soluciones puedan ser aceptadas [8].
En ese sentido, en [7] se sugiere que la combinación q v = 2.7 y q a = -5.0 es altamente eficiente para encontrar el óptimo global. Por otro lado, en [8] se llega a la conclusión de que la combinación q v = 2.62 y q a = -5.0 funciona bien para muchas aplicaciones prácticas. Finalmente, en [8],[23] y [27] se subraya que la eficiencia de GSA podría verse mejorada a través de una sinergia con algún método de optimización de búsqueda local.
2.4 Función GSA
La metodología empleada para el desarrollo de la función GSA consta de dos partes: la primera, relacionada con un generador de números aleatorios de Tsallis; la segunda, referente a la estructura del algoritmo de la función. El seccionamiento del desarrollo de la función obedece a que la eficiencia de GSA depende críticamente de que tan apropiada es la técnica de generación de números aleatorios [16]. Se advierte que, si bien el propósito del presente artículo es adecuar el algoritmo de la función al lenguaje propio de Matlab, este puede, en principio, ser extendido a otros lenguajes de programación.
2.4.1 Generador de números aleatorios de Tsallis
En general, la parte más difícil de GSA es la generación de números aleatorios de Tsallis que obedezcan a la distribución generalizada de visitación expresada por la Ec. (6) [15]. El generador es requerido para simular la distribución generalizada de visitación de forma que el GSA pueda trabajar adecuadamente [16]. Una vez que las distribuciones de visitación no son matemáticamente invertibles, se hacen necesarios procedimientos numéricos para generar tales números [16]. La función generadora de números aleatorios de Tsallis viene estructurada de la siguiente manera [15]:
Función Z = Tsallis_rnd (T q v , q v , D)
Definición de variables
Variable de salida
Z: números aleatorios de Tsallis
Variable de entrada
T q v: temperatura de visitación
q v : coeficiente de visitación
D: dimensión del vector solución
Desarrollo del algoritmo
Inicializar las variables, fijando T q v , q v , D.
Inicializar el bucle.
Para t = 1:t máx
Sea p un parámetro que depende de q v tal que,
Sea x una variable que genera números aleatorios independientes e idénticos de una distribución normal [28]
donde µ es el valor medio de la distribución, σ es su desviación estándar y randn es la función generadora de números aleatorios normalmente distribuidos de Matlab [29]. La desviación estándar es calculada como:
mientras el valor medio se establece en cero (µ=0).
El parámetro y está relacionado con un generador de números aleatorios gamma γ(p,1), de modo que,
en que u = gamrnd(p,1) es la función generadora de números gamma de Matlab [30].
Finalmente, el generador de números aleatorios de Tsallis de dimensión D es,
Final del bucle.
Fin de la función.
2.4.2 Algoritmo de la función GSA
A continuación, se presenta el desarrollo secuencial de la función GSA, teniendo en cuenta el resultado que proporciona la función auxiliar Tsallis_rnd.
Función [r, fval] = GSA(f , q v , q a , r 0, r l , r u , t máx)
f: valor de la función objetivo por ciclo de tiempo t
( q a : coeficiente de aceptación
q v : coeficiente de visitación
r 0: tentativa inicial de solución
r l : restricciones inferiores en la solución
r l : restricciones superiores en la vector solución
t mx : número máximo de ciclos de ejecución del algoritmo
Desarrollo del algoritmo
Inicializar la configuración del sistema, fijando f , q v , q a , r 0, r l , r u , t máx.
Inicializar bucle externo.
Para t = 1:t máx
Definir T q v (1) tan alto como sea posible. Una opción sería T q v (1)=
tmáx.
Iniciar el esquema de enfriamiento dado por la Ec. (8).
Iniciar el esquema de enfriamiento para la temperatura de aceptación, como [8], [26].
Inicializar bucle interno.
Para j = 1:t máx/5
Generar números aleatorios de Tsallis por medio de la Ec. (14). Para problemas de optimización con restricciones, se sugiere usar,
pues garantiza mejores resultados en términos de convergencia y rapidez. Aunque se puede optar por tomar t máx, en lugar de t máx/5, como número máximo de ciclos del bucle interno, se recomienda la elección de este último ya que consigue convergir en menor tiempo de cálculo sin afectar apreciablemente la eficacia.
Generar un nuevo vector solución a partir de,
aplicando restricciones en las componentes como en la referencia [4].
Calcular f (r t+1 ) y comparar con f (r t ). Aplicar la Ec. (7) de manera que siempre que ∆f (r t ) < 0, entonces la solución r t es aceptada. En caso de que f (r t *)≥0, un número aleatorio es sorteado, usando la función rand, y comparado con el valor de P q a . Si P q a > rand, entonces la solución r t ∗ es aceptada.
Tornar a la solución aceptada en la solución actual del siguiente ciclo temporal, según sea el caso, esto es:
Final del bucle interno.
Repita todo el procedimiento hasta que t = t máx o introduzca una condición de parada distinta.
Final del bucle externo.
Fin de la función.
Con el propósito de evaluar su eficiencia, la función GSA es empleada para determinar el óptimo global de un conjunto de problemas de optimización. Asimismo, se realiza un análisis comparativo con las funciones fmincon [31], lsqnonlin [32] y simannelbnd [33], bajo esos mismos problemas. Cada una de estas funciones es usada en su configuración estándar, exceptuando el número máximo de ciclos temporales (iteraciones).
En general, todas estas funciones demandan los siguientes pasos básicos para su adecuado funcionamiento: i) escribir la función objetivo como una función anónima [34] asegurándose de que al ser evaluada resulte en un escalar; ii) definir e ingresar la tentativa inicial de solución (información a priori sobre la solución) y las restricciones en sus componentes (si las hubiese); iii) ingresar los valores de los parámetros iniciales (en el caso de GSA, estos son q v , q v , t máx) y iv) ejecutar la función.
3 Resultados y discusión
La eficiencia de la función GSA, con respecto a las demás funciones, será evaluada por medio de la resolución de cinco problemas de optimización de variada complejidad. Para una comprensión idónea de los resultados, eficiencia significa la conjunción de rapidez y eficacia.
Rapidez será el tiempo de cálculo medio de las cinco ejecuciones. Eficacia se entiende como la tasa de éxito del algoritmo, esto es, el número de veces que cada función encuentra el óptimo dividido el número de veces que el algoritmo es ejecutado (tasa de convergencia al óptimo). Idealmente, una función es 100 % eficiente si posee 100 % de eficacia con tiempo de calculo igual a 0 s.
En todos los ejemplos, se asume q v = 2.7, q a = -5 mientras que t máx, número máximo de iteraciones, será igual para todas las funciones de optimización. Las funciones de optimización se ejecutan veinte (20) veces en cada problema propuesto.
Ejemplo 1.
Considere la función f (x) que describe un potencial de pozo doble [21], de manera que,
con tentativa inicial de solución x 0 = 0 y cuya solución debe estar restringida a −100 < x < 100. Se pide encontrar el mínimo global.
Solución.
Los resultados del proceso de minimización de la Ec. (19) arrojados por cada función de optimización, son mostrados en la Tabla 1 El número máximo de iteraciones fue establecido en t máx = 400.
De la Tabla 1 se extrae que todas las funciones de optimización alcanzaron el mínimo global en cada una de las cinco ejecuciones, menos lsqnonlin. En otras palabras, todas las funciones fueron 100 % eficaces, excepto lsqnonlin. El mínimo global hallado se ubicó en x = −2.9 con f (x) = −78.3.
Los resultados de la Tabla 1 indican que la función fmincon fue igual de eficaz que simannelbnd y GSA, y evidentemente más rápida. Entretanto, la GSA consiguió el mismo nivel de eficacia de fmincon y simannelbnd, pero con menor rapidez que estas.
Con esto, se concluye que fmincon fue la función más eficiente en encontrar el mínimo global del Ejemplo 1. Aunque la función GSA no logró la ser más rápida, demostró alcanzar el mínimo con una rapidez razonablemente corta.
Ejemplo 2.
La función objetivo f (r), es una versión bidimensional de la función Sech [35]:
donde r 1 = (1, 1), r 2 = (105 , -105). Se pide hallar el mínimo global de esta función.
Solución.
Para este ejemplo, se optó por restringir la solución r a -106 < r x < -106 y 106 < r y < 106, donde r = (r x , r y ). Hecho esto, se propuso como tentativa inicial de solución, r = (0, 0). El número máximo de iteraciones fue definido en t máx = 800, puesto que fue el valor a partir del cual, al menos una de las funciones de optimización, alcanzó el mínimo global.
El resultado de la minimización de la Ec. (20) se visualiza en la Tabla 2.
En la Tabla 2, se observa que solo GSA dió con el mínimo global en todas las ejecuciones. El mínimo global fue encontrado en r = (105 , -105) con f (r) = -21. Por otro lado, GSA alcanzó el mínimo global con una rapidez aceptable. Se concluye que GSA fue la única función eficiente del Ejemplo 2.
A pesar de que las funciones simannelbnd y fmincon fueron absolutamente ineficientes para hallar el mínimo global, estas pudieron encontrar el mínimo local, ubicado en r = (1, -1) con f (r) = -11, en el 15 % y 100 % de las ejecuciones, respectivamente.
Ejemplo 3.
La minimización de la función de Rosenbrock es reconocido como un problema de optimización notoriamente difícil de resolver para muchos algoritmos de optimización. Esta función viene dada por [36],
donde se sugiere como tentativa inicial de solución, x 1 = −1.2 y x 2 = 1.
Solución.
Para dar solución a la Ec. (21) se procede como en los anteriores problemas. Las restricciones impuestas al vector solución x = (x 1 , x 2) fueron las mismas que en el ejemplo 2. El número máximo de iteraciones fue establecido en t máx = 200, pues a partir de este valor, al menos una de las funciones de optimización, consiguió el mejor resultado.
En la Tabla 3 se presentan los resultados del proceso de minimización, para cada una de las funciones de optimización.
A partir de la Tabla 3, se colige que las funciones GSA y fmincon alcanzaron el mínimo global en todas las ejecuciones. Entretanto, simannelbnd solo lo hizo en cuatro de las ejecuciones. Además, se observó que a la función fmincon le tomó menor tiempo de cálculo encontrar el mínimo que a GSA.
Vale destacar que al aumentar el número máximo de iteraciones a 800, la eficiencia de simannelbnd pasó a ser 40 %, sugiriendo que, en algunos casos, el incremento de t máx puede repercutir positivamente en la eficiencia de la función.
Se concluye que la función fmincon fue la más eficiente para dar con el mínimo global, encontrado en x = [1, 1] con f (x) = 10 −7 , seguida por GSA al ser menos rápida.
Ejemplo 4.
La función objetivo f (x), en la Ec. (22), representa un problema de minimización global difícil de resolver por cuanto posee un mínimo global escondido detrás de quince mínimos locales [7].
en que E 0 = 57, 33 con f (x) ≥ 0. Se sugiere como tentativa inicial de solución, x 0 = [1, 1, 1, 1].
Solución.
Los resultados del proceso de minimización de la Ec. (22) pueden verse en la Tabla 4. Para este ejemplo, las restricciones del vector solución x se definieron como siendo (−106 , −106 , −106 , −106) < x < (106 , 106 , 106 , 106). El número máximo de iteraciones se fijó en t máx = 1400 pues fue el valor a partir del cual una de las funciones de optimización alcanzó, al menos una vez, el mínimo global.
De la Tabla 4 se evidencia que la única función de optimización que obtuvo el mínimo global con 100 % de eficacia fue GSA. Por su parte, la función simannelbnd, apenas pudo alcanzar el mínimo global en tres de las veinte ejecuciones. El mínimo global fue hallado x = [2, 9, 2, 9, 2, 9, 2, 9] con f (x) = -0.0017. Cabe mencionar que simannelbnd dió con al menos uno de los quince mínimos locales en el 55 % de las ejecuciones.
Se destaca que, a diferencia de algunos ejemplos anteriores, la función fmincon fue absolutamente ineficaz para dar con el mínimo global de esta función objetivo. Tampoco alcanzó ningún mínimo local. La función lsqnonlin mantuvo la ineficiencia mostrada en ejemplos anteriores.
De este ejemplo se concluye que la función de optimización más eficiente fue GSA seguida por simannelbnd.
Ejemplo 5.
Considere la siguiente función objetivo,
donde se pide hallar el máximo global alrededor de x 0 = 5 [37].
Solución.
Antes de empezar a resolver el problema, cabe señalar que, como la Ec. (23) expresa una función periódica, se ha pedido encontrar el máximo cerca de x 0, aunque en verdad existan otros máximos con igual valor de la función objetivo.
Para problemas de maximización, lo primero a ser realizado es la modificación del signo de la función objetivo, esto es, f (x) → - f (x). Además, como la búsqueda del óptimo debe ser en las cercanías de 5, se adoptó el intervalo 3 < x < 7 como restricción. El número máximo de ciclos temporales usados para GSA se fijó en t máx = 100.
Los resultados del proceso de minimización de la Ec. (23) se encuentran consignados en la Tabla 5.
De la Tabla 5, se nota que las funciones fmincon, GSA y simannelbnd fueron absolutamente eficacez para hallar el máximo local ubicado en x = 6.28 con f (x) = 1.56. En términos de rapidez, las funciones fmincon y GSA arrojaron los mejores resultados.
Se concluye que la función fmincon fue la más eficiente de todas, seguida por GSA y simannelbnd, respectivamente.
A partir del análisis de los cinco anteriores ejemplos, algunas apreciaciones generales acerca del rendimiento de la función GSA son: i) GSA fue la única función en encontrar el óptimo global, al menos una vez, en todos los ejemplos; ii) GSA alcanzó el óptimo global en tiempos razonablemente cortos a pesar de ser una función estocástica (inherentemente más lentas que las deterministas); iii) GSA fue capaz de resolver diversos problemas de optimización independiente de su dificultad y del tipo de problema (minimización o maximización); iv) Para algunos problemas, pocas iteraciones fueron necesarias para que GSA logre su acometido, en otros, se precisó de una mayor cantidad (en aquellos con problemas de mayor escala: Ejemplos 3 y 4); v) A partir de los cinco ejemplos propuestos, se colige que GSA resultó ser la función de optimización más eficiente.
4 Conclusiones
La función GSA basada en el método de recocido simulado generalizado mostró ser altamente eficiente, en términos de rapidez y eficacia, para la obtención del óptimo global de funciones multidimensionales de difícil solución. Inclusive, al compararse con algunas de las funciones del paquete de optimización de Matlab, llegó a ser, en líneas generales, más eficiente que todas estas.
La elección de los parámetros de visitación, aceptación y número máximo de iteraciones, es crucial en el propósito de alcanzar el óptimo. Sin embargo, esto también dependerá de las características intrínsecas del problema abordado, como son, el espacio solución, la información a priori y el número de dimensiones de la solución a ser alcanzada.
Se constató que cuanto mayor eran las dimensiones del problema, mayor debía ser el número de iteraciones máximas de la función GSA a fin de alcanzar el óptimo global en muchas o todas las ejecuciones de la función.
La función GSA con parámetros de visitación y aceptación de 2.7 y -5 respectivamente y número de iteraciones máximas entre 100 y 1500, podría ser una configuración de optimización adecuada para resolver una gran variedad de problemas.