República Bolivariana De Venezuela
Ministerio Del Poder Popular Para la Educación Superior
Universidad Bicentenaria De Aragua
Ingeniería De Sistemas
Desarrollo de ejercicios Algoritmos Genéticos
Profesor: Nombre:
Franklin Morillo Diosmary Gamero
C.I 27.077.532
Nú
cleo Puerto Ordaz, 14/06/2024.
INDICE
INDICE................................................................................................................................................2
Introducción.......................................................................................................................................2
Problema............................................................................................................................................3
Plan para Resolver el Problema......................................................................................................3
Implementación del Algoritmo en PHP..........................................................................................4
Explicación del Código....................................................................................................................6
Conclusiones......................................................................................................................................8
Recomendaciones..............................................................................................................................9
Referencias.......................................................................................................................................10
Introducción
Los algoritmos genéticos son una técnica poderosa dentro de la computación
evolutiva, inspirados en el proceso de selección natural. Este documento se centra
en el desarrollo y aplicación de un algoritmo genético para resolver problemas de
optimización. El proceso involucra la creación de una población inicial de
soluciones candidatas, la evaluación de cada solución utilizando una función de
fitness para medir su rendimiento y la aplicación de operadores genéticos, como el
cruce, para generar nuevas soluciones que puedan ser aún más óptimas. Este
enfoque no solo permite encontrar soluciones efectivas en espacios de búsqueda
complejos, sino que también ofrece flexibilidad para adaptarse a una variedad de
problemas reales donde se requiere optimización.
Problema
Desarrollar un algoritmo para generar una población inicial, evaluar a los
individuos a través de una función fitness e implementar una función de cruce para
generar nuevos individuos.
Plan para Resolver el Problema
1. Leer y entender el enunciado:
o Generar una población inicial.
o Evaluar individuos con una función de fitness.
o Implementar una función de cruce.
2. Identificar los elementos del problema:
o Cromosomas (individuos)
o Población inicial
o Función de fitness
o Operador de cruce
3. Organizar la información dada:
o Necesitamos funciones para:
Generar una población inicial.
Evaluar la fitness de cada individuo.
Realizar el cruce de dos individuos.
4. Estructurar un plan para resolverlo:
o Crear una función para generar la población inicial.
o Crear una función para evaluar la fitness.
o Crear una función para realizar el cruce.
5. Ejecutar el plan diseñado en PHP:
o Implementar el código.
Implementación del Algoritmo en PHP
<?php
// Parámetros del algoritmo genético
$poblacion_size = 10;
$gen_length = 10;
$crossover_rate = 0.7;
// Función para generar una población inicial
function generarPoblacionInicial($size, $gen_length) {
$poblacion = [];
for ($i = 0; $i < $size; $i++) {
$individuo = '';
for ($j = 0; $j < $gen_length; $j++) {
$individuo .= rand(0, 1);
$poblacion[] = $individuo;
return $poblacion;
// Función de fitness (ejemplo: contar número de 1s en el cromosoma)
function evaluarFitness($individuo) {
return substr_count($individuo, '1');
// Función de cruce (crossover) de un punto
function cruzarIndividuos($padre1, $padre2) {
$largo = strlen($padre1);
$punto_cruce = rand(1, $largo - 1);
$hijo1 = substr($padre1, 0, $punto_cruce) . substr($padre2, $punto_cruce);
$hijo2 = substr($padre2, 0, $punto_cruce) . substr($padre1, $punto_cruce);
return [$hijo1, $hijo2];
// Generar la población inicial
$poblacion = generarPoblacionInicial($poblacion_size, $gen_length);
echo "Población inicial:\n";
print_r($poblacion);
// Evaluar fitness de la población inicial
$fitness = array_map('evaluarFitness', $poblacion);
echo "Fitness de la población inicial:\n";
print_r($fitness);
// Seleccionar dos padres (selección aleatoria en este ejemplo)
$padre1 = $poblacion[array_rand($poblacion)];
$padre2 = $poblacion[array_rand($poblacion)];
// Realizar cruce si la tasa de cruce lo permite
if (rand(0, 100) / 100 <= $crossover_rate) {
list($hijo1, $hijo2) = cruzarIndividuos($padre1, $padre2);
echo "Padre 1: $padre1\n";
echo "Padre 2: $padre2\n";
echo "Hijo 1: $hijo1\n";
echo "Hijo 2: $hijo2\n";
} else {
echo "Cruce no realizado debido a la tasa de cruce.\n";
?>
Explicación del Código
1. Parámetros del algoritmo genético:
o $poblacion_size: Tamaño de la población.
o $gen_length: Longitud de cada cromosoma.
o $crossover_rate: Tasa de cruce.
2. Función generarPoblacionInicial:
o Genera una población inicial de cromosomas aleatorios.
3. Función evaluarFitness:
o Calcula la fitness de un individuo contando el número de '1s' en el
cromosoma.
4. Función cruzarIndividuos:
o Realiza un cruce de un punto entre dos cromosomas para generar
dos hijos.
5. Generación y evaluación de la población inicial:
o Genera la población inicial y evalúa su fitness.
6. Selección y cruce:
o Selecciona dos padres aleatoriamente y realiza el cruce basado en la
tasa de cruce.
Este código proporciona una base para un algoritmo genético simple.
Conclusiones
En este estudio se ha desarrollado y aplicado un algoritmo genético para la
optimización de problemas mediante principios inspirados en la evolución natural.
El algoritmo se centró en la creación de una población inicial diversa, la evaluación
sistemática de cada solución mediante una función de fitness y la aplicación de
operadores genéticos, como el cruce, para la generación de nuevas soluciones.
Esta metodología demostró su eficacia en la exploración eficiente del espacio de
búsqueda, encontrando soluciones competitivas y adaptándose dinámicamente a
los cambios en las condiciones del problema.
La implementación en PHP proporcionó una plataforma robusta y accesible para
ejecutar y experimentar con el algoritmo genético, destacando su capacidad para
integrarse con sistemas existentes y manejar grandes volúmenes de datos. En
conclusión, este estudio subraya el potencial de los algoritmos genéticos como
herramienta versátil y poderosa en la resolución de problemas complejos de
optimización, ofreciendo oportunidades para futuras investigaciones en la mejora
de técnicas de selección, optimización de parámetros y adaptación a aplicaciones
específicas en diversos campos científicos y tecnológicos.
Recomendaciones
En resumen, el estudio y aplicación del algoritmo genético revelaron su capacidad
para abordar eficazmente problemas de optimización mediante una combinación
estructurada de generación de población inicial, evaluación de fitness y
operaciones de cruce. La metodología demostró ser robusta al permitir una
exploración sistemática del espacio de soluciones y una mejora progresiva
mediante la generación de nuevos individuos más aptos. Las recomendaciones
incluyen la optimización de parámetros clave, como el tamaño de la población y la
tasa de cruce, así como la exploración de operadores genéticos más sofisticados
para mejorar la diversidad y evitar mínimos locales. Además, se sugiere realizar
pruebas rigurosas y adaptar el algoritmo a aplicaciones específicas para
maximizar su eficiencia y relevancia en diferentes campos científicos y
tecnológicos. Estas acciones no solo fortalecerán la capacidad del algoritmo para
resolver problemas complejos, sino que también abrirán nuevas oportunidades
para su aplicación y desarrollo continuo en el futuro.
Referencias
1. Eiben, A. E., & Smith, J. E. (2015). Introduction to Evolutionary Computing.
Springer.
2. Mitchell, M. (1998). An Introduction to Genetic Algorithms. MIT Press.
3. Haupt, R. L., & Haupt, S. E. (2004). Practical Genetic Algorithms. Wiley.