Una aplicacion web interactiva y educativa para resolver problemas de Programacion Lineal utilizando los metodos Simplex, Grafico y Transporte. Desarrollada con Vue 3 y Vite, ofrece explicaciones paso a paso detalladas, validacion cruzada entre metodos y una interfaz visual intuitiva.
https://runer0101.github.io/Solucion-MPL/
Resolucion algebraica para problemas con cualquier numero de variables.
- Manejo automatico de variables de holgura y artificiales
- Iteraciones detalladas con tablas Simplex
- Identificacion de soluciones optimas, no acotadas o infactibles
- Explicaciones matematicas paso a paso
Visualizacion geometrica para problemas con 2 variables.
- Representacion visual de la region factible
- Identificacion de puntos extremos
- Grafica de la funcion objetivo
- Analisis grafico de restricciones
Tres algoritmos para problemas de distribucion y logistica.
- Esquina Noroeste: Metodo heuristico basico para solucion inicial
- Costo Minimo: Prioriza asignaciones de menor costo
- Aproximacion de Vogel (VAM): Metodo de penalizacion mas eficiente
- Comparacion automatica de costos entre los 3 metodos
Validacion cruzada y comparacion automatica entre todos los metodos aplicables para verificar convergencia de resultados.
- Resolucion Paso a Paso: Visualiza cada iteracion con explicaciones matematicas detalladas
- Sistema de Pestañas: Navegacion intuitiva entre Calculadora, Tutorial y Teoria
- Validacion Cruzada: Verifica convergencia entre Simplex y Grafico automaticamente
- Comparacion de Costos: Identifica el metodo optimo y calcula ahorro de costos
- Teoria Integrada: Explicaciones matematicas completas de cada metodo
- Tutorial Interactivo: Guia paso a paso para aprender a formular problemas
- Ejemplos Precargados: Casos de prueba listos para Simplex, Grafico y Transporte
- Diseño Responsive: Optimizado para desktop, tablet y movil
- Interfaz Moderna: Diseño con gradientes, animaciones y componentes interactivos
- Exportacion de Resultados: Descarga soluciones en formato texto
- Deploy Automatico: CI/CD con GitHub Actions
- Node.js v20.19+ o v22.12+
- npm (incluido con Node.js)
# Clonar el repositorio
git clone https://github.com/runer0101/Solucion-MPL.git
cd Solucion-MPL
# Instalar dependencias
npm install
# Iniciar servidor de desarrollo
npm run devEl servidor de desarrollo estara disponible en http://localhost:5173
# Ejecutar linter
npm run lint
# Formatear codigo
npm run format
# Ejecutar tests unitarios
npm run testnpm run buildLos archivos compilados se generaran en el directorio dist/
- Selecciona el metodo desde la pantalla de bienvenida
- Configura el numero de variables y restricciones
- Elige el tipo de problema: Maximizar o Minimizar
- Ingresa los coeficientes de la funcion objetivo
- Define las restricciones con sus coeficientes y tipos (≤, ≥, =)
- Haz clic en "Resolver Problema"
Resultados:
- Solucion optima con valores de variables
- Iteraciones paso a paso (Simplex)
- Grafica de la region factible (Grafico - solo 2 variables)
- Explicacion detallada del resultado
Consejo: Usa la pestaña "Tutorial" para aprender a formular problemas y la pestaña "Teoria" para entender el metodo matematico.
- Selecciona "Metodos de Transporte"
- Define el numero de origenes (fuentes) y destinos
- Ingresa la oferta disponible en cada origen
- Ingresa la demanda requerida en cada destino
- Define la matriz de costos de transporte
- La aplicacion resolvera automaticamente con los 3 metodos
Resultados:
- Matriz de asignaciones para cada metodo
- Costo total de transporte calculado
- Comparacion de costos y metodo optimo
- Ahorro calculado entre metodos
- Selecciona "Comparar Todos los Metodos"
- Define tu problema de programacion lineal
- La aplicacion ejecutara todos los metodos aplicables
- Mostrara si los metodos convergen a la misma solucion
- Identificara el metodo mas recomendado
Solucion-MPL/
├── src/
│ ├── components/
│ │ ├── SimplexInput.vue # Formulario con pestañas (defineModel)
│ │ ├── SimplexSolution.vue # Visualizacion de soluciones
│ │ ├── SimplexTable.vue # Tabla Simplex iterativa
│ │ ├── TransporteInput.vue # Formulario de transporte
│ │ ├── CompararTodos.vue # Modo comparacion
│ │ └── MethodExplanation.vue # Explicaciones teoricas
│ ├── utils/
│ │ ├── simplex.js # Algoritmo Simplex
│ │ ├── grafico.js # Metodo Grafico
│ │ ├── transporte.js # Metodos de transporte
│ │ └── formatters.js # Formato numerico
│ ├── directives/
│ │ └── ripple.js # Directiva v-ripple para botones
│ ├── data/
│ │ └── examples.js # Ejemplos compartidos
│ ├── assets/
│ │ └── variables.css # Variables CSS globales
│ ├── App.vue # Componente raiz
│ └── main.js # Punto de entrada
├── public/
│ └── images/ # Recursos graficos
├── .github/workflows/
│ ├── deploy.yml # GitHub Actions deploy a GitHub Pages
│ └── ci.yml # CI: lint, tests, build
├── test/
│ └── simplex.spec.js # Tests unitarios (Vitest)
├── .eslintrc.cjs # Configuracion ESLint
├── .prettierrc # Configuracion Prettier
├── vite.config.js # Configuracion de Vite
├── vitest.config.js # Configuracion de Vitest
├── jsconfig.json # Configuracion de paths (@/)
├── package.json # Dependencias y scripts
└── README.md # Documentacion
| Tecnologia | Version | Proposito |
|---|---|---|
| Vue.js | 3.5.25 | Framework JavaScript reactivo |
| Vite | 7.2.4 | Build tool y dev server |
| Node.js | 20+ | Entorno de ejecucion |
| jsPDF | 3.0.4 | Generacion de PDFs |
| jsPDF-AutoTable | 5.0.2 | Tablas para PDFs |
| CSS3 | - | Estilos modernos |
| GitHub Actions | - | CI/CD pipeline |
| GitHub Pages | - | Hosting estatico |
<script setup>en todos los componentes (Composition API)defineModel()para two-way binding declarativo (SimplexInput)v-model:proppara comunicacion padre-hijo sin boilerplate- Template refs con
ref()para acceso al DOM (IntersectionObserver) - Directivas personalizadas (
v-ripple) para efectos reutilizables computed()ywatch()para reactividad derivadanextTick()para operaciones post-render- Modulo de datos compartido para evitar duplicacion de ejemplos
Algoritmo iterativo basado en algebra lineal para resolver problemas de programacion lineal con n variables.
Implementacion:
- Conversion automatica a forma estandar
- Manejo de variables de holgura, exceso y artificiales
- Deteccion de soluciones no acotadas e infactibles
- Pivoteo con metodo de Gauss-Jordan
- Registro completo de iteraciones
Complejidad: O(n³) por iteracion
Visualizacion geometrica de la region factible para problemas bidimensionales.
Implementacion:
- Calculo de intersecciones de restricciones
- Identificacion de vertices del poligono factible
- Evaluacion de la funcion objetivo en puntos extremos
- Renderizado grafico de restricciones y region factible
Limitacion: Solo aplicable para 2 variables
Metodo heuristico que asigna desde la esquina superior izquierda.
Complejidad: O(m×n)
Prioriza asignaciones en celdas con menor costo unitario.
Complejidad: O(m×n log(m×n))
Metodo de penalizacion que considera diferencias de costos.
Complejidad: O(m²×n²)
Caracteristicas comunes:
- Verificacion automatica de balance (oferta = demanda)
- Calculo de costo total de transporte
- Matriz de asignaciones resultante
- Comparacion automatica entre metodos
Este proyecto fue desarrollado como herramienta educativa para el curso de Investigacion Operativa I en la Universidad Privada Domingo Savio (UPDS).
Objetivos educativos:
- Facilitar el aprendizaje de metodos de optimizacion lineal
- Proporcionar visualizaciones interactivas de conceptos matematicos
- Ofrecer explicaciones paso a paso de cada iteracion
- Permitir comparacion practica entre diferentes metodos
- Integrar material teorico con la practica
Las contribuciones son bienvenidas. Para contribuir:
- Fork el repositorio
- Crea una rama para tu feature (
git checkout -b feature/nueva-funcionalidad) - Realiza tus cambios y haz commit (
git commit -m 'Agrega nueva funcionalidad') - Push a tu rama (
git push origin feature/nueva-funcionalidad) - Abre un Pull Request
- Reportar bugs o errores matematicos
- Proponer nuevos metodos de optimizacion
- Mejorar la documentacion o teoria
- Mejorar la UI/UX
- Traducir a otros idiomas
- Optimizar rendimiento de algoritmos
- Agregar tests unitarios
Este proyecto esta bajo la Licencia MIT. Consulta el archivo LICENSE para mas detalles.
Cesar Camacho Duran
- GitHub: @runer0101
- Proyecto: Solucion MPL
- Universidad Privada Domingo Savio (UPDS)
- Curso de Investigacion Operativa I
- Comunidad de desarrolladores de Vue.js
- Contribuidores del proyecto
Si este proyecto te ha sido util, considera:
- ⭐ Darle una estrella en GitHub
- 🔀 Hacer fork para tus propios proyectos
- 📢 Compartir con otros estudiantes
- 🐛 Reportar bugs o sugerir mejoras
🌐 Ver Demo · 🐛 Reportar Bug · ✨ Solicitar Feature
Desarrollado para estudiantes de Investigacion Operativa