Reemplazar Solver con MMULT, MINVERSA y SUMAPRODUCTO
Interesante aportacion de Leo que demuestra como resolver problemas de optimizacion lineal sin necesidad de la herramienta Solver, usando unicamente funciones matriciales nativas de Excel.
El contexto es un problema clasico de maximizacion: dada una funcion objetivo z = 5x + 3y sujeta a dos restricciones de desigualdad (que en el optimo se cumplen como igualdades), Leo muestra que se puede resolver como un sistema de ecuaciones lineales con MMULT y MINVERSA:
``
=SUMAPRODUCTO(
{5;3},
MMULT(
MINVERSA({2,1;1,3}),
{10;15}
)
)
`
Donde:
- {5;3} son los coeficientes de la funcion objetivo
- {2,1;1,3} es la matriz de coeficientes de las restricciones
- {10;15} son los terminos independientes
Para versiones de Excel con separador de listas distinto:
`
=SUMAPRODUCTO(
{5;3};
MMULT(
MINVERSA({2\1;1\3});
{10;15}
)
)
`
Leo explica la logica matematica detras: cuando las restricciones son desigualdades con el mismo sentido (ambas "menor o igual"), la maximizacion ocurre en el punto donde ambas se cumplen como igualdades. Esto reduce el problema a resolver un sistema de 2 ecuaciones con 2 incognitas, algo que MINVERSA y MMULT hacen de forma nativa.
Andres confirma el enfoque y anade contexto: Solver internamente no es mas que tablas con metodos de regresion lineal y no lineal, codigo VBA que realiza calculos iterativos. En muchos casos, con un poco de algebra matricial se puede llegar a soluciones mas directas y transparentes usando funciones como MMULT, MINVERSA, BASE o ESTIMACION.LINEAL`.
El problema: optimizar sin Solver
La herramienta Solver de Excel resuelve problemas de optimización, pero requiere activar un complemento, configurar celdas objetivo y restricciones, y lanzar un cálculo iterativo. Leo demostró en la comunidad que, para muchos problemas de programación lineal, no hace falta nada de eso: basta con funciones matriciales nativas.
El ejemplo es un problema clásico de maximización. Se quiere maximizar la función objetivo z = 5x + 3y, sujeta a dos restricciones de desigualdad. La clave conceptual es que, cuando las dos restricciones son del mismo tipo ("menor o igual"), el máximo se alcanza justo en el punto donde ambas se cumplen como igualdades. Y un sistema de dos ecuaciones con dos incógnitas es exactamente lo que MINVERSA y MMULT resuelven de forma directa.
La solución: MINVERSA + MMULT + SUMAPRODUCTO
`` =SUMAPRODUCTO( {5;3}; MMULT( MINVERSA({2,1;1,3}); {10;15} ) ) ``
Desglosando cada pieza:
{5;3}son los coeficientes de la función objetivo (el 5 y el 3 de5x + 3y).{2,1;1,3}es la matriz de coeficientes de las restricciones.{10;15}son los términos independientes de cada restricción.MINVERSAcalcula la matriz inversa del sistema.MMULTla multiplica por los términos independientes, obteniendo los valores óptimos dexey.SUMAPRODUCTOaplica esos valores a la función objetivo y devuelve el máximo.
Un apunte práctico: en las constantes matriciales, la coma separa columnas y el punto y coma separa filas. Si tu Excel está configurado con el punto y coma como separador de listas, tendrás que usar el separador de columnas que corresponda a tu configuración regional en lugar de la coma.
Por qué funciona
Andrés añadió el contexto de fondo: Solver, por dentro, no es más que tablas con métodos de regresión lineal y no lineal y código VBA que realiza cálculos iterativos hasta converger. En muchos casos, con un poco de álgebra matricial se llega a una solución más directa, más rápida y más transparente, porque ves exactamente qué operación estás haciendo en lugar de confiar en una caja negra iterativa.
Esto no significa que Solver sobre —es imprescindible para problemas no lineales, con muchas variables o con restricciones complejas—, pero para sistemas lineales pequeños las funciones matriciales ganan en claridad y no dependen de ningún complemento.
Funciones clave
MINVERSA: calcula la matriz inversa, el corazón de la resolución de sistemas lineales.MMULT: multiplica matrices; combinada conMINVERSAresuelveAx = b.SUMAPRODUCTO: aplica los coeficientes de la función objetivo a la solución.ESTIMACION.LINEALyBASE: otras funciones útiles para enfoques algebraicos, mencionadas como alternativas.
Conclusión
Cuando un problema de optimización es lineal y sus restricciones se cumplen como igualdades en el óptimo, no necesitas Solver: MINVERSA + MMULT te dan la solución en una sola celda, sin complementos ni iteraciones. Es el tipo de idea —cuestionar la herramienta "obvia" y resolverlo con matemáticas puras— que hace tan valiosa la comunidad de Influexcel.
Más contenido de Excel en InflueXcel
- Cuenta clientes y cervezas en Excel 🍺 Caso "La Taberna: El Poney Pisador" (Nivel 1) Tutorial🍺 Noche cerrada en Bree. Frodo, Sam, Merry y Pippin cruzan la puerta de El Poney Pisador huyendo de los Jinetes Negros: la sala está a reven
- SUMAR.SI.CONJUNTO en acción con El Señor de los Anillos 🃏 El 21 de La Comarca TutorialLo que practicamos en este caso: • Contar cartas por palo con CONTAR.SI • Sumar valores con condiciones (SUMAR.SI / SUMAR.SI.CONJUNTO) • Apl
- Reto de Excel: El cumpleaños de Bilbo 🎂 | CONTAR.SI y SUMAR.SI desde cero (Nivel 1) TutorialEn La Comarca se celebra el cumpleaños número 111 de Bilbo Bolsón: cerveza, pasteles, fuegos artificiales… y algún curioso escondido tras el
- ¡Excel PowerQuery Hack! Conexiones con rutas relativas en 10 minutos! Tutorial¿Harto de ajustar las conexiones en PowerQuery cada vez que compartes tu archivo de Excel? 🙄 Convierte las conexiones de PowerQuery con ruta
- Mejora un 90% el rendimiento de Power Query con SQLite TutorialPower Query es una herramienta potente para consolidar, combinar y calcular datos, pero cuando trabajamos con millones de registros y calcul
- Reorganizar tablas mensuales: cruzar por persona buscando en vertical y en horizontal CasoNuevo caso interesante de la comunidad. Juan tenía varias tablas mensuales (a veces más de una en el mismo mes) y quería reorganizarlas por
- Un dato de todas las hojas, escrito una sola vez CasoEsta semana surgió en la comunidad un reto muy habitual cuando un libro tiene muchas hojas: mostrar el valor de la celda B3 de cada hoja, in
- Un índice de hojas que se genera solo: HYPERLINK en rangos desbordados CasoEsta semana surgió en la comunidad un pequeño "expediente X". Un miembro llegó tras ver un vídeo con una idea clara en la cabeza: montar una
- Reformatear un código alfanumérico al teclear: de NN1234567 a NN-12345-67 CasoEsta semana surgió en la comunidad una duda muy práctica: cómo conseguir que al escribir un código tipo NN1234567 (dos letras seguidas de si
- Reclasificación contable: duplicar cada fila con una conversión distinta por columna, en un único bloque CasoInteresante reto contable planteado esta semana por un miembro de la comunidad. Juan parte de una tabla de apuntes contables (rango C7:P10)