Integrantes:
Sebastián Donoso 201921090-4La Simulación de Control de Tráfico Aéreo es un programa desarrollado en Java que simula la gestión de tráfico aéreo, específicamente los aterrizajes y despegues de aviones, mediante una interfaz gráfica de usuario (GUI) y técnicas de programación vistas en el curso de ELO330. El sistema incluye una clase para los aviones (Airplane), que implementa la interfaz Thread y administra las operaciones individuales de cada avión según su nivel de combustible y estado (aterrizaje o despegue). La clase ATC (Control de Tráfico Aéreo) coordina las solicitudes de múltiples aviones utilizando una cola de prioridad y asignando las pistas de aterrizaje disponibles (LandingStrip). La interfaz gráfica, implementada en la clase ATCFrame, muestra en tiempo real información sobre los aviones, las pistas de aterrizaje y la cola de espera. El programa genera aviones de manera dinámica, procesa sus solicitudes y actualiza visualmente su estado, incluyendo niveles de combustible y pistas asignadas. La implementación hace uso de múltiples hilos y técnicas de sincronización para garantizar operaciones eficientes y seguras entre hilos. La simulación proporciona una representación visual del proceso de control de tráfico aéreo, incluyendo actualizaciones dinámicas del estado de las pistas y de los aviones, utilizando componentes de Swing como tablas y listas.
El control de tráfico aéreo es una actividad crítica que garantiza la seguridad y eficiencia en el movimiento de los aviones, tanto en el aire como en tierra. Con el incremento del tráfico aéreo global, se hace indispensable implementar sistemas que permitan gestionar de manera eficiente las operaciones de aterrizaje y despegue, optimizando el uso de recursos como es en este caso las pistas de aterrizaje. En este contexto, se desarrolló una simulación en Java que modela el funcionamiento básico de un sistema de control de tráfico aéreo, empleando programación con hilos e interfaces gráficas para representar en tiempo real el estado de los aviones y de las pistas de aterrizaje. Este sistema tiene como objetivo mostrar cómo se pueden coordinar múltiples aeronaves que compiten por el uso de recursos compartidos, priorizando aquellas con menor nivel de combustible para garantizar su aterrizaje seguro. La simulación utiliza una arquitectura modular que incluye clases para la representación de aviones, pistas de aterrizaje y el controlador de tráfico aéreo, además de una interfaz gráfica que permite visualizar el flujo de operaciones y su estado en tiempo real. Este proyecto no solo sirve como una herramienta de aprendizaje para conceptos estudiados en ELO330, sino que también refleja los desafíos y soluciones implementadas en sistemas reales de gestión del tráfico aéreo.
Nuestra solución no incurre al uso de procesos para simular el tráfico aéreo, sino que opta por el uso de hilos, de manera que se pueden realizar diferentes tareas de manera concurrente, y así simular de forma realista el comportamiento simultáneo de los diferentes aviones. Además, fue pertinente considerar un mecanismo de gestión de recursos compartidos, los cuales se van a relacionar con las pistas (recordar que cada pista no puede usarse simultáneamente) y gestión de una cola de prioridad de los aviones que deseen aterrizar, donde se dará prioridad a los aviones que presenten menor gasolina.
synchronized
) y mecanismos como
locks (ReentrantLock
) para garantizar el acceso exclusivo a cada pista.
PriorityBlockingQueue
), que permite ordenar las
aeronaves según sus niveles de prioridad (nivel de combustible).
Para la implementación de este sistema de simulación, se han considerado los siguientes aspectos:
Se obtiene la siguiente interfaz, la cual de manera periodica (gracias a una variable ajustable) va recibiendo aviones, los cuales
deben esperar su tiempo para hacer uso de las pistas, donde se aplica ya lo antes mencionado (técnicas aprendidas en el ramo) para evitar que
cada avión haga uso de la misma pista simultáneamente, como también se le da prioridad a los aviones los cuales tienen menor combustible.
Descarga el código fuente aquí: Código Fuente (archivo ZIP).
El proyecto realizado para la gestión de pistas y aviones demuestra cómo la programación concurrente puede simular de manera eficiente un entorno complejo como el control del tráfico aéreo. Los hilos representan el comportamiento independiente de cada avión y el controlador de tráfico aéreo, mientras que los recursos compartidos, como las pistas de aterrizaje y las colas de espera, se manejan con mecanismos de sincronización adecuados para garantizar un acceso seguro y ordenado (haciendo referencia a PriorityBlockingQueue). Este enfoque asegura que los aviones puedan despegar y aterrizar de manera prioritaria según su nivel de urgencia (combustible), maximizando el uso de las pistas y minimizando conflictos.