El esquema de FANS se muestra en la Fig. 1.
Cada iteración comienza con una llamada al administrador de
vecindario
con los siguientes parámetros: la solución
actual
, la valoración difusa
y el operador de
modificación
. Como resultado de la ejecución de
pueden ocurrir 2 cosas: se pudo encontrar una solución vecina
aceptable
(en términos de
), o no se pudo.
En el primer caso, pasa a ser la solución actual y los parámetros
de
son adaptados. Por ejemplo, si
representa la similaridad
respecto a la solución actual, entonces la valoración difusa debe ser
adaptada para reflejar este cambio en la solución de referencia.
Si
no pudo retornar una solución aceptable, es decir, en el vecindario inducido por
el operador no se pudo encontrar una solución suficientemente buena, entonces
se aplica el nuevo mecanismo de escape: se ejecuta el administrador de
operación
el cual retornara una versión modificada del operador
.
La próxima vez que
se ejecute, dispondrá de un operador modificado para
buscar soluciones, y por lo tanto es posible que el resultado sea diferente.
La condición
será verdadera cuando (por ejemplo)
se hayan realizado
llamadas a
sin haber obtenido mejoras en
la solución actual. Es decir, se probaron varios operadores y no se obtuvieron
mejoras.
En este caso, se ejecutará el procedimiento
,
se evaluará el costo de la nueva solución y se adaptará la valoración
difusa
. Posteriormente, se reiniciará la búsqueda.
Debe quedar claro que lo que varía en cada iteración son los
parámetros utilizados en las llamadas a
. El algoritmo comienza con
(
). Si
puede retornar una solución
aceptable, entonces en la siguiente iteración la llamada será
(
); es decir cambia la solución actual y por
lo tanto se modifica la valoración difusa. Si en cierta iteración
,
no puede retornar una solución aceptable, entonces se ejecutará el
administrador de operación el cual devolverá una versión modificada del
operador. La iteración siguiente,
será llamado con
(
).
Durante la ejecución del algoritmo pueden ocurrir
dos situaciones problemáticas: primero, se realizaron
varias llamadas
con
, lo cual significa que
se probaron
formas diferentes de obtener una solución aceptable y ninguna
tuvo éxito;
o segundo, la búsqueda se está moviendo entre soluciones aceptables pero
en las ultimas
llamadas no se consiguió mejorar la mejor solución de todas
las visitadas hasta el momento.
Cuando cualquiera de las dos situaciones ocurra, se ejecutará el
procedimiento
para el cual se plantean las dos posibilidades siguientes:
(
) o
(
), donde
es una
nueva solucion inicial (generada aleatoriamente, por ejemplo), y
es la valoración difusa obtenida en función de
. Respecto al operador, se puede mantener con los mismos
parámetros (
) o también se lo puede
``reinicializar'' (
).
El algoritmo finaliza cuando el número de
evaluaciones de la función de costo alcanza cierto límite o cuando se
realizó un número predeterminado de evaluaciones.