En general, el estudio de las propiedades de sistemas lineales y su resolución, es mucho más simple que el de sistemas no lineales. A lo largo de la historia, la linealización de funciones alrededor de ciertos valores ha sido una técnica muy usada para el análisis del comportamiento de sistemas no lineales. Linealizar consiste pues en encontrar una función lineal que pueda aproximar una función dada alrededor de un punto.
El primer paso para resolver un problema de optimización es modelizar la realidad con lenguaje matemático, es decir, reescribirla mediante variables y relaciones entre éstas. Frecuentemente, la realidad da lugar a relaciones no lineales entre las variables que la definen. En programación matemática, el concepto de linealización consiste en aproximar una función dada por una función lineal en un intervalo para poder aplicar técnicas de resolución y optimalidad de problemas lineales. Para quien no esté familiarizado con el concepto, una función lineal es una función polinómica de primer grado, es decir algo de la forma:
Este artículo pretende exponer algunas de las linealizaciones más frecuentes usadas en el modelado de problemas de optimización.
- Función no lineal continua: Se puede aproximar una función no lineal continua mediante segmentos lineales de forma que el resultado de lugar a un conjunto de restricciones lineales a incorporar en el modelo.
La formulación de dicha linealización se puede encontrar en el artículo del blog «Cómo formular una Función Lineal a Trozos».
- Funciones discontinuas: De la misma forma, se puede modelizar una función no continua con discontinuidades de salto finito mediante una función piecewise discontinua. La formulación de dicha linealización se puede encontrar en el artículo del blog «Descuentos y penalizaciones. PWL no continuas».
- Rangos discontinuos de variables de decisión: En numerosas ocasiones, el rango de una variable de decisión x se define mediante intervalos discontinuos, es decir, a≤ x ≤ b ó c≤ x ≤d. Para representar esta situación, se introduce una variable binaria σ de forma que:
Y para N intervalos de forma general es:
- Máximos y mínimos: La modelización de la condición \(\max_{i \in I} (x_{i})\) se representa mediante los siguientes requisitos:
1. La variable y ha de ser mayor que cualquiera de las variables x, es decir,
2. Existe al menos un i ϵ I tal que \( y=x_{i}\)
Sea \(\sigma_{i}\) variable binaria de forma que \(\sigma_{i}=1 \hspace{0.3cm}si\hspace{0.3cm}y\leq x_{i}\), y 0 en otro caso, con i ϵ I . La siguiente condición asegura que se cumpla la condición 2.
Donde M es una constante infinitamente grande.
Quedaría únicamente modelizar la definición de σ añadiendo el conjunto de restricciones
- Producto de variables: El producto de dos variables puede ser linealizado en el caso de que una de las dos esté acotada. El caso más frecuente es el producto de dos variables binarias δ = α∙β que se modelaría de la siguiente forma:
Existen más linealizaciones y modelizaciones que las descritas en este artículo. Pretender escribirlas todas es absurdo, por no decir imposible. Para quien quiera seguir aprendiendo acerca de técnicas de modelización, el libro «Model Building in Mathematical Programming» de H. Paul Williams puede resultarle muy interesante.
¿Quieres saber más sobre programación matemática? Contáctanos sin problema y te ayudaremos.
Si quieres saber más sobre decide4AI, y mantenerte al tanto de futuros webinar o acciones, síguenos en las redes sociales (Linkedin, Twitter, Youtube).