Propuesta de Proyecto Final:
Sistema de Gestión para una Red de Drones de Entrega
LogiDrone-UCC
Este proyecto consiste en desarrollar un producto de software que simule la gestión,
operación y optimización de una flota de drones para realizar entregas de paquetes
en una ciudad. Los estudiantes deberán aplicar todas las estructuras de datos vistas
en el curso para resolver los desafíos logísticos que presenta esta problemática.
1. Problemática a Solucionar
Una empresa de logística emergente desea implementar un sistema de entrega
autónomo utilizando drones. Se enfrenta a varios desafíos: ¿Cómo representar el
mapa de la ciudad y calcular las rutas más eficientes? ¿Cómo gestionar las
solicitudes de envío que llegan constantemente? ¿Cómo almacenar el inventario de
productos de forma que las búsquedas sean rápidas? ¿Cómo llevar un registro de
las operaciones y cómo administrar la flota de drones de manera equitativa?
El software LogiDrone-UCC debe ser la solución central que orqueste todas estas
operaciones de manera eficiente.
2. Aplicación Temático del Curso
Para construir el sistema, los estudiantes deberán implementar y conectar las
siguientes estructuras de datos:
• Memoria Dinámica y Apuntadores1: Serán la base para construir todas
las estructuras dinámicas del proyecto. La correcta gestión de la memoria
para crear y enlazar nodos es fundamental para la funcionalidad de listas,
árboles y grafos2.
• Grafos3:
o Función: Se usará un grafo para modelar el mapa de la ciudad. Los
nodos representarán puntos clave (almacén central, puntos de
entrega, zonas de recarga) y las aristas representarán las rutas
aéreas posibles entre ellos, ponderadas por la distancia o el tiempo
de vuelo.
o Aplicación: Se deberá implementar el algoritmo de búsqueda A* 4
para encontrar la ruta más corta y rápida desde el almacén hasta el
punto de entrega, evitando zonas de exclusión aérea.
• Colas (Queues)5:
o Función: Se implementará una cola para administrar las solicitudes
de envío a medida que los clientes las generan. Esto asegura que
los pedidos se procesen en el orden en que fueron recibidos (FIFO).
o Aplicación: El sistema despachará un dron tomando la primera
solicitud disponible en la cola.
• Pilas (Stacks)6:
o Función: Cada dron tendrá una pila para registrar su historial de
mantenimiento. La operación más reciente (ej. "Cambio de batería",
"Calibración de sensor") estará en la cima de la pila (LIFO).
o Aplicación: Permitirá consultar rápidamente el último estado o las
últimas acciones realizadas sobre un dron específico.
• Listas Doblemente Encadenadas7:
o Función: Se utilizará una lista doblemente encadenada para
gestionar la secuencia de entregas asignada a un dron en un solo
viaje.
o Aplicación: Esta estructura permite una fácil inserción o eliminación
de puntos de entrega en la ruta si un pedido se cancela o se añade
una nueva prioridad, permitiendo recorrer la ruta hacia adelante o
hacia atrás.
• Árboles AVL8:
o Función: Se empleará un árbol AVL para gestionar el inventario de
productos en el almacén. Cada producto tendrá un ID único que
servirá como clave en el árbol.
o Aplicación: Al ser un árbol autobalanceado, garantiza que las
operaciones de búsqueda, inserción y eliminación de productos
del inventario sean extremadamente rápidas (), lo cual es crucial
para confirmar la disponibilidad de un artículo al recibir un pedido9.
• Matrices Dispersas10:
o Función: Se puede usar una matriz dispersa para representar una
grilla de monitoreo del espacio aéreo de la ciudad. Las filas y
columnas representan coordenadas geográficas.
o Aplicación: La matriz almacenará la ID del dron que ocupa una
coordenada específica en un momento dado. Como la mayor parte
del espacio aéreo estará vacío, una matriz dispersa es la estructura
perfecta para ahorrar memoria y aun así permitir una consulta
rápida sobre la posición de los drones.
3. Producto de Software y Requisitos de Interfaz
El resultado será una aplicación de software funcional con una interfaz gráfica
interactiva (GUI) que permita al usuario operar la simulación de forma intuitiva.
Funcionalidades Clave:
1. Panel de Control: Visualizar el mapa (el grafo) con los drones en
movimiento.
2. Gestión de Pedidos:
o Crear una nueva solicitud de envío, que se añadirá a la cola.
o Ver el estado de los pedidos en tiempo real (en cola, en tránsito,
entregado).
3. Gestión de Inventario:
o Añadir nuevos productos al almacén (se insertan en el árbol AVL).
o Buscar productos por su ID para verificar existencias.
4. Monitoreo de Drones:
o Ver la ruta asignada a cada dron (la lista doblemente encadenada).
o Consultar el historial de mantenimiento de un dron (la pila).
5. Simulación: Iniciar, pausar y acelerar la simulación para observar cómo el
sistema gestiona las solicitudes y optimiza las rutas.
Requisitos de Interfaz Gráfica Interactiva:
• Visualización Dinámica: El mapa debe actualizarse en tiempo real para
mostrar el movimiento de los drones a lo largo de sus rutas.
• Interactividad con el Mapa: El usuario debe poder hacer clic en un nodo
del mapa (punto de entrega, almacén) para ver información detallada, como
los paquetes pendientes en esa ubicación.
• Entrada de Datos por Formularios: La creación de pedidos, la adición de
productos al inventario y la gestión de drones se realizarán a través de
ventanas y formularios amigables, no por consola.
• Retroalimentación Visual: El sistema debe usar alertas, cambios de color
o notificaciones en la interfaz para informar al usuario sobre eventos
importantes (ej. "Paquete Entregado", "Batería de Dron Baja").
• Navegación Intuitiva: El usuario debe poder moverse entre las diferentes
vistas (mapa, inventario, cola de pedidos) de forma clara y sencilla.
4. Entregables del Proyecto
Para la evaluación final del curso, los estudiantes deberán entregar un paquete
digital que contenga los siguientes elementos:
• Código Fuente Completo: Todo el código del proyecto, debidamente
comentado para explicar la implementación de cada estructura de datos y la
lógica del programa.
• Ejecutable de la Aplicación: Un archivo ejecutable (ej. un .jar para Java o
un ejecutable creado con PyInstaller para Python) que permita correr la
simulación sin necesidad de compilar el código.
• Documentación Técnica: Un documento (en formato PDF) que incluya:
o Descripción de la arquitectura del software.
o Explicación detallada de cómo se implementó cada estructura de
datos solicitada y cómo se integró en la solución.
o Diagramas (como diagramas de clases o de flujo) que ayuden a
entender el diseño del sistema.