Automatización Simplex

Resolviendo Programación Lineal con Gran M y Dos Fases

Un proyecto de software para optimizar la toma de decisiones

El Desafío: La Complejidad Manual

Cálculos Extensos

Iteraciones manuales que consumen mucho tiempo.

Propenso a Errores

Un simple error de cálculo invalida toda la solución.

Lento para Decidir

La lentitud manual retrasa decisiones críticas de negocio.

Nuestra Solución: Una Aplicación Inteligente

Entrada del Problema

Z, Restricciones

Solver App

Gran M / Dos Fases

Solución Óptima

Resultados y Pasos

Flujo del Algoritmo

1

Construcción del tableau inicial con variables artificiales

2

Iteraciones Simplex: Selección de pivote y operaciones fila

3

(Dos Fases) Transición Fase 1 → Fase 2

4

Extracción de valores óptimos y generación de reportes

Conceptos Clave

Método Simplex

La base de todo. Navega por los vértices de la región factible.

+

Variables Artificiales (A)

Se añaden para iniciar la solución en problemas con o =.

Método Gran M

Penaliza las variables A en la función objetivo.

Método Dos Fases

Primero elimina las A, luego optimiza.

Visualizando la Gran M

Función Objetivo Original

Max Z = 3x₁ + 2x₂

- M*A

Función Objetivo Penalizada

Max Z = 3x₁ + 2x₂ - M A₁ - M A₂

El valor gigante de M fuerza a las variables artificiales (A) a ser cero en la solución óptima. Si no lo hacen, ¡el problema es infactible!

Requerimientos Clave del Sistema

Funcionales

  • • Entrada dinámica de variables/restricciones
  • • Selección de método (Gran M/Dos Fases)
  • • Visualización de tableaus por iteración
  • • Diagnóstico de solución (óptima/infactible)

No Funcionales

  • • Precisión matemática (ε = 1e-10)
  • • Soporte hasta 100 variables / 500 restricciones
  • • Validación de entradas numéricas
  • • Interfaz intuitiva con JavaFX

El Enfoque de Dos Fases

1

Fase 1: Limpieza

Min W = A₁ + A₂ + ...

El único objetivo es hacer que todas las variables artificiales sean cero.

Si W = 0 → Continuar a Fase 2
Si W > 0 → Problema Infactible
2

Fase 2: Optimización

Max Z = 3x₁ + 2x₂

Con la base "limpia" de la Fase 1, se resuelve el problema original.

Encontrar la solución óptima.

Demostración de la Aplicación

Solver PL

> Ingrese datos del problema...

> Seleccione Método: Gran M

> Seleccione Objetivo: Maximizar

Solución Óptima Encontrada -------------------------- Variables de Decisión: X1: 3.00 X2: 12.00 Función Objetivo (Z): 33.00

Arquitectura del Software

Modelo

La lógica y los datos

SimplexBase.java GranM.java DosFases.java

Controlador

El cerebro que conecta todo

HelloController.java

Vista

La interfaz de usuario

hello-view.fxml WindowSolucion.java

Manejo de Casos Especiales

Infactibilidad

Detecta variables artificiales en base con valor > 0

No Acotado

Identifica cuando no existe fila pivote válida

ε

Estabilidad Numérica

Uso de épsilon (1e-10) para evitar errores de punto flotante

Resultados Validados

Caso de Maximización

Caso de Minimización

Problema Infactible

Solución no Acotada

Validación con Problemas Reales

Problema: Maximizar Z = 3x₁ + 5x₂

Restricciones:

x₁ ≤ 4

2x₂ ≤ 12

3x₁ + 2x₂ ≤ 18

Solución Óptima:

x₁ = 2.00, x₂ = 6.00, Z = 36.00

Resultados consistentes con soluciones académicas y comerciales

Conclusiones y Futuro

Lo que Logramos

Automatización exitosa que ahorra tiempo y reduce errores.
Potente herramienta educativa para visualizar el proceso Simplex.
Implementación robusta que maneja casos especiales.

Próximos Pasos

Exportar resultados a PDF/Excel.
Implementar Análisis de Sensibilidad.
Añadir nuevos algoritmos como Simplex Revisado.

¡Gracias por su atención!

1 / 5