Unidad 4 Método Simplex

Anuncio
Unidad 4
Método Simplex
Se ha visto que los problemas de programación lineal (pl) tienen una estructura
bien definida, se trata de optimizar una función pero respetando una serie de restricciones que están dadas por un sistema de ecuaciones, casi todas desigualdades. Encontrar la
solución de tales problemas implica encontrar las soluciones posibles de este sistema de
ecuaciones. En los cursos de álgebra lineal se establece que cuando un sistema tiene menos ecuaciones que incógnitas, generalmente tiene un número infinito de soluciones.
En la unidad 2 se mostró cómo encontrar la solución a problemas de solamente dos
incógnitas que incluyen desigualdades, ya que en ese caso se puede trabajar en el espacio R2. En estos casos se vio que las restricciones determinan una región factible que es
el lugar geométrico de los puntos solución del sistema de ecuaciones (desigualdades)
correspondientes a las restricciones. También se vio que de esas infinitas soluciones, la
solución óptima, o sea, la que optimiza a la función objetivo (fo), tiene que estar en
uno de los vértices de la región factible, y estos vértices corresponden a la intersección
de un par de ecuaciones de restricción.
Como se trata de sistemas lineales, se pueden encontrar analíticamente los “vértices” intersección, ver cuáles quedan dentro de la región factible –y que por lo tanto
son una solución básica factible– y ver cual de ellos da el mejor valor a la fo. Pero los
problemas reales suelen tener mucho más que dos variables; en muchos problemas no
muy complicados, se trata de decenas y hasta cientos de variables sujetas a decenas de
restricciones. Si se piensa en un problema pequeño de 2 variables y 6 restricciones,
habrá que encontrar todas las intersecciones de cada par de rectas, que en este caso
serían 15. En general en R2, el número de intersecciones entre n rectas será el número
de combinaciones de n tomados de a 2, o sea, Cn2. A estos vértices hay que agregar las
intersecciones de cada recta con los ejes coordenados, otros 2n vértices. Pero no todos
estos 2n + Cn2 puntos pertenecen a la frontera de la región factible; habrá que ver cuáles de ellos son soluciones factibles; en el caso de seis restricciones se reducen como
máximo a siete, y determinar en cuál de ellos se encuentra la solución óptima.
En los problemas reales, el número de puntos que se han de analizar es tan grande
que se necesita contar con una estrategia eficiente de búsqueda que permita encontrar
solamente aquellos puntos que se encuentran en la frontera, o sea, que corresponden a
una solución posible.
121
Programación lineal
Para solucionar estos problemas en el año de 1947 George Dantzig desarrolló un método extraordinariamente eficiente conocido como Simplex, que es capaz de encontrar la
solución óptima de entre las muchas soluciones posibles analizando sólo algunas de las
soluciones básica (o sea, vértices): parte de una solución básica inicial y continúa inspeccionando las soluciones adyacentes que permitan mejorar el objetivo del problema. El
cálculo de problemas reales fue posible gracias a que simultáneamente ocurrió el desarrollo de las computadoras digitales en que estaban trabajando Eckert, Wilkes y finalmente
von Neumann, lo que permitió que las operaciones aritméticas se realizarán en pocos
segundos y posibilitaron así la computación de miles de operaciones en poco tiempo.
Dantzig fue un doctor en matemáticas de la Universidad de California que durante
la Segunda Guerra Mundial tuvo que trabajar en el ejército en la planificación de la
logística para el abastecimiento. Esta visión de los problemas reales lo llevó al desarrollo
del método Simplex. Eckert junto con Mauchly fabricaron, en la Universidad de Pensylvania, la primera computadora de propósito general, la enac; esta computadora integró a la electrónica el concepto de programa resultado de la teoría de autómatas
desarrollada por von Newmman, científico húngaro radicado en Estados Unidos. Von
Newman hizo notables aportaciones a la física cuántica, contribuyó al desarrollo de la
lógica y para la economía propuso la teoría de juegos y la del equilibrio general como
herramientas fundamentales para su análisis. El trabajo de estos brillantes científicos
durante la década de 1940 hizo posible que se desarrollara el método Simplex, que
permite la solución de una variadísima gama de problemas de manera muy eficiente
dando una herramienta fundamental para la investigación de operaciones.
El método Simplex es un algoritmo iterativo, esto es, un procedimiento que a partir
de un paso inicial realiza un cálculo para encontrar una solución posible; verifica si esta
solución es mejorable y, si lo es, vuelve a calcular una nueva solución mejor que la anterior, esto es, realiza una iteración; cuando ya no la pueda mejorar, es que llegó a la
solución óptima. El procedimiento de iteración es similar a un paso del método de
Gauss con pivote. Sin embargo, el método de Gauss se aplica a sistemas de ecuaciones
(igualdades) y no a desigualdades; este inconveniente es subsanado agregando una variable a cada restricción que representa la holgura o sobrante de ese recurso.
Aunque no se verá la demostración formal del método Simplex, es importante destacar las premisas o teoremas en que se basa:
1)Todo sistema de la forma A x = b, o no tiene solución o el conjunto de las soluciones
factibles forman un conjunto convexo (polígono convexo en R2).
2)Si un problema de pl tiene solución óptima, ésta es un punto extremo o de la frontera del conjunto de soluciones del sistema de restricciones del problema. Si más de
un punto es óptimo, entonces lo son todos los puntos en combinación lineal de los
dos anteriores.
122
Método simplex
En esta unidad se explicará el método Simplex para el caso canónico, esto es, un
problema en que se quiere maximizar la utilidad sujeta a restricciones debido a recursos
limitados como materias primas y horas de trabajo, representadas por relaciones de
menor o igual.
Para facilitar la explicación del método se utilizará un ejemplo típico: la producción
de dos artículos sujeta a restricciones de mano de obra, materias primas y demanda. Se
resolverá primero por el método gráfico para luego resolverlo con el método Simplex.
Ejemplo 4.1
Una empresa produce dos tipos de artículos, el a y el b. La utilidad que se obtiene por
unidad es de $150 por el a y $200 por el b. El gerente de producción quiere realizar la
planeación semanal sabiendo que solamente cuenta con 64 horas para la elaboración y
24 unidades de materia prima. De semanas anteriores sabe que la demanda máxima del
artículo b es de 6 unidades. En el cuadro se indican los requisitos para realizar cada uno
de los artículos.
Cuadro 4.1
a
b
Mano de obra (h)
8
8
Materia prima
4
2
Variables de decisión:
x1: cantidad del artículo a a producir
x2: cantidad del artículo b a producir
Función objetivo:
Máx U = 150x1 + 200x2(4.1a)
Restricciones:
Mano de obra: 8x1 + 8x2 ≤ 64 horas
Materias primas:4x1 + 2x2 ≤ 24 unidades
Demanda:x2 ≤ 6 artículos
(4.1b)
(4.1c)
(4.1d)
La solución del problema se muestra en la gráfica 4.1:
123
Programación lineal
Gráfica 4.1
14
12
4x1 + 2x2 = 24
10
8
8x1 + 8x2 = 64
6 D
: 0x1 + 1x2 = 6
C
4
B
2
Payoff: 150x1 + 200x2 = 1 500
A
0
0
4
2
Optimal Decisions (x1, x2) : (2, 6)
: 8x1 + 8x2 ≤ 64
: 4x1 + 2x2 ≤ 24
: 0x1 + 1x2 ≤ 6
6
8
10
12
14
En la gráfica 4.1 aparecen como vértices de la región factible los puntos B = (4, 4)
intersección entre la recta de la restricción de mano de obra y la correspondiente a las
materias primas; el vértice C = (2, 6) en el que se agotan las horas de mano de obra y
se satisface totalmente la demanda, y las intersecciones con los ejes debido a las condiciones de no negatividad D = (0, 6) y A = (6, 0). Todos los anteriores son soluciones
factibles, que en el método Simplex se les llama soluciones básicas factibles. Hay otros
puntos de intersección de las restricciones en la gráfica 4.1 como el (3, 6), pero están
fuera de la región de soluciones posibles del problema, en este punto se exceden las
horas disponibles.
Para poder trabajar analíticamente es más conveniente tener un sistema de ecuaciones lineales, por lo que el primer paso es transformar las desigualdades en igualdades
agregando variables que se denominan variables de holgura; por ejemplo, la ecuación
(4.1b) sobre las horas hombre utilizadas:
8x1 + 8x2 ≤ 64
124
Método simplex
se convierte en:
8x1 + 8x2 + h1 = 64
(4.2b)
donde h1 son las horas hombre no utilizadas.
De la misma manera la ecuación correspondiente a las materias primas:
4x1 + 2x2 ≤ 24
se transforma en:
4x1 + 2x2 + h2 = 24 (4.2c)
donde h2 son las unidades de materia prima sobrantes.
Por último la ecuación de la demanda:
x2 ≤ 6
se convierte en:
x2 + h3 = 6 (4.2d)
donde con x2 será el número de artículos a producidos y h3 representa cuantos aún
se pueden producir sin superar la demanda máxima.
El sistema queda entonces así:
Máx U = 150x1 + 200x2
s.a.
8x1 + 8x2 + h1= 64
4x1 + 2x2+ h2= 24
x2+ h3 = 6
x1, x2, h1, h2, h3 ≥ 0
A este sistema se le llama sistema aumentado, y cuenta con cinco variables y tres
ecuaciones, por lo que se trata de un sistema con infinitas soluciones. Si las tres ecuaciones son linealmente independientes, para obtener una de las soluciones es necesario
dar un valor arbitrario a dos de las variables, y quedan entonces solo tres incógnitas que
podrán despejarse.
8x1 + 8x2 + h1= 64
4x1 + 2x2 + h2= 24
x2+ h3 = 6
125
(4.2b)
(4.2c)
(4.2d)
Programación lineal
Primer paso
El método Simplex propone como primer paso asignar a las variables originales los valores (x1, x2) = (0, 0), con lo que el sistema se reduce a:
8(0) + 8(0) + h1= 64
4(0) + 2(0) + h2 = 24 0+ h3 = 6 (4.3b)
(4.3c)
(4.3d)
y despejando las variables restantes:
h1 = 64 – 8x1 – 8x2(4.3b)
h2 = 24 – 4x1 – 2x2(4.3c)
h3 = 6
(4.3d)
la solución inicial queda así:
xo = (x1, x2, h1, h2, h3) = (0, 0, 64, 24, 6)
si se sustituye en la función de utilidad:
Uo = 0
Segundo paso
El siguiente paso es preguntarse si puede mejorarse esta solución forzando que sea cero
a otra variable diferente de las que actualmente lo son, y asignando un valor diferente
de cero a una de las que en el paso anterior lo eran: x1 o x2 . Para esto se analizan los
coeficientes de la fo para ver cuál de las variables ofrece un incremento mayor por
unidad producida.
U = 150x1 + 200x2
en este caso cada unidad de la variable x2 contribuye con 200, por lo que se tratará de
hacer que la variable x2 tome el mayor valor posible; esto significa tratar de producir la
mayor cantidad posible de unidades del artículo b.
126
Método simplex
Tercer paso
Si la solución es mejorable, hay que calcular la nueva solución. Se deberá tratar de
que x2 tome el mayor valor posible. Las restricciones son las que limitan este valor;
en las ecuaciones (4.3) se observa que se cuenta con 64 horas hombre y se necesitan
8 horas para hacer cada artículo, por lo tanto el número máximo que se podría producir es x2 = 64 / 8 = 8.
En cuanto a materias primas, se requieren de 2 unidades por cada artículo b, y se
dispone de 24 unidades, por lo que sólo se podrían producir x2 = 24 / 2 = 12.
Además, por cuestiones de demanda del mercado, x2 = 6; entonces el valor máximo
que puede tomar x2 es el menor de los anteriores:
x2 máximo = 6
Si se produjeran más unidades, no podrían venderse en el mercado. Por lo tanto, h3 ,
que corresponde al número de artículos que aún se podrían fabricar, se hace igual a
cero:
x2 = 6
y
h3 = 0
Se dice que x2 es la variable de entrada y que h3 es la variable de salida. Para determinar cuáles son los recursos aún disponibles, de (4.2d) se despeja la nueva variable
básica y se sustituye en las ecuaciones de los otros recursos disponibles, (4.3b) y (4.3c):
x2 = 6 – h3
h1 = 64 – 8x1 – 8 (6 – h3) =
h1 = 16 – 8x1 + 8 h3
h2 = 24 – 4x1 – 2 (6 – h3) =
h2 = 12 – 4x1 + 2 h3
Se llega entonces a una solución básica mejorada, nuevamente un sistema con cinco
incógnitas y tres ecuaciones, por lo que es necesario asignar valor a dos de ellas, en este
caso x1 = 0 y h3 = 0; en este sistema:
x2 = 6 – h 3
h1 = 16 – 8x1 + 8 h3(4.4b)
h2 = 12 – 4x1 + 2 h3(4.4c)
127
Programación lineal
Esto indica que se deben producir 6 unidades del producto b, pero que aún se dispone de 16 de las 64 horas hombre y de 12 unidades de materia prima de las 24 originales. La utilidad en este caso será de $1 200, superior a la solución anterior:
x1 = (x1, x2, h1, h2, h3) = (0, 6, 16, 12, 0)
U1 = 1 200
Una vez obtenida la nueva solución es necesario regresar al paso 2. ¿Es posible mejorar esta solución? Para esto hay que calcular el efecto neto sobre la función de utilidad
de cada una de las variables. Ya que no es posible seguir incrementando el valor de x2 ,
las utilidades marginal o unitaria de cada una de las variables pueden no ser las que
teníamos al comenzar. Para esto se sustituyen las ecuaciones de las variables básicas en
la fo y se observa el valor de los coeficientes:
U = 150x1 + 200x2 + 0 h1 + 0 h2 + 0 h3
Como las variables de holgura tienen coeficiente cero, se anulan y queda así:
U1 = 150x1 + 200 (6 – h3) = 1 200 + 150x1 – 200 h3
Esta nueva expresión nos informa que por cada unidad del artículo a que se produzca la fo se incrementará en $150, y por cada unidad que se incremente h3 , se
dejarán de ganar $200. (Aquí es importante señalar que la utilidad incremental por
cada artículo a coincide con el valor original, pero esto no siempre es así, ya que en
ciertos casos habrá que dejar de producir parte de un artículo para poder hacer el otro,
con lo que la utilidad será menor.) De la ecuación (4.4b) se obtiene x1 = 2, y de la
(4.4c), x1= 3; o sea, las 16 horas hombre aún disponibles permiten producir 2 unidades de a, aunque se dispone de materia prima para 3 de ellas; por lo tanto se podrán
producir sólo x1 = 2; la nueva solución será ésta:
x1 = 2
x2 = 6
h1 =16 –16 = 0
h2 = 12 – 8 = 4
h3 = 0
La nueva solución tiene tres variables distintas de cero y dos igual a cero; en este
paso la variable entrante fue x1, y la saliente, h1 . Las tres primeras son las nuevas variables básicas. Sustituyendo la variable entrante en la fo:
128
Método simplex
U2 =
U2 =
U2 =
U2 =
1 200 + 150x1 – 200 h3
1 200 + 150x1 – 200 h3 = 1 200 +150 (2 – h3) – 200 h3
1 500 – 350 h3
1 500
La nueva solución es ésta:
x2 = (x1, x2, h1, h2, h3) = (2, 6, 0, 4, 0)
U2 = 1 500
Esta solución es mejor que la anterior ya que la fo aumentó. La ecuación de la fo
ya no tiene variables con coeficientes positivos, por lo tanto ya no es posible incrementar
la utilidad, pues si h3 tomara un valor positivo, es decir, si se produjeran menos de seis
unidades del producto b, la utilidad disminuiría, por lo que se ha llegado a la solución
óptima.
El método Simplex en forma tabular
La resolución de estos problemas por el método analítico utilizado en la sección anterior facilita entender el significado físico de cada una de las variables y parámetros con
el problema concreto que se está analizando. Pero así como se puede resolver un sistema
de ecuaciones lineales por sustitución o por los métodos matriciales, lo realizado no
difiere mucho del método de Gauss con pivote, aunque tiene sus particularidades.
Para poder aplicar el método matricial, es necesario contar con un sistema de ecuaciones, no de desigualdades, por lo que el primer paso es reescribir el sistema; a partir
de allí el método realiza una serie de iteraciones hasta encontrar la mejor solución. Cada
iteración es una transformación del sistema de ecuaciones que mejora la solución anterior. El método se puede bosquejar así:
1)Transformar las desigualdades del problema en un problema estándar introduciendo las variables de holgura.
2)Construir la tabla inicial.
3)Determinar la solución inicial, llamada solución básica inicial.
4)Determinar si se puede mejorar la solución dependiendo de los coeficientes de la
función objetivo según el criterio de mejorabilidad:
Si sí, entonces hay que calcular la nueva solución:
a) determinar cuál es la variable entrante
b) determinar cuál es la variable saliente
c) modificar las restricciones por pivoteo
129
Programación lineal
d) calcular el valor de la fo
e) explicitar la nueva solución
f ) volver al inciso 4
Si no, entonces se termina y la última solución es la solución óptima.
Para explicar el método se resolverá el problema planteado por las ecuaciones (4.1):
Máx U = 150x1 + 200x2(4.1a)
8x1 + 8x2≤ 64
(4.1b)
4x1 + 2x2≤ 24 (4.1c)
x2 ≤ 6 (4.1d)
1) Se deben transformar las desigualdades de las restricciones como se hizo en (4.2):
8x1 + 8x2 + h1= 64
4x1 + 2x2 + h2 = 24 x2+ h3 = 6 (4.2b)
(4.2c)
(4.2d)
Pero la fo también debe modificarse ya que en el método matricial todas las variables deben estar del mismo lado e igualadas al término independiente; entonces (4.1a)
se convierte en:
U – 150x1 – 200x2 = 0
(4.2a)
Hay que señalar que sólo en esta ecuación aparece la variable U y que las variables
de holgura no aparecen de manera explícita ya que representan el sobrante de recursos,
y éstos no afectan a la utilidad; por lo tanto es equivalente a:
U – 150x1 – 200x2 + 0 h1 + 0 h2 + 0 h3 = 0
(4.2a’)
2) Construcción de la tabla inicial. La tabla inicial tiene una columna por cada una
de las variables, una columna para los términos independientes y se agrega una columna especial que se utilizará para un cálculo auxiliar. Tiene una fila especial para la fo y
a continuación una fila por restricción, en este caso tres restricciones. Se vacían en la
tabla los coeficientes de las ecuaciones (4.2).
130
Método simplex
Cuadro 4.2
Tabla inicial del método Simplex
U
x1
x2
1
-150
-200
8
8
4
2
h1
h2
h3
b
b/aij
0
1
64
1
1
24
1
6
3) Determinación de la solución inicial. La matriz correspondiente a las restricciones
tiene cinco variables y tres ecuaciones, por lo que tendrá infinitas soluciones; para obtener
alguna de las soluciones es necesario asignar un valor arbitrario a dos de ellas (5 – 3 = 2).
El método Simplex asigna valor cero a aquellas variables a las que correspondan vectores
columna diferentes de un vector unitario: en este caso x1 = x2 = 0, por lo tanto de la primera restricción se obtiene h1 = 64, de la segunda, h2 = 24, y h3 = 6 de la tercera restricción. De la fila correspondiente a la fo se obtiene U = 0, que coincide con la solución
inicial obtenida analíticamente:
Xo = (x1, x2, h1, h2, h3) = (0, 0, 64, 24, 6)
Uo = 0
4) ¿Se puede mejorar esta solución? Para determinar si es mejorable la solución se
analizan los coeficientes de la fo. La ecuación (4.1a) indica que se quiere maximizar U,
y dado que la utilidad marginal o contribución unitaria de x1 es 150 y la de x2 es 200, se
escoge la mayor (si hay empates, cualquiera de ellas), en este caso es x2. Se dice que esta
es la variable entrante, cuyo valor actual es cero, y pasará a tomar el mayor valor positivo
posible cumpliendo todas las restricciones para con esto incrementar el valor de U.
En la tabla del Simplex, si se trata de maximizar habrá que escoger la variable que
tenga el coeficiente más negativo ya que al convertir la ecuación (4.1a) en la (4.2a) se
invierten los signos de los coeficientes de las variables originales.1
Como en este caso sí hay una variable que actualmente no está en la solución (vale
cero) con un coeficiente en la fo que permita aumentar el valor de ésta, se puede mejorar la solución y se debe calcular una nueva solución. Pero el método introduce una
variable a la solución y quita otra, por lo que es necesario determinar cuál es la variable
que sale. El criterio es ver cuál es el recurso o restricción que se agota primero. Para esto
se divide el término independiente de cada restricción por el coeficiente de la columna
1 Si
se trata de minimizar se debe escoger el coeficiente positivo de mayor valor.
131
Programación lineal
correspondiente a la variable entrante: por cada unidad que aumente x2 , se necesitan 8
horas del recurso 1; 2 unidades del recurso 2, y 1 unidad del recurso 3. El cociente entre la disponibilidad del recurso y este requerimiento se anota en la columna auxiliar;
el menor de estos cocientes determina cuál es la variable saliente. En este caso el recurso 1 permite producir 8 unidades, con el recurso 2 se podrían producir 12, pero la
demanda es solamente de 6, por lo que sólo se puede producir esta cantidad (véase el
cuadro 4.3).2
Una vez definida la variable entrante (columna) y la saliente (fila), se utiliza como
pivote el elemento intersección, al que se debe hacer igual a 1; y con las operaciones de
renglón utilizadas en el método de Gauss con pivote, se transforma la matriz como se
muestra en la parte inferior del cuadro:
i) Para hacer 1 el pivote, se divide el renglón de la variable saliente por el coeficiente
pivote; en este caso se divide el tercer renglón entre a32 . Como el elemento a32 = 1,
la fila queda idéntica.
ii)Se deben transformar en 0 los elementos de la columna correspondiente a la variable entrante, en este caso a12 y a22 así como el coeficiente de la fo c2. Para hacerlo
se debe utilizar el renglón pivote:
(renglón i = renglón i – β renglón pivote)
Cuadro 4.3
Tabla de la primera iteración
x1
x2
-150
-200
8
8
4
2
h1
h2
h3
b
b/aij
0
1
1
1
1
64
8
24
12
6
6
-150
0
0
0
200
1 200.00
8
0
1
0
-8
16
4
0
0
1
-2
12
1
0
0
1
6
Una vez concluida la iteración se debe analizar cuál es la nueva solución. Nuevamente se observa el sistema de restricciones de 3 x 5, para obtener una solución se debe
2 La
columna de U se suprime por simplicidad ya que esa variable no afecta las otras filas.
132
Método simplex
dar un valor arbitrario a dos variables. El método indica asignar el valor cero a aquellas
variables cuyos vectores columna no sean un vector unitario; por lo tanto, si x1 = h3 = 0,
la solución del sistema es x2 = 6, h1 = 16, h2 = 12, que coincide con la solución obtenida en el apartado anterior:
x1 = (x1, x2, h1, h2, h3) = (0, 6, 16, 12, 0)
U1 = 1 200
En este momento hay que regresar al punto 4), ¿se puede mejorar esta solución?
Observando el renglón de la fo se encuentra que aún hay un coeficiente negativo, por
tanto sí se puede mejorar la utilidad, por lo que debemos repetir el proceso.
a) Determinar la variable entrante: x1.
b) Determinar la variable saliente: mín (16 / 8, 12 / 4, 6 / 0) = (2, 3, -) = 2, entonces
variable saliente h1 . Aquí no se pudo realizar el tercer cociente pues se trataba de una
división entre cero; no se toman en cuenta las variables a las que correspondan divisiones entre cero o cocientes negativos.
c) El pivote debe estar en la posición (1, 1), por lo que se divide el primer renglón
entre 8 y luego se utiliza este renglón para hacer cero los demás elementos de la
columna 1.
d) Se lee la solución obtenida en la nueva tabla en la que escogiendo h1 = 0 y h3 = 0 se
obtienen x1 = 2, x2 = 6 y h2 = 4, con una utilidad de 1 500, que corresponde con la
obtenida en la sección anterior (cuadro 4.4).
x2 = (x1, x2, h1, h2, h3) = (2, 6, 0, 4, 0) U2 = 1 500
Cuadro 4.4
Tabla de la segunda iteración
-150
0
0
0
200
1 200.00
8
0
1
0
-8
16
4
0
0
1
-2
12
1
0
0
1
6
0
0
18.77
0
50
1 500.00
1
0
1/8
0
-1
2
0
0
-1 / 2
0
1
133
1
2
4
0
1
6
Programación lineal
e) regresar al punto 4: ¿se puede mejorar esta solución? Observando la fila de la fo de
la segunda iteración, se encuentra que ya no hay un coeficiente negativo, por tanto
no se puede mejorar la utilidad; esta es la solución óptima.
Cuadro 4.5. Tabla completa del Simplex
x1
x2
h1
-150
-200
8
8
4
2
h2
h3
b
0
1
64
1
1
24
1
6
-150
0
0
0
200
1 200
8
0
1
0
-8
16
4
0
0
1
-2
12
1
0
0
1
6
0
0
18.77
0
50
1 500
1
0
1/8
0
-1
2
0
0
-1 / 2
1
2
4
0
1
0
0
1
6
En el cuadro 4.5 se presentan todas las iteraciones. Se observa que al terminar la
segunda iteración no queda ningún coeficiente negativo en el renglón correspondiente
a la fo, por lo que ésta es la solución óptima. En la solución h1 = 0, por lo tanto, se
utilizarán todas las horas disponibles: h3 = 0, lo que indica que se cubrirá exactamente
la demanda del artículo b; se deben producir 2 unidades del artículo a y 6 del artículo
b, y sobran 4 unidades de materia prima, con lo que se obtiene una utilidad de 1 500.
x2 = (x1, x2, h1, h2, h3) = (2, 6, 0, 4, 0)
U2 = 1 500
La adaptación del método Simplex a problemas no estándar
Restricciones “igual que” y “mayor o igual que”
En las secciones anteriores se analizó el caso estándar en el que se trata de maximizar un
objetivo, sujeto a restricciones de menor o igual. En esta sección se mostrarán las mo134
Método simplex
dificaciones necesarias para llegar a la tabla inicial del Simplex cuando las restricciones
son “mayor o igual que” e “igual que”.
Cuando se trata de una desigualdad de la forma,
2x + 4y ≥ 20
para poder escribirla como una igualdad, la ecuación quedará así:
2x + 4y – h = 20
Pero esto no es suficiente para poder utilizar el método Simplex. Cuando se tiene
una desigualdad ≥, se introduce una variable de holgura con coeficiente negativo y por
lo tanto no generará el vector unitario correspondiente; para solucionar esto se agrega
otra variable llamada variable artificial, que no tiene un sentido físico y por lo tanto es
necesario que no aparezca en la solución final. La ecuación anterior queda así:
2x + 4y – h + A = 20
Esto nos indica que una restricción del tipo mayor o igual genera dos variables auxiliares, una de holgura o excedencia, en este caso, y una variable artificial.
Cuando se trata de restricciones de igualdad, a pesar de que no se debería modificar
la ecuación, como el método Simplex necesita que la matriz agrandada tenga una matriz unitaria, se necesita agregar una variable artificial:
3x – 2y = 12 → 3x – 2y + A = 12
En el caso de la igualdad, es muy claro que en la solución final A debe ser igual a
cero, lo mismo debe ocurrir en el caso de mayor o igual. Para poder anular las variables
artificiales, es necesario incluirlas en la fo. Mientras las variables de holgura no afectan
a la fo pues se trata de sobrantes de recursos, ya sea horas hombre o materias primas
o de excedentes, las variables artificiales no tienen un significado físico, y para garantizar que éstas desaparezcan, el método Simplex les asigna un valor contrario al objetivo,
que puede interpretarse como una multa.
Para entender el proceso se resolverá el siguiente problema:
Máx z = 30x + 70y
s.a.
20x + 15y ≤ 300
10x + 4y ≥ 100
x, y ≥ 0
135
Programación lineal
La primera restricción se transforma en:
20x + 15y + h1 = 300
donde h1 es el sobrante de las 300 unidades del recurso y se mide en las mismas unidades.
La segunda restricción es una desigualdad de ≥, por lo tanto la igualdad queda así:
10x + 4y – h2 + A2 = 100
(Se utilizó A2 aunque no exista A1 solamente para indicar que corresponde a la segunda restricción, pero puede ponérsele cualquier nombre.)
La fo quiere maximizar:
z = 30x + 70y
Para que la variable artificial no aparezca en la solución del problema (A = 0), se
introduce en la fo con un coeficiente tal que se oponga al objetivo de maximizar:
z = 30x + 70y – MA2
M es el valor de la multa que se pagará por cada unidad que valga A. (Lo que se dirá
a continuación corresponde al método de la gran M aunque hay otros como el método
de la doble fase.) Para poder introducirlo en la tabla del Simplex, primero debe rescribirse la fo:
z – 30x – 70y + MA2 = 0
El cuadro 4.6 muestra la resolución de este problema. Pero hay una diferencia en el
cuadro inicial; en este caso, cuando hay variables artificiales, la fila de la fo aparece dos
veces porque es necesario volver a calcularlo previamente. Si se observan las filas de las
restricciones, se trata de un sistema de dos ecuaciones con cinco incógnitas, por lo que,
para encontrar una solución, se le debe dar valor arbitrario a tres variables. Se puede
observar que la columna 3 y 5 (h1 y A2, respectivamente) corresponden a vectores unitarios que conforman la matriz identidad de 2 x 2, y son las que inicialmente deben ser
distintas de cero. Pero si las variables h1 = A2 ≠ 0 son la solución básica inicial, es necesario que los coeficientes de estas variables en la fo sean cero. Por eso es necesario
modificar la fo restándole M veces la segunda restricción. El resultado es el que se
muestra en la segunda fila. En este momento se puede empezar con el método tal como
se utilizó anteriormente.
136
Método simplex
La solución inicial es Xo = (x, y, h1, h2, A2) = (0, 0, 300, 0, 100)
Uo = – 100M
En este caso como A = 100 la utilidad inicial es negativa igual a 100 multas. El valor
de M se considera mucho más grande que los otros coeficientes de la fo.
El siguiente paso es elegir la variable entrante entre las que tengan coeficiente negativo en la fo; entonces entra x ya que -30 – 10 M < -70 – 4 M (M >> 30, 70) y la
variable saliente es la correspondiente a la segunda restricción ya que 10 < 15, entonces
será la variable A2.
Cuadro 4.6. Tabla del Simplex del problema
z
1
x
y
-30
-70
-10M -30
h1
h2
A2
b
b/aij
0
0
M
0
-4M -70
0
M
0
-100M
20
15
1
0
0
300
15
10
4
0
-1
1
100
10
0
-58
0
-3
M+3
300.00
0
7
1
2
-2
100
14.29
1
0.4
0
-0.1
0.1
10
25
0
0
8.29
12.86
M -12.85
528.00
0
1
0.14
0.29
-0.28
14.29
1
0
-0.01
-0.21
0.21
4.29
La solución después de realizar una iteración es:
x1 = (x, y, h1, h2, A2) = (10, 0, 100, 0, 0)
U1 = 300
La solución no es óptima porque aún queda un coeficiente negativo en la fo; la
variable y entra, y sale h1 por ser el recurso que se acaba antes.
La solución después de realizar la segunda iteración es:
x2 = (x, y, h1, h2, A2) = (4.28, 14.29, 0, 0, 0)
U1 = 528
Y se trata de la solución óptima porque no quedan coeficientes negativos en la fo,
por lo tanto no se puede mejorar.
137
Programación lineal
Caso de minimización
Por último hay que analizar el caso en que se quiera minimizar, por ejemplo, los costos
o el tiempo. Se tiene una función como esta:
Mín z = 3x – 2y +5w
Por cada unidad que aumente x, el valor de z aumentará tres; por cada unidad que
aumente y, el valor de z disminuirá en dos unidades, y por cada unidad que aumente
w, el valor de z se incrementará en cinco unidades. Es claro que la variable que conviene aumentar es y, pues hace disminuir la fo, lo que coincide con el objetivo de minimizar. Cuando se reescribe la ecuación para introducirla en la tabla del Simplex, la
ecuación queda así:
z – 3x + 2y – 5w = 0
Para escoger cuál es la variable de entrada, se debe escoger la que más convenga; en
este caso, como se invirtieron los signos, habrá que elegir de entre las variables que tengan coeficiente positivo en el renglón de la fo, la que tenga el mayor coeficiente.
Si en un problema de minimización hay restricciones de igualdad o de “mayor que”,
aparecerán las variables artificiales, y como ya se vio éstas deben afectar a la fo en sentido negativo; debe ser una penalización. Como se trata de minimizar, las variables artificiales aparecerán en la fo como:
Mín z = 3x – 2y + 5w + MA1 + MA2
y en la función modificada:
z – 3x + 2y – 5w – MA1 – MA2 = 0
El resto del procedimiento es exactamente el mismo que para el caso de maximización.
El procedimiento se muestra en el siguiente ejemplo:
Mín z = x – 2y
s.a.
x+y>2
y < 3
x, y > 0
138
Método simplex
Después de modificar las ecuaciones, queda así:
Mín z = x – 2 y + MA
x + y – h1 + A = 2
y + h2 = 3
Cuadro 4.7
z
x
y
h1
1
-1
2
-1 + M
2+M
-M
1
1
h2
A
-M
0
0
0
2M
-1
0
1
2
1
0
1
0
3
-3
0
2
0
-2
-4
1
1
-1
0
1
2
-1
0
1
1
-1
1
-1
0
0
-2
0
-6
0
1
0
1
0
3
-1
0
1
1
-1
1
Del cuadro 4.7 se observa que la solución óptima es:
z = -6,
(x, y, h1, h2) = (0, 3, 1, 0)
Casos especiales: empates, problemas inconsistentes
Hay que agregar unas palabras para considerar los casos especiales como empate en las
variables de entrada o de salida, problemas con soluciones múltiples, degeneramiento
y problemas sin solución.
El método Simplex utiliza un criterio de mejorabilidad para determinar cuál es la variable entrante comparando los coeficientes en la fo; en algunos casos puede haber dos
coeficientes iguales; en estos casos se debe escoger arbitrariamente cualquiera de ellos.
Lo mismo puede ocurrir con la variable de salida, puede ser que simultáneamente
se acaben dos recursos. También se escogerá como variable de salida cualquiera de ellas.
Lo importante aquí es que el problema se vuelve degenerado, esto es, alguna de las variables básicas es igual a cero. En estos casos se puede llegar al ciclamiento de la solu-
139
Programación lineal
ción, y el Simplex queda como atrapado en una serie de vértices y no puede converger
a la solución óptima. Este problema ocurre muy raramente y en modelos grandes. El
hecho de llegar a una solución degenerada no implica que no se pueda encontrar la
solución óptima, pero el problema es que la información que se obtiene con el análisis
de sensibilidad a veces no es aceptable.
Se había visto con el método gráfico que en ciertos casos la fo puede ser paralela a
uno de los lados de la solución factible, y entonces la función se optimiza en ambos
vértices y en todos los puntos intermedios. En el Simplex se llega a un punto en que la
solución alterna entre dos puntos con igual valor en la función objetivo.
Lecturas complementarias
Arreola y Arreola (2003), especialmente los capítulos 7 y 9. Budnick (2007), las secciones 11.2 y 11.3. Hillier (2003), el capítulo 4.
Problemas de la unidad 4
Para cada uno de los siguientes problemas agregue las variables de holgura, excedencia
y las variables artificiales; construya la tabla inicial del Simplex cuando sea posible.
Problema 4.1
3x – 2y + 5z ≤ 1 200
5x – 2y – 3z ≥ 0
Problema 4.2
120 M – 100 N – R ≥ 1/100
20 M + R = 2/7
N ≤ 30
140
Método simplex
Problema 4.3
Máx 10x1 + 25x2 + 30x3 + 40x4 + x5
s.a.
5x1 – 3x3≤ 30
x1≥ 5
x1≤ 30
x2 + 3x3 – 3x5 ≥ 50
x3 + x4 + x5= 18
x 1, x 2, x 3, x 4, x 5 ≥ 0
¿Cuántas ecuaciones y cuántas incógnitas tiene este problema?, ¿cuántas variables deben igualarse a cero en la solución básica inicial?
Para cada uno de los siguientes problemas plantee el sistema de ecuaciones modificado, construya el cuadro y obtenga la solución del problema. En cada iteración señale
cuál es la variable entrante y la saliente, y cuál es la solución alcanzada.
Problema 4.4
Máx 10x + 20y
s.a.
2x + y ≤ 16
x + y ≤ 10
x, y ≥ 0
Problema 4.5
Máx z = 6xa + 8xb + 10xc
s.a.
xa + 2.5xb ≤ 1 200
2xa + 3xb + 4xc ≤ 2 600
xa, xb, xc ≥ 0
141
Programación lineal
Problema 4.6
Máx z = 25xa + 25xb
s.a.
xa + xb ≤ 12
2xa + 0.5xb ≤ 12
xa≤ 5
xb ≤ 10
xa, xb ≥ 0
Problema 4.7.
Máx 16x + 25y
s.a.
2x + 4y ≤ 40
x + 2y ≤ 30
x, y ≥ 0
Problema 4.8
Máx z = 10xa + 3xb + 4xc
s.a.
8xa + 2xb + 3xc ≤ 400
4xa + 3xb≤ 200
xc ≤ 40
xa, xb, xc ≥ 0
Problema 4.9
Máx 2 x – 3 y + 4 z
s.a.
x + 2y ≥ 6
2x + z ≤ 12
y≥ 5
z≤ 1
x, y, z ≥ 0
142
Método simplex
Respuesta a los problemas de la unidad 4
Problema 4.1.
3x – 2y + 5z + h1 = 1 200
5x – 2y – 3z – h2 + A = 0
Problema 4.2.
120 M – 100 N – R – h1 + A1= 0.01
20 M
+ R + A2= 2/7
N+ h3 = 30
Problema 4.3. Cinco ecuaciones (restricciones) y doce variables, por lo tanto, siete variables deben igualarse a cero.
Problema 4.4.
(x, y, h1, h2) = (6, 4, 0, 0), z = 140
Problema 4.5.
(xa, xb, xc, h1, h2) = (1 200, 0, 50, 0, 0), z = 7700
Problema 4.6.
(xa, xb, xc, h1, h2, h3, h4) = (2, 10, 0, 3, 3, 0), z = 300 o
(xa, xb, xc, h1, h2, h3, h4) = (4, 8, 0, 0, 1, 2), z = 300
Problema 4.7.
(x, y, h1, h2) = segmento (0, 12) a (12, 6), z = 96
Problema 4.8.
(xa, xb, xc, h1, h2) = (0, 66.6, 88.88, 0, 0), z = 55.55
Problema 4.9.
(x, y, z) = (0, 5, 1), mínimo -11
143
Descargar