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