Skip to content

Trabajo practico final, materia "Programacion Concurrente" Ingenieria en Computacion

License

Notifications You must be signed in to change notification settings

brian1062/Sistema-de-Agencia-de-Viaje-Concurrente

This branch is 6 commits behind master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

49553d9 · Feb 17, 2025
Feb 9, 2025
Nov 18, 2024
Feb 16, 2025
Feb 16, 2025
Feb 17, 2025
Feb 12, 2025
Feb 17, 2025
Feb 17, 2025
Feb 16, 2025
Nov 18, 2024
Feb 17, 2025
Nov 18, 2024

Repository files navigation

Sistema de Agencia de Viajes con Redes de Petri

Este proyecto implementa un sistema de agencia de viajes utilizando Redes de Petri para modelar y controlar procesos concurrentes. El sistema gestiona el flujo de clientes, el manejo de reservas y la asignación de recursos de manera segura para múltiples hilos.

Descripción General

El sistema modela una agencia de viajes con las siguientes características:

  • Gestión de entrada y cola de clientes
  • Manejo concurrente de reservas por múltiples agentes
  • Administración y sincronización de recursos
  • Políticas configurables para balance de carga
  • Semántica temporal para temporización realista de procesos

Arquitectura del Sistema

El modelo de Red de Petri incluye:

  • 15 plazas que representan diferentes estados y recursos
  • 12 transiciones que modelan varios eventos y acciones
  • Múltiples hilos concurrentes que gestionan diferentes segmentos del sistema
  • Implementación de monitor thread-safe
  • Toma de decisiones basada en políticas para la asignación de recursos

Autores

Requisitos

  • Java 21
  • Gradle 8.5+

Compilación del Proyecto

# Clonar el repositorio
git clone https://github.com/brian1062/Sistema-de-Agencia-de-Viaje-Concurrente.git

# Navegar al directorio del proyecto
cd Sistema-de-Agencia-de-Viaje-Concurrente

# Compilar el proyecto
./gradlew build

Ejecución del Sistema

./gradlew run

Al ejecutar el sistema, puedes elegir entre tres políticas:

  1. Política Balanceada (distribución 50/50)
  2. Política Priorizada (distribuciones 75/25 y 80/20)
  3. Política FCFS (First-Come-First-Served)

Características

Implementación de Políticas

  • Política Balanceada: Asegura una distribución equitativa entre agentes y resultados de reservas (aceptadas/rechazadas).
  • Política Priorizada: Implementa distribución ponderada (75/25 para agentes, 80/20 para resultados)
  • Política FCFS: Implementación estándar de First-Come-First-Served

Pruebas

# Ejecutar pruebas con informe de cobertura
./gradlew test

# Ver informe de cobertura
open build/reports/jacoco/test/html/index.html

Herramientas de Análisis

El proyecto incluye un script Python (regex.py) para analizar secuencias de transiciones y verificar invariantes. Para ejecutar el análisis:

python3 regex.py

Contribuir

  1. Haz un fork del repositorio
  2. Crea tu rama de característica (git checkout -b feature/NuevaCaracteristica)
  3. Haz commit de tus cambios (git commit -m 'Agrega alguna NuevaCaracteristica')
  4. Haz push a la rama (git push origin feature/NuevaCaracteristica)
  5. Abre un Pull Request

Licencia

Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.