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
viernes, 6 de noviembre de 2009
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
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
Etiquetas:
código,
Inteligencia Artificial,
introducción IA
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
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
Etiquetas:
código,
Inteligencia Artificial,
introducción IA
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
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
Etiquetas:
código,
Inteligencia Artificial,
introducción IA
Suscribirse a:
Entradas (Atom)