Algoritmo símplex símplex En optimización matemática, matemática , el término algoritmo Símplex habitualmente se refiere a un conjunto de métodos muy usados para resolver problemas de programación lineal, lineal , en los cuales se busca el máximo de una función lineal sobre lineal sobre un conjunto de variables que satisfaga un conjunto de inecuaciones lineales. lineales . El algoritmo Símplex primal fue fue desarrollado por el matemático norteamericano eorge !antzig en !antzig en "#$%, y procede examinando vértices adyacentes del poliedro poliedro de de soluciones. &n algoritmo '(mplex es un algoritmo de pivote. pivote . &n método llamado de manera similar, pero no relacionado al anterior, es el método )elder* +ead "#-/ +ead "#-/ o método de descenso o ascenso/ s(mplex0 un método numérico que numérico que busca un m(nimo o máximo/ local de una función cualquiera examinando en cada paso los vértices de un simplex simplex.. El algoritmo del método '(mplex fue elegido como uno de los "1 algoritmos más importantes del s.22 '34+ )e5s, 6olume 77, )umber $/.
Formulación Matemática del problema 8onsiderar un problema de programación lineal, maximizar sujeto a El algoritmo '(mplex requiere que el problema de programación lineal esté en la forma aumentada de la programación lineal. El problema puede ser escrito como sigue, en forma de matriz9 +aximizar
en9
donde x son las variables desde la forma estándar , xs son las variables de holgura introducidas en el proceso de aumentación, c contiene los coeficientes de optimización, describe el sistema de ecuaciones contra(das, y Z es es la variable a ser maximizada. El sistema es t(picamente no determinado, desde que el n:mero de variables excede el n:mero de ecuaciones. ;a diferencia entre el n:mero de variables y el n:mero de ecuaciones nos da los grados de libertad asociados asociados con el problema. 8ualquier solución, óptima o no, incluirá un n:mero de variables de valor arbitrario. El algoritmo '(mplex usa cero como valor arbitrario, y el n:mero de variables con valor cero es igual a los grados de libertad.
6alores diferentes de cero son llamados variables básicas, y valores de cero son llamadas variables no básicas en el algoritmo s(mplex. Esta forma simplifica encontrar la solución factible básica inicial, dado que todas las variables de la forma estándar pueden ser elegidas para ser no básicas cero/, mientras que todas las nuevas variables introducidas en la forma aumentada, son básicas diferentes de cero/, dado que su valor puede ser calculado trivialmente problema aumentada en diagonal es su lado derecho/
para ellas, dado que la matriz
En cada una de las desigualdades que se plantean en el modelo matemático de programación lineal, se plantean desigualdades de <, =, >, ? o @0 estas desigualdades se convierten en igualdades completando con variables de holgura si se trata de menor o igual que, o menor que0 en el caso de que sea mayor o igual que o mayor que, se completa con variables de excedente, estas con signo negativo ya que como su nombre lo indica, es una cantidad que esta de excedente y hay que quitar para convertirla en igualdad0 en caso se maneje el @, se manejan las variables artificiales.
Conceptos básicos Forma estándar
Es la igualación de las restricciones del modelo planteado, as( como el aumento de variables de holgura, o bien la resta de variables de exceso .
Forma canónica
En el método '(mplex es de bastante utilidad la forma canónica, especialmente para explorar la relación de dualidad.
&n problema de Arogramación ;ineal se encuentra en la forma canónica si se cumplen las siguientes condiciones9 Aara el caso de la forma canónica de maximización9 * ;a función objetivo debe ser de maximización. * ;as restricciones son del tipo >. * ;as variables de decisión son mayores o iguales a cero. Aara el caso de la forma canónica de la dieta9 * ;a función objetivo es minimizada. * ;as restricciones son de tipo ?. * ;as variables de decisión son mayores o iguales a cero.
Modelo Ampliado (forma estándar) 8uando se introduce en cada restricción una variable artificial que no contenga una variable de holgura.
Problema.- Una Carpintería elabora dos tipos de bates para baseball, uno de peso ligero usado en los juegos de ligas de menores y otro de peso mediano que se vende a los equipos de las ligas mayores. El bate de menores requiere 1 minuto de torneado en tanto que el bate de mayores requiere 2 minutos de torneado, puesto que se le debe dar la forma y el peso especial. Por tanto, el bate de menores requiere minutos de m!quina lijadora y el otro requiere 2 minutos. El laqueado es "ec"o a mano y entonces solo puede producirse #$$ medianos a la semana. Cada semana se dispone 1$$$ minutos de torno y 1%$$ minutos de m!quina lijadora. &ay tanta demanda que garanti'a las utilidades de ()o .$$ por cada bate ligero y de ()o#.$$ por el otro. *etermine el programa de producci+n +ptima que le d la m!-ima utilidad a la Carpintería. Identifcación de variables
B
1/ 0 de bates ligeros producidos por semana
B
2/0 de bates medianos producidos por semana
B
/ utilidad por semana
Formulación Matemática del Problema (forma canónica)
B
+ax z@ 7x" C $xD
B
'ujeto a
B
2" C DxD > "111 tiempo disponible torno/
B
7x" C DxD > "11 tiempo disponible lijadora/
B
2D > $11
B
2" ? 1, xD? 1
Forma estándar del Problema
B
+ax z@ 7x" C $xD C 1x7 C 1x$ C 1x
B
'ujeto a
B
2" C DxD C x7 @ "111
B
7x" C DxD C x$ @ "11
B
2D C x @ $11
xj ? 1, j@",D,7,$,
Variables de entrada
Estas suelen encontrarse en un criterio que se conoce como F8ondición de optimalidadG, en un modelo, ya sea de maximización o minimización, y se refiere a la variable no básica en el renglón FzG con el coeficiente más negativo, si se trata de una maximización, o el coeficiente más positivo, si se trata de una minimización, la cual, en el la tabla de solución anterior, a excepción de la primer tabla, esta variable era una variable básica. HVariables de salida Esta variable es un punto extremo que se encuentra en un criterio conocido como F8ondición de factibilidadG, en un modelo, ya sea de optimización o minimización, y se refiere a la variable básica asociada con la m(nima razón no negativa con el coeficiente más negativo, si se trata de una maximización, o el coeficiente más positivo, si se trata de una minimización, la cual, en el la tabla de solución siguiente, pasará a ser variable no básica.
Variables básicas
Variables no básicas
Variable de entrada
Variable de salida
4
27, 2$, 2, 2-
2", 2D
2"
2-
I
27, 2$, 2, 2"
2-, 2D
2D
27
8
2D, 2$, 2, 2"
2-, 27
2-
2$
!
2D, 2-, 2, 2"
2$, 27
27
2"
E
2D, 2-, 2, 27
2$, 2"
2$
2D
Variable degenerada
&na variable degenerada es una variable básica que vale 1. ráficamente esto puede ocurrir cuando más de dos rectas se intersequen en el mismo punto.
Base
8onjunto de variables básicas. En el ejemplo anterior, la base es J27, 2$, 2, 2-K Variable no restringida Variable artificial
'e usa una variable artificial cuando las restricciones son = y ≥ y sucede cuando el origen no se encuentra dentro de la región factible, tratando de llevar el modelo a otra dimensión en la cual el origen si exista en la región. Es aquella que puede tomar toda clase de valores positivos, cero y negativos puede escribirse como la diferencia de dos variables no*negativas. Función obeti!o"
!efine la efectividad del modelo como función de las variables de decisión.
Solución óptima
Ejemplo gráfico de la solución óptima 'iempre está asociada a un punto extremo de la región factible y satisface todas las restricciones si se eval:a en ellas as( como es el punto que en el caso de maximización hace que el valor de z sea el máximo más grande/ y el caso de minimización sea el m(nimo más pequeLo/.
Solución óptima múltiple
Existen problemas lineales que no tienen una solución óptima :nica, sino que al contrario, tienen un n:mero infinito de soluciones.Aara detectar una solución m:ltiple en la tabla óptima, se deberá tener al menos una variable con su Mj*8j@1 no básica.
Algoritmo del método Simplex Este proceso que se repite una y otra vez, siempre inicia en un punto extremo de la región factible que normalmente es el origen, en cada iteración se mue!e a otro punto extremo ad#acente $asta llegar a la solución óptima% ;os pasos del +étodo 'implex son los siguientes9 ".
&tilizando la forma estándar, determinar una solución básica factible inicial igualando a las n*m variables igual a cero el origen/.
D.
'eleccionar la variable de entrada de las variables no básicas que al incrementar su valor pueda mejorar el valor en la función objetivo. 8uando no exista esta situación, la solución actual es la óptima0 si no, ir al siguiente paso.
7.
'eleccionar la variable de salida de las variables básicas actuales.
$.
!eterminar la nueva solución al hacer la variable de entrada básica y la variable de salida no básica, ir al paso D actualizar/.
Ejemplo 1.- Utilizando el algoritmo Simplex resolver el problema: B
+ax z@ 7x" C $xD C 1x7 C 1x$ C 1x
B
'ujeto a
B
2" C DxD C x7 @ "111
B
7x" C DxD C x$ @ "11
B
2D C x @ $11
2j ? 1, j@",D,7,$,
x1
x
x!
x"
x#
x!
1
1
%
%
1%%%
x"
!
%
1
%
1&%%
'%%
x#
%
1
%
%
1
"%%
"%%
C-(:
!
"
%
%%
%
b
$ #%%
%
ingresa x sale x#) x!
1
%
1
%
-
%%
x"
!
%
%
1
-
1%%%
!!!.!!!
x
%
1
%
%
1
"%%
*n+
C-(: !
%
%
%
-"
ingresa x1 sale x") x1
1
%
1
%
-
%%
-1%%
x"
%
%
-!
1
"
"%%
1%%
x
%
1
%
%
1
"%%
"%%
C-(: %
%
-!
%
ingresa x# sale x".- U! , %%
x1
1.%
%
-%.#
x# %
%
-%.#
%.#
1.
1%%.%
x %
1.%
%.#
-%.#
%
!%%.%
C-(:
%
%.#
% -1.#%%% -%.#%%%
%
"%%.%
%
Solci/n /ptima: 0, "%% !%%23 debe +abricar "%% bates ligeros 4 !%% bates medianos obteniendo na tilidad máxima de U , "%%
Ejemplo 8onsiderando el problema de programación lineal9 +inimiza la siguiente función
'ujeta a
'e aLaden las variables de holgura s y t , que se representan en la tabla canónica
donde las columnas y - representan las variables básicas s y t y la correspondiente solución básica posible es
;as columnas D, 7 y $ pueden ser seleccionadas como columnas pivotes, para este ejemplo se seleccionó la columna $. ;os valores de x resultantes de la elección de las filas D y 7 como filas pivotes son "1N" @ "1 y "N7 @ respectivamente. !e estos el m(nimo es , por lo que la fila 7 ser(a la fila pivote. Operando los pivotes se produce
4hora columnas $ y representan las variables básicas z y s y la solución óptima correspondiente es
Aara el paso siguiente, no hay entradas positivas en la fila objetivo y de hecho
por lo que el valor m(nimo de Z es PD1.
&emplo '% esol!er mediante el m*todo simplex el siguiente problema" +aximizar
Z = f(x,y = !x " #y
sujeto a9
#x " y $ %& #x " !y $ '# !x " y $ #'
x?1,y?1 'e consideran las siguientes fases9 ". eali+ar un cambio de !ariables # normali+ar el signo de los t*rminos independientes% 'e realiza un cambio en la nomenclatura de las variables. Estableciéndose la correspondencia siguiente9
x pasa a ser 2"
y pasa a ser 2D
8omo los términos independientes de todas las restricciones son positivos no es necesario hacer nada. En caso contrario habr(a que multiplicar por Q*"Q en ambos lados
de la inecuación teniendo en cuenta que esta operación también afecta al tipo de restricción/. D ,ormali+ar las restricciones% 'e convierten las inecuaciones en ecuaciones olgura, exceso y artificiales seg:n la tabla siguiente9
agregando variables
-ipo de desigualdad
-ipo de !ariable .ue aparece
?
* exceso C artificial
@
C artificial
>
C holgura
de
En este caso se introduce una variable de holgura 27, 2$ y 2/ en cada una de las restricciones del tipo >, para convertirlas en igualdades, resultando el sistema de ecuaciones lineales9 /012 3 1/ 3 1' 4 25 /012 3 '01/ 3 16 4 6/ '012 3 1/ 3 17 4 /6
7 8gualar la función obeti!o a cero% 9 '012 1/ :01' :016 :017 4 :
$ &scribir la tabla inicial del m*todo Simplex% ;a tabla inicial del método 'implex está compuesta por todos los coeficientes de las variables de decisión del problema original y las de holgura, exceso y artificiales agregadas en el paso D en las columnas, siendo A1 el término independiente y el resto de variables Ai coinciden con 2i/, y las restricciones en las filas/. ;a columna 8b contiene los coeficientes de las variables que se encuentran en la base. ;a primera fila está formada por los coeficientes de la función objetivo, mientras que la :ltima fila contiene el valor la función objetivo y los costes reducidos Mj * 8j.
;a :ltima fila se calcula como sigue9 Mj @ R8biSAj/ para i @ "..m, donde si j @ 1, A1 @ bi y 81 @ 1, y en caso contrario Aj @ aij. 4unque al tratarse de la primera tabla del método 'implex y ser todos los 8b nulos se puede simplificar el cálculo, y por esta vez disponer Mj @ *8j. -abla 8 % 8teración n; 2
7
D
1
1
1
Base
P:
P2
P/
P'
P6
P7
A7
1
"
D
"
"
1
1
A$
1
$D
D
7
1
"
1
A
1
D$
'
"
1
1
"
9
1
*7
*D
1
1
1
'i existiesen dos o más coeficientes iguales que cumplan la condición anterior caso de empate/, entonces se optará por aquella variable que sea básica. ;a columna de la variable que entra en la base se llama columna pivote en color !erde/. Variable saliente de la base%
&na vez obtenida la variable que entra en la base, se procede a determina cual será la variable que sale de la misma. ;a decisión se toma en base a un sencillo cálculo9 dividir cada término independiente columna A1/ entre el elemento correspondiente de la columna pivote, siempre que ambos elementos sean estrictamente positivos mayores que cero/. 'e escoge la fila cuyo resultado haya resultado m(nimo. 'i hubiera alg:n elemento menor o igual a cero no se realiza dicho cociente. En caso de que todos los elementos de la columna pivote fueran de ésta condición se habr(a cumplido la condición de parada y el problema tendr(a una solución no acotada ver teor(a del método 'implex /. En este ejemplo9 "ND T@#U , $DND T@D"U y D$N7 T@U El término de la columna pivote que en la división anterior dio lugar al menor cociente positivo indica la fila de la variable de holgura que sale de la base. En este caso resulta ser 2 A/, de coeficiente 7. Esta fila se llama fila pivote en color !erde/. 'i al calcular los cocientes, dos o más resultados cumplen la condición para elegir el elemento saliente de la base caso de empate/, se escoge aquella que no sea variable básica siempre que sea es posible/. ;a intersección de la fila pivote y columna pivote marca el elemento pivote, en este caso el 7. % Actuali+ar la tabla% ;os nuevos coeficientes de la tabla se calculan de la siguiente manera9
En la fila del elemento pivote cada nuevo elemento se calcula como9 )uevo *lemento +ila ivote = -nterior *lemento +ila ivote . ivote
En el resto de las filas cada elemento se calcula9
)uevo *lemento +ila = -nterior *lemento +ila / (-nterior *lemento +ila en 0olumna ivote 1 )uevo *lemento +ila ivote
8on esto se normaliza el elemento pivote y su valor pasa a ser ", mientras que el resto de elementos de la columna pivote se anulan análogo al método de auss* Vordan/. 'e muestran a continuación los cálculos para la fila A$9 4nterior fila A$ 4nterior Elemento Wila en 8olumna Aivote )ueva fila pivote )ueva fila A$
$D
D
7
1
"
1
*
*
*
*
*
*
D
D
D
D
D
D
x
x
x
x
x
x
"
"N7
1
1
"N
@
@
@
@
@
@
D-
1
%N7
1
"
*DN
;a tabla correspondiente a esta segunda iteración es9 -abla 88 % 8teración n; /
7
D
1
1
1
Base
P:
P2
P/
P'
P6
P7
A7
1
D
1
2='
"
1
*DN7
A$
1
D-
1
%N7
1
"
*DN7
A"
7
"
"N7
1
1
"N7
9
D$
1
*"
1
1
"
4l comprobar la condición de parada se observa que no se cumple ya que entre los elementos de la :ltima fila hay uno negativo, *". 'e contin:a iterando nuevamente los pasos - y %.
-.". ;a variable que entra en la base es 2D AD/, por ser la variable que corresponde a la columna donde se encuentra el coeficiente *". -.D. Aara calcular la variable que sale, se dividen los términos de la columna A1 entre los términos correspondientes de la nueva columna pivote9 D N "N7 T@-U , D- N %N7 T@%N%U y N "N7 T@D$U. 8omo el menor cociente positivo es -, la variable que sale de la base es 27 A7/.
-.7. El elemento pivote es "N7.
%. 4ctualizando nuevamente los valores de la tabla se obtiene9 -abla 888 % 8teración n; '
7
D
1
1
Base
P:
P2
P/
P'
P6
AD
D
-
1
"
7
1
A$
1
"D
1
1
*%
"
A"
7
-
"
1
*"
1
9
71
1
1
7
1
# &na nueva comprobación de la condición de parada revela que entre los elementos de la fila indicadora vuelve a haber uno negativo, *". 'ignifica que aun no se ha llegado a la solución óptima y hay que seguir iterando pasos - y %/9
-.". ;a variable que entra en la base es 2 A/, por ser la variable que corresponde al coeficiente *". -.D. 'e escoge la variable que sale calculando el cociente entre los términos de la columna de términos independientes y los términos correspondientes de la nueva columna pivote9 -N*D/ T@*7U , "DN$ T@7U, y -N" T@-U. En esta ocación es 2$ A$/.
-.7. El elemento pivote es $.
%. !espués de actualizar todas las filas, se obtiene la tabla siguiente9 -abla 8V % 8teración n; 6
7
D
1
1
-abla 8V % 8teración n; 6
Base
P:
P2
P/
P'
P6
AD
D
2/
1
"
*"ND
"ND
A
1
7
1
1
*%N$
"N$
A"
7
'
"
1
7N$
*"N$
''
1
1
N$
"N$
9
"1 Fin del algoritmo% 'e observa que en la :ltima fila todos los coeficientes son positivos cumpliéndose, por tanto la condición de parada. ;a solución óptima viene dada por el valor de M en la columna de los términos independientes A1/, en este ejemplo9 77. En la misma columna se puede ver el punto donde se alcanza, observando las filas correspondientes a las variables de decisión que han entrado en la base9 2" @ 7 y 2D @ "D. !eshaciendo el cambio de variables se obtiene x @ 7 e y @ "D.