0% encontró este documento útil (0 votos)
14 vistas3 páginas

Funciones de Búsqueda Local en Python

import random as rd

Cargado por

Eder García
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
14 vistas3 páginas

Funciones de Búsqueda Local en Python

import random as rd

Cargado por

Eder García
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

laro, te explico cada paso del código:

Importar bibliotecas

1. import random as rd: Importa la biblioteca random y la asigna el alias rd para usar
sus funciones de manera más concisa.

2. import [Link] as plt: Importa la biblioteca [Link] y la asigna el


alias plt para usar sus funciones de manera más concisa.

Definir funciones

1. def fx(x):: Define una función fx que toma un vector x como entrada.

2. cuadrado = []: Inicializa una lista vacía cuadrado.

3. for i in x:: Itera sobre cada elemento i del vector x.

4. [Link](i**2): Calcula el cuadrado de cada elemento i y lo agrega a la


lista cuadrado.

5. return sum(cuadrado): Retorna la suma de los cuadrados de los elementos de x.

Definir función alternativa

1. def fx2(x):: Define una función fx2 que toma un vector x como entrada.

2. return sum([xi**2 for xi in x ]): Calcula la suma de los cuadrados de los elementos
de x utilizando una comprensión de lista.

Definir función para generar vecino

1. def generarVecino(x):: Define una función generarVecino que toma un vector x


como entrada.
2. idx = [Link](0,len(x)-1): Selecciona un índice aleatorio idx dentro del rango de la
longitud del vector x.

3. x[idx] = [Link](-5.12,5.12): Reemplaza el elemento en el índice idx con un valor


aleatorio dentro del rango -5.12 a 5.12.

4. return x: Retorna el vector modificado.

Definir función de búsqueda local

1. def busquedaLocal(x,dim,limites,max_itera):: Define una función busquedaLocal


que toma un vector x, la dimensión dim, los límites limites y el máximo número de
iteraciones max_itera como entradas.

2. best = []: Inicializa una lista vacía best para almacenar los mejores valores
encontrados.

3. mejor_sol = x[:]: Crea una copia del vector x para almacenar la mejor solución
encontrada.

4. feval = fx(x): Evalúa la función objetivo fx en el vector x inicial.

5. mejor_fx = feval: Asigna el valor de la función objetivo inicial como el mejor valor
encontrado.

6. i=0: Inicializa un contador i para las iteraciones.

7. while i<max_itera:: Itera hasta alcanzar el máximo número de iteraciones.

8. svecina = generarVecino(x): Genera un vecino del vector x utilizando la función


generarVecino.

9. fvecina = fx(svecina): Evalúa la función objetivo fx en el vecino svecina.

10. if fvecina < mejor_fx:: Verifica si el valor de la función objetivo en el vecino es


mejor que el mejor valor encontrado hasta el momento.

11. x = svecina[:]: Actualiza el vector x con el vecino si es mejor.

12. mejor_fx = fvecina: Actualiza el mejor valor encontrado.

13. mejor_sol = svecina[:]: Actualiza la mejor solución encontrada.

14. [Link](mejor_fx): Agrega el mejor valor encontrado a la lista best.


15. i+=1: Incrementa el contador de iteraciones.

16. print(f"Iteración {i}: Mejor valor = {mejor_fx}"): Imprime el número de iteración y el


mejor valor encontrado.

17. return best, mejor_sol, mejor_fx: Retorna la lista best, la mejor solución
encontrada y el mejor valor encontrado.

Parámetros del problema

1. dim = 5: Establece la dimensión del problema en 5.

2. limites = [-5.12,5.12]: Establece los límites del problema en -5.12 y 5.12.

3. max_itera = 1000: Establece el máximo número de iteraciones en 1000.

También podría gustarte