viernes, 6 de noviembre de 2009

Simulated Annealing

Algoritmo Simulated Annealing:

Partimos de una temperatura inicial

mientras la temperatura no sea cero hacer
/* Pase aleatorio por el espacio de soluciones */

para un numero prefijado de iteraciones hacer
Nuevo = generamos_sucesores(Actual);
diferencia = calidad(Actual) - calidad(Nuevo);
si diferencia > 0 entonces Actual = Nuevo;
sino con probabilidad e^(diferencia/T) Actual = Nuevo;
fpara

Disminuimos la temperatura
fmientras

Hill Climbing

Algoritmo Hill Climbing:

Actual = Estado_inicial;
fin = falso;

mientras (no fin) hacer
hijos = generar_sucesores(Actual);
hijos = ordenar_y_eliminar_peores(hijos, Actual);
si (no vacío?(hijos)) entonces Actual = escoger_mejor(hijos);
sino fin = cierto;
fmientras

IDA*

Algoritmo IDA*:

profundidad = profundidad(Estado_inicial);

mientras (no es_final?()) hacer
Estados_Abiertos.insertar(Estado_inicial);
Actual = Estados_Abiertos.primero();

mientras (no es_final?(Actual)) y (no Estados_Abiertos.vacía?()) hacer
Estados_Abiertos.borrar_primero();
Estados_Cerrados.insertar(Actual);
hijos = generar_sucesores(Actual, profundidad);
hijos = tratar_repetidos(hijos, Estados_Abiertos, Estados_Cerrados);
Estados_Abiertos.insertar(hijos);
Actual = Estados_Abiertos.primero();
fmientras

profundidad = profundidad +1;
Estados_Abiertos.inicializa();
fmientras

A*

Algoritmo A*:

Estados_Abierto.insertar(estado_inicial);
Actual = Estados_Abiertos.primero();

mientas (no es_final? (Actual)) y (no Estados_Abiertos.vacía?()) hacer
Estados_Abiertos.borrar_primero();
Estados_Cerrados.insertar(Actual);
hijos = generar_sucesores(Actual);
hijos = tratar_repetidos(hijos, Estados_Abierto, Estados_Cerrados);
Estados_Abiertos.insertar(hijos);
Actual = Estados_Abiertos.primero();
fmientras

2.6. Satisfacción de restricciones

2.5. Búsqueda con adversario

2.4. Búsqueda local