Este proyecto implementa diversos algoritmos de despacho de procesos (FIFO, SJF y Prioridad) a través de una interfaz gráfica de usuario (GUI) utilizando PyQt5. Además, se integra con OpenAI para proporcionar análisis detallados de los resultados obtenidos.
- Python 3.7 o superior.
Sigue estos pasos para configurar y ejecutar el proyecto en tu máquina local:
git clone https://github.com/josefdc/Algoritmos-Despacho.git
cd Algoritmos-Despacho
Crea un entorno virtual para mantener las dependencias del proyecto aisladas del sistema global.
En Linux/macOS:
python3 -m venv .venv
source .venv/bin/activate
En Windows:
python -m venv .venv
.venv\Scripts\activate
Instala las dependencias requeridas listadas en el archivo requirements.txt
.
pip install -r requirements.txt
Crea un archivo .env
en la raíz del proyecto para almacenar tu clave de API de OpenAI:
OPENAI_API_KEY=tu_clave_de_api_aqui
Asegúrate de reemplazar tu_clave_de_api_aqui
con tu clave de API real de OpenAI.
Ejecuta el archivo main.py
para iniciar la aplicación:
python src/main.py
Para ejecutar las pruebas unitarias y verificar que todo funcione correctamente, usa:
python -m unittest discover tests
La aplicación GUI permite a los usuarios:
- Agregar procesos con su ID, tiempo de llegada, tiempo de ejecución y prioridad.
- Seleccionar el algoritmo de despacho deseado (FIFO, SJF, Prioridad).
- Generar el diagrama de Gantt para visualizar cómo se programan los procesos.
- Obtener análisis de los resultados utilizando la API de OpenAI.
main.py
: Punto de entrada principal de la aplicación.gui.py
: Implementación de la interfaz gráfica de usuario (GUI) utilizando PyQt5.scheduler.py
: Contiene la lógica de los algoritmos de planificación (FIFO, SJF, Prioridad).gantt_chart.py
: Módulo para generar gráficos de Gantt utilizando Matplotlib.openai_client.py
: Cliente para interactuar con la API de OpenAI.test_main.py
: Pruebas unitarias para verificar la funcionalidad de los algoritmos de planificación.requirements.txt
: Lista de todas las dependencias necesarias para ejecutar el proyecto.
Las pruebas unitarias están implementadas en test_main.py
y verifican la funcionalidad de los algoritmos de despacho de procesos (FIFO, SJF, Prioridad). Para ejecutar las pruebas, usa:
python -m unittest discover tests
El proyecto incluye la capacidad de interactuar con OpenAI GPT para analizar y comparar resultados de los algoritmos de planificación. Algunos ejemplos de prompts que puedes usar:
-
Comparación entre Algoritmos de Planificación:
- Prompt:
¿Cuál es la diferencia en el tiempo de espera total y promedio cuando se utiliza el algoritmo FIFO en comparación con SJF y Prioridad para los procesos actuales? ¿Cuál es más eficiente en términos de tiempo de espera?
- Prompt:
-
Análisis de Resultados en Detalle:
- Prompt:
Explica cómo se ejecutan los procesos en el diagrama de Gantt cuando se utiliza el algoritmo de planificación Prioridad. ¿Qué impacto tiene esto en el tiempo de finalización y de espera?
- Prompt:
-
Predicción de Comportamiento con Cambios en los Procesos:
- Prompt:
Si el tiempo de llegada del proceso P3 se retrasa en 4 unidades de tiempo, ¿cómo cambiaría el diagrama de Gantt y el tiempo de espera total utilizando el algoritmo SJF?
- Prompt:
-
Estrategias de Mejoramiento:
- Prompt:
¿Qué estrategias podríamos considerar para mejorar el tiempo de espera promedio de los procesos utilizando algoritmos de planificación más avanzados o ajustando los parámetros actuales?
- Prompt:
Este proyecto está bajo la Licencia MIT - vea el archivo LICENSE para más detalles.