UNIDAD III
Programación lineal
DRA. OLIVIA HERRERA MARQUEZ
Elementos de un modelo de programación
lineal
la programación lineal, es una técnica que surgió en el primer tercio del siglo XX, y fue
desarrollada, aplicándola a situaciones reales para resolver problemas relacionados, con la
programación, el transporte, y logística en los años, de la segunda guerra mundial.
Su creador fue el matemático ruso L. Kantorovich, y su aplicación inicial tuvo que ver con una
optimización de los programas de fabricación.
Sin embargo su aceptación, se extendió rápidamente a la economía y para 1950 el matemático
estadounidense George Dantzig creó el primer algoritmo.
La programación lineal en esencia, es una función compleja que intenta determinar a partir de un
conjunto de variables conocida, su influencia optima en determinados resultados.
Elementos de un modelo de programación
lineal
Todo programa lineal consta de partes o elementos:
VARIABLES DE DECISIÓN, . Representan los elementos del sistema a modelar que son
controlables por el decisor. En los modelos lineales continuos estas variables toman como valores
números reales y se representan por letras con subíndices los parámetros, la función objetivo y un
conjunto de restricciones. x1 x2,…
RESTRICCIONES, . Representan las limitaciones prácticas de determinados recursos o
imposiciones físicas de la realidad. Se expresan como ecuaciones e inecuaciones lineales de las
variables de decisión. Matemáticamente adoptan una de las siguientes formas:
…
FUNCIÓN OBJETIVO, Se trata de la función que mide la calidad de la solución
y que hay que optimizar (maximizar un beneficio o minimizar un coste). También
es una función lineal de todas o parte de las variables de decisión.
Ejemplo, problema de asignación de recursos
Solución
El modelo matemático de programación lineal para el problema de
asignación de recursos queda formulado de la siguiente manera:
Análisis y construcción de problemas de
programación lineal
En el planteamiento de un problema de programación lineal se debe cumplir cinco condiciones básicas:
Recursos Limitados: cantidad limitada, sea de horas de trabajo, equipos, dinero, materiales, suministros.
Objetivos explícitos: hace referencia a la optimización, sea de beneficios o de costos.
Linealidad: todo proceso, actividad o relación lineal utilizada se identifica con la cantidad de cada factor
con relación a los demás y a las cantidades de cada uno de los productos.
Homogeneidad: los productos elaborados en una máquina son idénticos.
Divisibilidad: productos como recursos pueden subdividirse en fracciones.
Cabe indicar cuando el único objetivo es maximización o minimización se utilizará la programación lineal, en
el caso de existir varios objetivos se aplicará la programación por metas.
…
A través de la programación lineal, las empresas (inclusivo pequeñas)
pueden decidir la forma de combinación de su producción, ya sea para
maximizar sus utilidades, o minimizar sus costos.
El proceso de toma de decisiones debe focalizarse en las soluciones de
manera flexible y alentar las contribuciones para fortalecer el proceso
empresarial, impulsando la búsqueda de soluciones a través del
pensamiento creativo, utilizando herramientas fundamentales como la
programación lineal.
FORMULACION DE PROBLEMAS LINEALES
La programación lineal son modelos destinados a la asignación
eficiente de los recursos limitados en actividades conocidas con el
objetivo de satisfacer las metas deseadas (maximizar beneficios o
minimizar costos). La característica distintiva de los modelos es que
las funciones que representan el objetivo y las restricciones son
lineales. (No se permite multiplicación de variables ni variables
elevadas a potencias). Algunas de las siguientes restricciones no se
pueden emplear en un modelo de programación lineal.
Un modelo de programación lineal se define
usualmente como sigue:
EJEMPLO 1.
Un fabricante de muebles tiene 6 unidades de maderas y 28 horas disponibles, durante las cuales fabricará
biombos decorativos. Con anterioridad, se han vendido bien 2 modelos, de manera que se limitará a
producir estos 2 tipos. Estima que el modelo uno requiere 2 unidades de madera y 7 horas de tiempo
disponible, mientras que el modelo 2 requiere una unidad de madera y 8 horas. Los precios de los
modelos son 120 dls. y 80 dls., respectivamente. ¿Cuántos biombos de cada modelo debe fabricar si desea
maximizar su ingreso en la venta?
OBJETIVO : Maximizar el ingreso por ventas
RESTRICCIONES :
Unidades de madera
Tiempo disponible
VARIABLE DE DECISION:
X1 = Cantidad de biombos tipo I a fabricar
X2 = Cantidad de biombos tipo II a fabricar
Métodos de solución
Definido previamente el problema, se formula el modelo matemático, el modelo
obtenido estará listo para aplicar los diversos métodos de solución, los cuales
permitirán determinar el valor de las variables de decisión y la función objetivo.
Los métodos de solución 2 son los siguientes:
Método gráfico
Método algebraico
Método Simplex,
El método gráfico.
Se aplica cuando tenemos un modelo matemático de Programación Lineal con dos variables
solamente y cualquier número de restricciones (la función objetivo y restricciones son
funciones lineales). Los pasos a seguir para hallar la solución gráfica son los siguientes:
a) Representar gráficamente las restricciones del modelo, ubicando los puntos de intersección
con los ejes x e y ó x1 y x2.
b) Unir los puntos de intersección en los ejes o coordenadas con una recta para cada restricción
del modelo.
c) Ubicar todos los puntos de intersección que se generan en el cruce de las rectas de cada
restricción graficadas en el plano.
d) Determinar el espacio de soluciones, que define las soluciones factibles que satisfacen las
restricciones.
e) Determinar la solución óptima probando todos los puntos de intersección en el espacio de
soluciones factibles.
El método algebraico
Complementa al método gráfico en la solución del modelo, se determina
resolviendo como ecuaciones simultáneas las restricciones del modelo, de dos en
dos, para hallar el punto de intersección de las rectas.
Determinar si existe una básica factible inicial
Determinar si existe una solución básica factible mejor, Si es así realizar el
siguiente paso, de otro modo, la solución actual es óptima
Pasar a la siguiente solución básica factible, cambiando una variable básica por
una no básica, haciendo que todas las variables sean o no negativas y se regresa al
paso 2.
El álgebra matricial y el
proceso de eliminación de
Gauss-Jordan para
resolver un sistema de
ecuaciones lineales
constituyen la base del
método simplex.
El método del simplex
Permite ir mejorando la solución a cada paso. El proceso concluye cuando
no es posible seguir mejorando más dicha solución. Se basa en la
siguiente propiedad: si la función objetivo, f, no toma su valor máximo en
el vértice A, entonces hay una arista que parte de A, a lo largo de la cual f
aumenta.
Consiste en buscar sucesivamente otro vértice que mejore al anterior. La
búsqueda se hace siempre a través de los lados del polígono (o de las
aristas del poliedro, si el número de variables es mayor). Cómo el número
de vértices (y de aristas) es finito, siempre se podrá encontrar la solución.
Los pasos a seguir en el método simplex
son:
Definir el problema en la forma estándar y generar nuestra matriz.
Determinar la solución básica inicial.
Seleccionar la variable de entrada utilizando la condición de optimalidad. Si no se
puede seleccionar una variable de entrada, quiere decir que estamos en la
condición óptima y finalizan las iteraciones. De otro modo se continúa con el
siguiente paso.
Seleccionar la variable de salida utilizando la condición de factibilidad.
Actualizar nuestra matriz realizando las operaciones de Gauss-Jordan. Volver al
paso número 3.
1. Definir el problema en la forma estándar y
generar matriz Donde x , x … x son las
1 2 n
variables del problema.
Antes de llevar nuestro
modelo a la forma estándar
debemos verificar que
todas las restricciones
tienen el lado derecho no
negativo. Es decir:
b1 , b2 … b m ≥ 0
¿Qué hago si el lado derecho de la restricción es
negativo?
Cuando el término independiente de la restricción es negativo, se debe multiplicar por -1 a
toda la restricción para convertir el valor del lado derecho en positivo. Esta multiplicación
también afectará al signo de la restricción de la siguiente forma:
Si la restricción es del tipo mayor igual (≥), se deberá cambiar a menor igual (≤).
En caso la restricción sea del tipo menor igual (≤), se deberá cambiar a mayor igual (≥).
Si la restricción es una igualdad, el signo se mantiene.
Un caso especial es cuando el término independiente de la restricción es 0 y el signo es
mayor igual (≥); en dicha situación, podemos multiplicar la restricción por (-1) para
convertirla en menor igual (≤). Esto nos servirá para no utilizar variables artificiales como
veremos posteriormente.
Convertir restricciones en igualdades
Para convertir las
•Cuando la restricción
restricciones en
es mayor igual (≥): En este
igualdades va a
tipo de restricciones se debe
depender de su signo:
restar una variable de exceso y
Si la restricción es así mismo agregar una variable
menor igual (≤): Para artificial. Por ejemplo:
este tipo de
restricciones debemos
introducir una variable
no negativa llamada de
holgura y que son
auxiliares para el
problema. Por ejemplo:
…
Si la restricción
es igual (=): En
este tipo de
El método Simplex “tradicional” o
restricciones
“básico” que se utiliza para los
debemos
problemas de programación lineal
agregar una
variable
donde todas las restricciones son
artificial de la del tipo menor e igual (≤). Para las
siguiente forma: restricciones que utilizan variables
artificiales debemos utilizar el
método de 2 fases o el método de
la M Grande.
Generar la matriz
Aplicando lo indicado en los puntos anteriores tendríamos lo siguiente:
Una vez convertidas nuestras restricciones en ecuaciones
procederemos a generar nuestra matriz:
En nuestra matriz podemos identificar lo siguiente:
Vector de Costes: Es el vector que contiene los coeficientes de todas las variables de la función
objetivo. En la parte inferior del vector se indican las variables en orden.
Vector Solución: En esta columna se coloca la solución básica inicial y se va actualizando conforme se
realizan las iteraciones. En la columna Cb se indica el coeficiente que corresponde a cada variable en el
vector de costes. Así mismo siempre se iniciará con las variables de holgura en la base cuando el
problema no tenga variables artificiales.
Coeficientes Restricciones: Se colocan los coeficientes de las restricciones en el mismo orden en que
fueron formuladas. La columna R contiene a los términos independientes también conocido como
vector de recursos.
Vector de costes reducidos: También conocido como precios sombra. Este vector se calcula
multiplicando el vector solución por los coeficientes de las restricciones y se resta el vector de costes.
Este procedimiento lo explicaremos al detalle en nuestra entrada del método de las dos fases y de la M
Grande, donde se presentan variables artificiales. En los ejercicios que veremos en esta entrada, al no
existir variables artificiales, el vector de costes será igual al vector de costes multiplicado por “-1”.
2. Determinar la solución básica inicial:
Como habíamos mencionado, el método simplex parte de un vértice de
la región factible, es decir, un punto extremo. Con cada iteración
avanzaremos de vértice en vértice hasta llegar a la solución óptima.
En nuestro caso, en la matriz elaborada podemos ver la solución básica
inicial que sería S1=35, S2=18 y S3=26 (cada variable del vector
solución se iguala al valor que se encuentra en la columna R. Estas
variables se denominan variables básicas. El valor de Z inicial también
se muestra en la columna R que es .
…
Las variables que no se
encuentran en la base se
denominan variables no básicas
y en este caso serían X1 y X2.
Ambas tienen un valor de 0.
¿Con esta solución tenemos el
mejor valor de Z? Para saberlo
debemos continuar al siguiente
paso:
3. Seleccionar la variable de entrada utilizando la
condición de optimalidad
Con nuestra matriz finalizada e identificada nuestra solución básica inicial revisaremos la
condición de optimalidad.
Condición de Optimalidad:
La condición de optimalidad consiste en verificar si la solución actual que tenemos en nuestra
matriz es la óptima o si se puede mejorar. Se verifica de la siguiente manera:
En un problema de maximización si todos los coeficientes del vector de costes reducidos son
mayores o iguales que cero, quiere decir que estamos en el punto óptimo y finaliza el problema.
En un problema de minimización si todos los coeficientes del vector de costes reducidos son
menores o iguales que cero, quiere decir que estamos en el punto óptimo y finaliza el problema.
…
Siguiendo con el ejemplo, siendo el problema de maximización, podemos ver que en el vector
de costes reducidos existen valores negativos, lo que significa que no estamos en el óptimo.
Eso quiere decir que debemos iniciar las iteraciones seleccionando la variable de entrada.
Variable de Entrada
La variable de entrada hace referencia a una de las variables no básicas que ingresará a la base
y formará parte de la solución del problema.
Los criterios para seleccionar la variable de entrada depende si el problema es de
maximización o minimización:
Para problemas de maximización, la variable de entrada será la variable no básica con el
coeficiente más negativo en el vector de costes reducidos.
Para problemas de minimización, la variable de entrada será la variable no básica con el
coeficiente más positivo en el vector de costes reducidos.
La columna donde está
ubicada la variable se
denomina columna
pivote.
En el ejemplo nuestra
variable de entrada sería
X1 dado que tiene el
valor más negativo en el
vector de costes
reducidos, es decir “-3”:
4. Seleccionar la Variable de Salida con la
Condición de Factibilidad
Condición de Factibilidad
La condición de factibilidad, para cualquier problema ya sea de maximización
o minimización, se verifica evaluando los valores de los coeficientes de la
matriz de restricciones que se encuentran en la columna que corresponde a la
variable de entrada.
Se debe verificar que al menos uno de sus valores sea mayor que 0 para
obtener nuestra variable de salida. Si no se cumple esa condición significa que
el problema tiene solución ilimitada no acotada.
Variable de Salida
Para determinar la variable que sale de la base se debe dividir el
valor correspondiente a la columna R con su respectivo coeficiente
en la columna de la variable de entrada (siempre y cuando este
coeficiente sea estrictamente positivo).
De los resultados obtenidos, el menor valor corresponde a la fila que
contiene a la variable de salida. Esta fila la llamaremos fila pivote
Aplicación con el ejemplo:
La variable de salida sería S2. El número que se encuentra al
cruzar la fila pivote y la columna pivote es el elemento pivote; en
nuestro caso sería 3:
5. Actualizar la Matriz
Una vez determinado nuestro elemento pivote, realizaremos las operaciones de Gauss-Jordan
para formar nuestra matriz identidad. El nuevo valor de cada fila se calculará de la siguiente
manera:
Para la fila pivote: El nuevo valor se obtendrá dividiendo el valor actual entre el elemento
pivote.
Nuevo Valor Fila Pivote = Valor Actual Fila Pivote / Elemento Pivote
Para las otras filas: El nuevo valor se calcula restando del valor actual, la multiplicación del
elemento de la fila que se encuentra en la columna pivote por el nuevo valor calculado en la
fila pivote.
Nuevo Valor = Valor Actual – (Elemento Fila Columna Pivote*Nuevo Valor Fila Pivote).
Para entenderlo mejor, continuaremos resolviendo el ejemplo.
Iniciaremos con la fila pivote:
En las otras filas realizaremos los cálculos de forma diferente.
Iniciaremos con la fila de S1:
Para la fila S3 tenemos:
Finalmente en la fila Z
tenemos:
La matriz resultante sería:
Cómo puedes ver la posición donde se
encontraba nuestro elemento pivote
ahora es 1 y los elementos que lo
acompañan en la columna se convierten
en 0. Es así que empezamos a formar
nuestra matriz identidad.
Volver al paso número 3
Con este último resultado, volveremos al paso 3 y repetiremos el proceso. Cómo existen
valores negativos en el vector de costes reducidos, podemos seguir optimizando.
El único valor negativo es -4, por lo que la variable que ingresará es X2.
Para elegir la variable que va a salir, dividimos cada valor de la columna R por su
contraparte de la columna X2 (este último valor debe ser positivo )
23/(19/3) = 69/19 = 3.632
El valor en la columna X2 es negativo por lo que no se toma en cuenta.
14/(16/3) = 21/8 = 2.625
El menor valor se encuentra en la fila de S3, por lo que es la variable que
saldrá de la base. El elemento pivote es 16/3.
Realizamos nuevamente las iteraciones obteniendo el siguiente resultado:
En esta última matriz vemos que el
vector de costes reducidos ya no tiene
ningún valor negativo, lo que quiere
decir que nos encontramos en el valor
óptimo. Obtendremos los valores de las
variables básicas y de Z de la siguiente
forma:
Las variables que no se encuentran en
la base tendrán valor de 0.
Solución: X1= 31/4, X2= 21/8, S1=
51/8, S2= 0, S3= 0, Z = 57/2
Problemas degenerados
Un empate al elegir la variable que sale se rompe arbitrariamente. El problema
ocurre en la siguiente iteración donde los valores de una o más variables básicas
llegan a ser cero, en cuyo caso se dice que la solución es degenerada. En este
punto no existe la seguridad de que el valor de la función objetivo mejorará, ya
que la nueva solución óptima puede permanecer degenerada de ser así, es posible
que las iteraciones del simplex entren en un circuito que repetirá las misma(as)
sucesión de iteraciones sin alcanzar nunca la óptima.
El problema se conoce como ciclaje y afortunadamente raras veces se presenta en
la práctica. En una situación de degeneración es esencial llevar las iteraciones del
método simplex hasta que se satisfaga completamente la condición de optimidad.
EJEMPLO:
SOLUCIÓN OPTIMA:
Interpretación económica del problema
dual
La primera interpretación económica de los problemas lineales duales fue formulada por el
economista y matemático L. Kantorovich en 1939, antes incluso de que Dantzig formulara el
primer algoritmo para la resolución de tales problemas.
cada vez que se plantea y resuelve un problema lineal, existe otro problema ínsitamente
planteado y que puede ser resuelto, es el considerado problema dual, el cual tiene unas
importantes relaciones y propiedades respecto al problema primal que pueden ser de gran
beneficio para la toma de decisiones.
Los problemas primales y duales se encuentran ligados por una serie de relaciones, saber la
existencia de estas puede ser considerado de gran utilidad para la resolución de problemas que
parecen no factibles, o que no pueden ser resueltos mediante un método en particular.
Relaciones entre problemas primales y duales
El número de variables que presenta el problema dual se ve determinado por el número de
restricciones que presenta el problema primal.
El número de restricciones que presenta el problema dual se ve determinado por el número de
variables que presenta el problema primal.
Los coeficientes de la función objetivo en el problema dual corresponden a los términos
independientes de las restricciones (RHS), que se ubican del otro lado de las variables.
Los términos independientes de las restricciones (RHS) en el problema dual corresponden a los
coeficientes de la función objetivo en el problema primal.
La matriz que determina los coeficientes técnicos de cada variable en cada restricción
corresponde a la transpuesta de la matriz de coeficientes técnicos del problema primal.
El sentido de las igualdades y desigualdades se comporta según
la tabla de Tucker, presentada a continuación.
Importancia de la dualidad en programación
lineal
La resolución de los problemas duales respecto a los primales se
justifica dada la facilidad que se presenta dados problemas donde el
número de restricciones supere al número de variables. Además de
tener gran aplicación en el análisis económico del problema.
Otra de las ventajas que presenta,es que dado a que el número de
restricciones y variables entre problema dual y primal es inverso, se
pueden resolver gráficamente problemas que presenten dos
restricciones sin importar el número de variables.