Tema 7: Programación lineal En este tema veremos solamente unas nociones básicas de programación lineal. 1. Concepto de problema de programación lineal Un problema de programación lineal consiste en un problema en el que se busca el máximo o el mínimo de una función, denominada función objetivo, en un cierto conjunto generalmente compacto, denominado conjunto factible. Este conjunto debe tener ciertas características: está determinado por restricciones lineales de igualdad o desigualdad. Es decir, los puntos de este conjunto satisfacen una serie de ecuaciones y/o inecuaciones. Las restricciones de desigualdad (inecuaciones) no poseen desigualdades en sentido estricto, solamente de los tipos " "ó " ". Los conjuntos factibles pueden ser tanto rectas, semirectas, planos, semiplanos, puntos, polígonos, poliedros, etc., incluso pueden llegar a ser el conjunto vacío. Exceptuando este último y atípico caso estaremos con conjuntos convexos (los que cumplen que la recta que une cualesquier dos puntos del conjunto está contenida en el conjunto). Si el problema tiene solución (lo cual ocurre con seguridad si el conjunto es compacto) tiene que alcanzarse en un vértice del conjunto, no en un punto interior. Por diversas cuestiones, entre ellas la sencillez, vamos a analizar solamente problemas de programación lineal en el que no aparezcan igualdades, únicamente desigualdades. El problema puede tener solución o no. En el primer caso puede que se alcance en un único punto (vértice) del conjunto o se alcance en infinitos (si hay más de uno hay infinitos; si hay dos puntos que son solución todos los puntos del segmento que los une también son soluciones). En el segundo caso puede ocurrir que en ningún punto se alcance el mínimo o el máximo (por ejemplo, para que no se alcance el mínimo debe ocurrir que siempre que tomemos un punto hay otro en el que el valor de la función se inferior) o que no haya puntos factibles, porque el conjunto factible sea vacío (situación poco frecuente en nuestro estudio). Nos centraremos en el caso especial de problemas de 2 variables. En este caso cada desigualdad viene dada por una recta. En concreto, cada desigualdad denota alguno de los dos semiplanos determinados por dicha recta. Al final nuestro conjunto factible será la intersección de todos esos semiplanos: un polígono convexo en el caso de estar acotado. Ejemplo 1: Minimizar ( ) =2 +3 sujeto a + 1 +4 2 Ejemplo 2: 1
Maximizar ( ) = +5 sujeto a + 4 2 + 6 1 Veamos diferentes métodos para resolver este tipo de problemas. 2. Método analítico Se hallan los vértices del conjunto, eligiéndolos de entre todos los puntos que se obtienen intersectando dos a dos todas las rectas. Para elegir correctamente los vértices hay que tener en cuenta que éstos deben satisfacer cada una de las desigualdades dadas. Si un punto calculado a partir de la intersección de dos de las rectas no cumple alguna de las desigualdades, éste no es un vértice. Después evaluamos la función objetivo en dichos vértices y observamos dónde se alcanza el máximo y el mínimo. Ejemplo 1: Las rectas que tenemos que intersectar son + =1 +4 =2 Obtenemos al intersectarlas los puntos: ( 2 1) (0 1) (1 0) (0 1 ) (2 0) (0 0). De éstos eliminamos el 3 3 2 (0 1) (por no cumplir la segunda inecuación) y el (2 0) (por no cumplir la primera). Así que son válidos los puntos ( 2 1) (1 0) (0 1 ) (0 0). Evaluamos la función objetivo ( ) =2 +3 en éstos 3 3 2 ynossale ( 2 1)= 7 =2 b3 3 3 3 (1 0) = 2 (0 1)= 3 =1 5 (0 0) = 0 Luego el mínimo vale 0 y se alcanza en el origen (0 0). Nota: El máximo, aunque no se pide, vale 2 b3 y se alcanza en el punto ( 2 3 1 3 ). Ejemplo 2: Las rectas que tenemos que intersectar son + =4 2 + =6 = 1 2
Obtenemos al intersectarlas los puntos: (2 2) ( 3 5) (0 4) (4 0) ( 5 8 ) (0 6) (3 0) (0 1) ( 1 0) (0 0). 3 3 De éstos son válidos los puntos (2 2) ( 3 5 ) (3 0) (0 1) (0 0). Evaluamos la función objetivo ( ) = +5 en éstos y nos sale (2 2) = 12 ( 3 5)= 28 =14 3 (3 0) = 3 (0 1) = 5 (0 0) = 0 Luegoelmáximovale14 y se alcanza en el origen ( 3 2 5 2 ). Nota: El mínimo, aunque no se pide, vale 0 y se alcanza en el punto (0 0). 3. Método gráfico Sirve como complemento visual al método anterior. Suelen emplearse conjuntamente. Se trata de representar cada una de las rectas anteriores y, en definitiva, tener una idea gráfica del conjunto factible, observando con detenimiento sus vértices y aristas. Suele utilizarse también el siguiente recurso: Se van trazando rectas "paralelas. a la función objetivo, ( ), en el sentido de que son del tipo ( ) =constante. Según cómo es dicha función objetivo y cómo es el conjunto factible, de entre estas rectas es posible que haya alguna (como mucho serían 2) que son tangentes al conjunto, tocándolo en un punto o una arista completa. Ahí tendremos el máximo o el mínimo de la función objetivo, en todos los puntos donde la recta toca al conjunto. 3
1 x+y=1 x+4y=2 0.8 0.6 0.4 0.2 0 0 0.5 1 1.5 2 Figura 1: Ejemplo 1: Representamos los ejes coordenados y las rectas + =1 +4 =2 que son la de color azul y rojo, respectivamente. Observamos que la región factible es el poligono convexo de vértices ( 2 1) (1 0) (0 1 ) (0 0), es 3 3 2 decir, el que figura en la parte inferior izquierda del gráfico anterior. Como la función objetivo es ( ) =2 +3 debemos trazar rectas del tipo 2 +3 =, para R. Las que son tangentes al conjunto son la que pasa por (0 0) ylaquepasapor( 2 1 ). La recta de esta familia cuyo valor de 3 3 es mínimo es la que nos da el mínimo de la función. Éste se alcanza para,esdecir,parala recta 2 +3, que es la que pasa por el punto (0 0). De este modo también deducimos que el mínimo vale 0 ysealcanzaen(0 0). 4
7 y=x+1 x+y=4 y+2x=6 6 5 4 3 2 1 0-1 -2-1 0 1 2 3 4 5 Figura 2: Ejemplo 2: Representamos los ejes coordenados y las rectas + =4 2 + =6 = 1 que son la de color rojo, verde y azul, respectivamente. De nuevo la región factible es el poligono convexo que figura en la parte inferior izquierda del gráfico anterior. En este caso está limitado por los vértices (2 2) ( 3 5 ) (3 0) (0 1) (0 0). Y las rectas ahora del tipo +5 =, para R. Las que son tangentes al conjunto son la que pasa por (0 0) y la que pasa por ( 3 5 ). La recta de esa familia cuyo valor de sea máximo será la que nos dé el máximo. Éste se alcanza para =14, es decir, para la recta +5 =14,queeslaquepasaporelpunto( 3 5 ). De este modo también deducimos que el máximo vale 14 ysealcanzaen( 3 5). 5
8 x+y=8 7 6 5 4 y 3 2 1 0 0 1 2 3 4 x 5 6 7 8 Figura 3: Ejemplo 3: Maximizar ( ) =2 +2 sujeto a + 8 Como se puede comprobar en este caso el máximo vale 16 se alcanza en toda la arista que une los vértices (8 0) y (0 8). Ejemplo 4: Minimizar ( ) = +3 sujeto a + 1 En este caso el conjunto no está acotado, por lo que no está garantizada la existencia del mínimo, aunque en este caso el resultado es que sí. La representación gráfica del conjunto ayuda mucho en este caso, pues si trazamos rectas de la forma +3 = observamos que los valores más pequeños de se alcanzan para los puntos que están en la parte inferior izquierda, que es precisamente donde están los vértices del conjunto: (1 0) y (0 1). En éstos la función vale, respectivamente, 1 y 3. Luego el mínimo vale 1 y se alcanza en el primero de éstos, (1 0). Nota: El máximo no existe, pues existen rectas de las mencionadas +3 = que intersectan al conjunto, para valores todo lo grandes de quesequiera. 6
4. Simplex Es un método que permite resolver los problemas de programación lineal, dando la solución (si existe) y algún punto (aunque no sea único) en el que se alcance, o diciendo si no tiene solución, y por qué motivo. Es demasiado complicado para explicarlo en el poco tiempo del que disponemos. Decir que maxima utiliza este algoritmo para resolver los problemas en uno de sus comandos. En la página web hay algunos enlaces y un archivo donde se puede obtener más información acerca de todo esto. 7