Skip to content

jpchavarria2/algoritmo-genetico-paracaidista

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

Simulación de Aterrizaje de Paracaidista con Algoritmo Genético

Un simulador visual interactivo, desarrollado en Python con Tkinter. Utiliza un algoritmo genético para encontrar la altitud óptima de apertura de un paracaídas, con el fin de que un paracaidista aterrice lo más cerca posible de un objetivo definido, considerando factores físicos como el viento y la gravedad.


Tabla de contenidos


Introducción

A diferencia de una búsqueda exhaustiva o métodos de fuerza bruta, este proyecto emplea un algoritmo genético para explorar de manera eficiente un amplio rango de posibles soluciones. El sistema simula la caída de una población de paracaidistas en cada generación, evaluando su desempeño (aptitud) y aplicando operadores genéticos (selección, cruce y mutación) para evolucionar hacia una solución óptima.

La simulación está implementada puramente en Python, utilizando la biblioteca estándar Tkinter para la interfaz gráfica y la visualización en tiempo real.


Características

  • Interfaz Gráfica Interactiva: Creada con Tkinter, permite al usuario modificar en tiempo real los parámetros del algoritmo (tamaño de población, tasas) y de la simulación (altura inicial, viento, posición del objetivo).
  • Motor de Algoritmo Genético: Implementa un ciclo evolutivo completo para optimizar la altitud de apertura.
  • Visualización en Tiempo Real: Muestra la trayectoria de toda la población en cada generación, destacando a los individuos con mejor desempeño.
  • Simulación Física 2D: Modela la caída del paracaidista considerando la gravedad, la resistencia del aire (con y sin paracaídas abierto) y el viento horizontal.
  • Controles de Simulación: Permite iniciar, pausar, reanudar y reiniciar la simulación en cualquier momento.

Instalación

  1. Clona el repositorio en tu máquina:

    git clone https://github.com/jpchavarria2/algoritmo-genetico-paracaidista.git
  2. Navega al directorio del proyecto:

    cd algoritmo-genetico-paracaidista
  3. No se requieren dependencias externas. El script solo necesita una instalación estándar de Python 3.


Uso

  1. Ejecuta el script ag_paracaidista.py con Python.

    python ag_paracaidista.py
  2. La interfaz se abrirá mostrando los controles y el área de simulación.

  3. Mueve los deslizadores para ajustar las condiciones iniciales y los parámetros del algoritmo.

  4. Presiona "Iniciar" y observa cómo el algoritmo evoluciona para encontrar la mejor altitud de apertura.


Modelo del Algoritmo Genético

El sistema se basa en conceptos de computación evolutiva para resolver el problema.

Individuo (Cromosoma)

Cada "individuo" en la población es un único número de punto flotante que representa una posible altitud de apertura del paracaídas.

Función de Aptitud (Fitness)

La aptitud de un individuo se calcula en función de la proximidad de su punto de aterrizaje al objetivo. La fórmula es 1 / (1 + error²), donde un error de aterrizaje de 0 resulta en una aptitud máxima de 1.0.


Operadores Genéticos y Parámetros Clave

El algoritmo evoluciona la población utilizando los siguientes operadores:

Operador Descripción
Selección por Torneo Dos individuos se eligen al azar de la población y el que tiene mayor aptitud es seleccionado como "padre" para la siguiente generación.
Cruce Aritmético Los valores de dos padres se combinan para crear dos nuevos descendientes, fomentando la exploración de soluciones intermedias.
Mutación Adaptativa Se aplica una pequeña alteración aleatoria a un individuo. El rango de esta alteración aumenta si el algoritmo se estanca y disminuye para realizar ajustes finos.
Elitismo Un pequeño porcentaje de los mejores individuos de cada generación pasa directamente a la siguiente sin cambios, asegurando que las buenas soluciones no se pierdan.

About

Simulación visual que usa un algoritmo genético para optimizar la altura de apertura de un paracaídas y aterrizar en un objetivo.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages