Programación Lineal. El Método Sí · PDF fileProgramación Lineal....

133
1/133 Universidad Politécnica de Madrid–Escuela Técnica Superior de Ingenieros Industriales Grado en Ingeniería en Tecnologías Industriales. Curso 2015-2016-3º Matemáticas de Especialidad–Ingeniería Eléctrica Programación Lineal. El Método Símplex José Luis de la Fuente O’Connor [email protected] [email protected] Clase_simplex_2016.pdf

Transcript of Programación Lineal. El Método Sí · PDF fileProgramación Lineal....

Page 1: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

1/133Universidad Politécnica de Madrid–Escuela Técnica Superior de Ingenieros IndustrialesGrado en Ingeniería en Tecnologías Industriales. Curso 2015-2016-3º

Matemáticas de Especialidad–Ingeniería Eléctrica

Programación Lineal. El Método Símplex

José Luis de la Fuente O’[email protected]@upm.es

Clase_simplex_2016.pdf

Page 2: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

2/133Índice

� Introducción

� Condiciones de punto óptimo

� Mejora de una solución básica factible

� El algoritmo Símplex

� Degeneración y ciclado

� Solución básica factible inicial

� Análisis de sensibilidad

� El método Símplex para variables acotadas

� Implementaciones comerciales del método Símplex

� El método Símplex en forma de “tableau”� Otras variantes y mejoras del Símplex

� Complejidad computacional del método Símplex

Page 3: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

3/133

Introducción

� Para encontrar el óptimo del problema de PL

min. cTx

s. a AxD b

x� 0;

se podrían estudiar, uno a uno, los vértices o puntos extremos del politopo

P D fx 2 Rn W Ax D b; x � 0; A 2 Rm�n; b 2 Rng

y determinar aquél en el que la función objetivo se hace mínima.

� Para m y n grandes, considerar todos es prohibitivo pues son nŠmŠ.n�m/Š

:

Page 4: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

4/133� En 1947 George B. Dantzig culminó la investigación de un importanteequipo de ingenieros, matemáticos y economistas formulando el MétodoSímplex.

George B. Dantzig, EE.UU. 1914-2005.

� Sigue una estrategia de búsqueda del punto óptimo que no estudia todos losvértices de un problema. Sus claves:

� Encontrar un vértice desde el que comenzar: solución básica factible delpolitopo P ;

� Desplazarse desde ese punto extremo a otro, a lo largo de alguna arista deP , mejorando con ello la función objetivo.

� Repetir el paso anterior cuantas veces sea necesario hasta que se alcance lasolución óptima o la arista escogida lleve a �1.

Page 5: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

5/133

Condiciones de punto óptimo

Teorema Condiciones de Karush-Kuhn-Tucker x 2 Rn es el óptimo del pro-grama lineal

min. cTx

s. a Ax D bx � 0;

si y sólo si existen vectores � 2 Rm y � 2 Rn tales que

(i) Ax D b; x � 0; (factibilidad del problema primal)(ii) c D AT�C �; � � 0; (factibilidad del problema dual)(iii) �ixi D 0; i D 1; : : : ; n: (holguras complementarias o gap de dualidad)

� La condición i es la de factibilidad del problema, tal como está planteado.

Page 6: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

6/133

� La Función de Lagrange del problema es

L.x;�;�/ D cTx��T .Ax � b/��Tx:

Joseph-Louis Lagrange, Turin,1736- París, 1813.

Su vector gradiente con respecto a x es c �AT� � �.Igualado éste a 0 es la segunda condición, ii.

� El vector � es el de los multiplicadores de Lagrange de las condicionesAx D b.

� El vector �, el de los multiplicadores de Lagrange de las condiciones x � 0.

� La condición iii se conoce como la de complementariedad de holguras, uholguras complementarias.

Exige que sean cero aquellos multiplicadores de las condiciones de nonegatividad que no estén activas (no sean cero) en el óptimo; o, loque es equivalente, que sea cero el denominado gap de dualidad: ladiferencia entre el valor de la función objetivo del primal y del dual.

Page 7: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

7/133� Todas estas condiciones fueron formuladas por Harold William Kuhn, EE.UU.,1925-2014, y Albert William Tucker, Canadá, 1905-1995, en 1951, con el fin deextender la teoría de Lagrange a la caracterización de los puntos óptimos deproblemas de programación lineal y no lineal sometidos a restricciones.

� Posteriormente se descubrió que en 1939 William Karush, EE.UU., 1917-1997,ya había trabajado sobre estas condiciones, por lo que desde ese momento se lespasó a denominar condiciones de Karush-Kuhn-Tucker, o KKT.

264 Richard W. Cottle

William Karush, circa 1987 Fritz John at NYU, circa 1987

Harold Kuhn and Albert Tucker, 1980at von Neumann Prize presentation

(Printed with permission of Larry Karush; NYU; Harold Kuhn and Alan Tucker.)

having come to the United States from Bialystok which was then under Russiancontrol. (It is now in Poland.) As a child, William was known as “Willie;”his older brother Fred was called “Freddie” [39]. They eventually had twoyounger siblings, Jack and Esther. Of the four, only Esther is still living. Willieoutgrew this diminutive name and became known as “Will.” He attendedpublic schools in Chicago, graduating from Murray F. Tuley High School inJune, 1934. From that point on, his Bachelor of Science, Master of Science,and Doctor of Philosophy were all earned at the University of Chicago in 1938,1939, and 1942, respectively [18].

Based on an entry in the 17th Edition of American Men & Women of Science[1, p. 215], the table below gives a summary of the positions held by WilliamKarush. The table does not make explicit the fact that during World WarII, Karush worked on the Manhattan Project which culminated in the atomic

Documenta Mathematica · Extra Volume ISMP (2012) 255–269

� Las condiciones KKT generalizan la de la existencia de un mínimo de unafunción sin restricciones; es decir, que rxf .x�/ D 0.

Page 8: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

8/133

� Si A se ordena de la forma A D ŒB N �, y en concordancia cT D ŒcTB cTN �,

como en el óptimo la condición �ixi D 0, i D 1; : : : ; n, implica que �Bi D 0,i D 1; : : : ; m (pues las variables básicas son positivas), la condición ii de KKTse puede reescribir así:�

cBcN

�D

�BT

N T

��C

�0

�N

�; �N � 0:

� Esto equivale a que cB D BT� y que

cN D �N CNT�; �N � 0:

Es decir, a quecN �N

TB�T cB � 0

Este vector se denomina de costes reducidos: tienen que ser no negativos en elpunto óptimo.

Page 9: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

9/133

� Vectores y condiciones clave en PL:

xB DB�1b

�N D cN �NTB�T cB � 0

�DB�T cB

1. A �N , vector de multiplicadores de Lagrange de las condiciones activas dex � 0, se le denomina de costes reducidos.

2. Que se cumpla que todos los costes reducidos sean positivos, o cero, es lacondición de haber alcanzado el óptimo.

3. A �, vector de multiplicadores de Lagrange de las condiciones Ax D b, sele denomina de multiplicadores símplex.

Page 10: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

10/133Interpretación económica de los multiplicadoressímplex

� Supongamos que x� Dhx�B

0

iD

hB�1b

0

ies una solución óptima no degenerada

de min. cTxs. a AxD b

x � 0:

� Al suponer x�B > 0, un cambio suficientemente pequeño 4b en b no debemodificar la base óptima B; la solución óptima sería

Ox�D

�Ox�

B

0

�D

�B�1.bC4b/

0

�:

y el cambio en la función objetivo 4z D cTBB�14b D ��T4b, donde �� D B�T cBes el óptimo del vector de multiplicadores símplex.

��i indica cómo cambia la función objetivo al incrementar una unidad la cantidad disponibledel recurso bi de la condición i -ésima.Su valor es un precio o valor marginal del recurso i -ésimo en el óptimo: el máximoque se puede estar dispuesto a pagar por incrementar una unidad su disponibilidad.

Page 11: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

11/133Índice

� Introducción

� Condiciones de punto óptimo

� Mejora de una solución básica factible

� El algoritmo Símplex

� Degeneración y ciclado

� Solución básica factible inicial

� Análisis de sensibilidad

� El método Símplex para variables acotadas

� Implementaciones comerciales del método Símplex

� El método Símplex en forma de “tableau”� Otras variantes y mejoras del Símplex

� Complejidad computacional del método Símplex

Page 12: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

12/133

Mejorar una solución básica factible

� Supongamos que:

� Partimos de una solución básica factible: punto extremo o vértice delproblema.

� La matriz A 2 Rm�n .m < n/ es de rango completo y la región factible noes el conjunto vacío.

� En la solución básica factible los m primeros coeficientes del vector x sonlos que forman la base: todos positivos.

Page 13: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

13/133

� Ordenando la matriz A D ŒB N � y, de la misma manera, cT D ŒcTB cTN �, setiene que

BxB CNxN D b:

Despejando xB ,xB D B

�1b �B�1NxN

� El valor de la función objetivo para este vector es

z D ŒcTB ; cTN �

�xBxN

�D cTBB

�1bC .cTN � cTBB

�1N›costes reducidos

/xN :

� Para que se pueda mejorar la función objetivo desde el punto extremo quedefine ese vector, debe haber costes reducidos negativos.

Page 14: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

14/133� En el punto que define ese xB confluyen n �m aristas; está en la intersecciónen Rn de los m hiperplanos correspondientes a las condiciones Ax D b y losn �m correspondientes a xN D 0 (no degenerada).

� Para mejorar la función objetivo, de esas posibles n �m aristas habrá queescoger una que consiga hacer decrecer la función objetivo desplazándose porella hasta otro vértice.

� Esa arista la definirá un coste reducido, de los de las variables no en la base,

Ncj D cj � cTBB

�1aj ; j > m

que sea negativo, pues hará decrecer la función objetivo aumentando el valor dela variable no básica correspondiente. Si por ejemplo Ncj < 0, la función objetivodecrece al ritmo que marca el incremento desde cero de la variable no básica xj .

� Como a coste reducido más negativo, decrecimiento más rápido, se escoge parala base aquella variable no básica que tenga el coste reducido más negativo.

Page 15: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

15/133

� ¡OJO! Si la solución es básica degenerada, pues el valor de alguna variablebásica es cero, puede ocurrir que en alguna dirección cualquier desplazamiento� haga que

x.�/ D x C �y

viole la factibilidad del problema.Esto que ocurre pues en una solución básica degenerada confluyen más de mhiperplanos. � ���� ��

��d1 es una dirección de movimiento factible; d2 no.

Page 16: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

16/133

� Ejemplo Consideremos el programa lineal:

min. x1C x2

s. a x1C 2x2� 4x2� 1

x1; x2� 0:

� Añadamos las variables de holgura x3 y x4 para transformarlo en forma estándar:

min. x1C x2

s. a x1C 2x2C x3 D 4

x2 C x4D 1

x1; x2; x3; x4 � 0:

I A D Œa1; a2; a3; a4� D

�1 2 1 0

0 1 0 1

�:

Page 17: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

17/133� Consideremos B D Œa1; a2�:

xB D

�x1x2

�D B�1b D

�1 2

0 1

��1 �4

1

�D

�1�2

0 1

� �4

1

�D

�2

1

�I

xN D

�x3x4

�D

�0

0

�:

� La solución básica factible que estamos considerando se puede ver en la figura.

����

���� ���� ��

���� � � ��

Page 18: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

18/133� Los costes reducidos de las variables no básicas son

Nc3D c3 � cTBB

�1a3 D 0 � Œ1; 1�

�1�2

0 1

� �1

0

�D �1 y

Nc4D c4 � cTBB

�1a4 D 0 � Œ1; 1�

�1�2

0 1

� �0

1

�D 1:

� La función objetivo decrece siguiendo la dirección (d2 en la figura) quedetermina el coste reducido Nc3: la de incrementar la variable no básica x3.

� Las variables básicas se deben mover de la forma

xB D B�1b � �B�1a3I

es decir, en la dirección opuesta a (o una cantidad negativa en)

B�1a3 D

�1 �2

0 1

� �1

0

�D

�1

0

�que es la dirección d2 de la figura anterior.

Page 19: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

19/133

� Elegida la variable no básica, xq, de coste reducido más negativo, que entraráen la base, ¿cuánto moverse en la dirección de la arista que ha definido esecoste reducido?

� La respuesta es hasta que en ese movimiento una variable básica llegue a sulímite cero, y bloquee el posible desplazamiento en la dirección escogida: sehabrá llegado a otro vértice.

� Siguiendo las ideas que manejamos ya en optimización, la dirección demovimiento del método es la opuesta a

y D B�1aq

y en ella se avanza una cantidad � , amplitud de paso.

Page 20: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

20/133� De las expresiones de x.�/ y xB.�/ se deduce que se mantendrá la factibilidaddel problema, es decir,

x.�/ � 0;

si y sólo sixB � �y � 0 y � � 0:

� Si las variables básicas se modifican según

xB D B�1b � �y;

o, desarrollando, 26664xB1xB2:::

xBm

37775 D26664Ob1Ob2:::Obm

37775 � �26664y1y2:::

ym

37775 ;donde Ob D B�1b, ese valor máximo de movimiento negativo, vendrá dado por

� D Nxq D mKınnObiyiW yi > 0; 1 � i � m

oD

xBpyp:

Page 21: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

21/133

� El valor de la variable no básica xq se verá incrementado después de este pasodesde cero a Nxq, pasando a ser básica en detrimento de la variable xBp quepasará a ser no básica y por tanto cero.

� Para completar una iteración del método Símplex resta reemplazar el vector appor el aq en la base, es decir, hacer

NB D B C .aq � ap/eTp :

quedandoNB D ŒaB1; aB2; : : : ; aBp�1; aq; aBpC1; : : : ; aBm�:

Page 22: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

22/133

El Algoritmo Símplex

� El algoritmo Símplex para resolver

min. cTx

s. a AxD b

x � 0

parte de una solución básica factible xB correspondiente aB D Œaj1; aj2; : : : ; ajm�.

� B D fj1; : : : ; jmg es el conjunto de índices de las variables básicas; xji designala variable básica i -ésima; N el de las variables no básicas.

Page 23: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

23/133

Paso 1 – Asignación de precios. Comprobación de óptimo.(a) Calcular los multiplicadores símplex resolviendo el sistema BT� D cB .(b) Calcular los costes reducidos de las variables no básicas, Ncj D cj � �T aj , para todo j 2 N .(c) Comprobar que se ha llegado al óptimo: si Ncj � 0 para todo j 2 N , PARAR: la solución es óptima.

Paso 2 – Determinar columna de pivotación.(a) Determinar la variable no básica xq que debe entrar en la base (encontrar una dirección de descenso):escoger q 2 N tal que Ncq D mKınj2N f Ncj < 0g:(b) Resolver

By D aq :

Si y � 0, PARAR; hay un rayo factible de soluciones a lo largo del cual cTx ! �1. Si no, seguir.

Paso 3 – Determinar fila de pivotación. Análisis de Ratios. Determinar la variable básica xjp que sale de labase: calcular

� Dxjp

ypD mKın1�i�m

�xji

yiW yi > 0

�:

Paso 4 – Pivotación. Adaptar la solución, la matriz B y las estructuras de datos. Hacer:

xq � D xjp=yp

xji xji

� �yi ; 1 � i � m

B B C .aq � ajp /eTp

B B [ fqgnfjpgN N [ fjpgnfqg; e ir al paso 1.

Algoritmo Símplex revisado

Page 24: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

24/133

function [sol fobj la c_r iters B N Binv] = ProgLineal_3(c,A,b,eps1,bfs)% Resuelve min. c’x sujeto a Ax=b, x >= 0 (problema estándar)% B_i, vector de columnas de A en la base = B; bfs=base factible% N_i, vector de columnas de A fuera de la base = N

disp(’It. Sale B Entra B Cos. red. fobj Inf. dual’);[m n]=size(A); iters=0; c=c(:); B_i=bfs; N_i=setdiff(1:n,B_i);[L U]=lu(A(:,B_i)); % LU de la base inicialwhile 1==1 % Itera Símplex

xb =U\(L\b); % xb=B^-1*b vector solución actualla =L’\(U’\c(B_i)); % Multiplicadores símplexc_r=zeros(n,1);c_r(N_i)=c(N_i)-A(:,N_i)’*la; % Costes reducidos: c_r=c_N-c_B*B^-1*N[cj j]=min(c_r); % Cos. redu. más negativo; entra j. Bland implícitaif cj>-eps1 % si todos cj >= 0, óptimo;

sol=zeros(n,1); sol(B_i)=xb; % dar soluciónfobj=c(B_i)’*xb;N = N_i; B=B_i;if nargout==8, Binv=U\(L\eye(m)); endreturn % Salir; FIN algoritmo

endy=U\(L\A(:,j)); % y = B^-1 * a[j]zz=find(y>eps1)’; % Sale de base: mín d(i)/y(i), y(i)>0;if isempty(zz), error(’Problema no acotado.’); end % Direc. de no acotado[yy ii]=min((xb(zz)./y(zz))); % Sale ii=zz(ii); % Regla de Bland implícita: primera ik=B_i(i); B_i(i)=j; N_i(j==N_i)=k; % Adaptación datos[L U]=lu(A(:,B_i)); iters=iters+1; Di=norm(c_r(c_r<0));fprintf(’%3d%6d%7d %20.6f %20.6f %20.6f\n’,iters,k,j,cj,c(B_i)’*xb,Di); % Info. itera

endend

Page 25: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

25/133� Ejemplo 1 Resolvamos el problema de programación lineal:

min.�x1 � 3x2s. a 2x1C 3x2� 6

�x1C x2� 1

x1; x2� 0:

� Introduciendo variables de holgura, la base queda:

min.�x1 � 3x2

s. a 2x1C 3x2C x3 D 6

�x1C x2C x4D 1

x1; x2; x3; x4 � 0:

I B D Œa3; a4� D

�1 0

0 1

�y N D Œa1; a2� D

�2 3

�1 1

�:

� La solución inicial, xB D B�1b, xN D 0, es pues24x1x2x3x4

35 D 240061

35 I y la función objativo z D cTBB�1b D Œ0; 0�

h61

iD 0:

Page 26: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

26/133Iteración 1. Paso 1

� Calculemos los multiplicadores símplex resolviendo BT� D cB :

� D

�1 0

0 1

��1 �0

0

�D

�0

0

�:

� Los costes reducidos de las variables no básicas son

Nc1D c1 � �Ta1 D �1 � Œ0; 0�

�2

�1

�D �1 y

Nc2D c2 � �Ta2 D �3 � Œ0; 0�

�3

1

�D �3:

� Todavía no se ha llegado al óptimo pues los costes reducidos de las variables nobásicas son negativos.

Page 27: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

27/133Iteración 1. Paso 2

� Elijamos la variable no básica x2 como aquella que ha de entrar en la base puestiene el coste reducido más negativo.

� Resolvamos el sistema By D a2:

y D

�1 0

0 1

��1 �3

1

�D

�3

1

�:

Iteración 1. Paso 3

� La variable básica a salir de la base se obtendrá de calcular

� D mKın�xB1y1;xB2y2

�D mKın

�6

3;1

1

�D 1:

Page 28: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

28/133

� Es decir, saldrá xB2 D x4. Esto se puede deducir también analizando la expresión�xB1xB2

�D

�x3x4

�D B�1b � �y D

�6

1

�� �

�3

1

�;

comprobándose que x4 es la primera variable que llega a cero al incrementar x2.

Iteración 1. Paso 4

� Readaptemos la solución y las estructuras correspondientes:

x2 � D 1

x3 x3 � �y1 D 6 � 1 � 3 D 3

x4 x4 � �y2 D 1 � 1 � 1 D 0:

Page 29: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

29/133

La solución queda, por tanto, 26664x1x2x3x4

37775 D266640

1

3

0

37775con

B D Œa3; a2� D

�1 3

0 1

�y N D Œa1; a4� D

�2 0

�1 1

�:

� La nueva función objetivo es

z D cTBB�1b D Œ0; �3�

�1 �3

0 1

� �6

1

�D �3:

Page 30: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

30/133

Iteración 2. Paso 1

� Calculemos los nuevos multiplicadores símplex resolviendo BT� D cB :

� D

�1 0

3 1

��1 �0

�3

�D

�1 0

�3 1

� �0

�3

�D

�0

�3

�:

� Los costes reducidos de las variables no básicas son

Nc1 D c1 � �Ta1 D �1 � Œ0; �3�

�2

�1

�D �4 y

Nc4 D c4 � �Ta4 D 0 � Œ0; �3�

�0

1

�D 3:

Como todavía existe un coste reducido negativo, no se ha llegado al óptimo.

Page 31: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

31/133Iteración 2. Paso 2

� Elegimos la única variable no básica capaz de mejorar la función objetivo, x1,como aquella que ha de entrar en la base.

� Resolvamos el sistema By D a1:

y D

�1 3

0 1

��1 �2

�1

�D

�1 �3

0 1

� �2

�1

�D

�5

�1

�:

Iteración 2. Paso 3

� La variable básica a salir de la base se obtendrá de calcular

� D mKın�xB1y1

�D mKın

�3

5

�D3

5:

Es decir, saldrá xB1 D x3.

Page 32: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

32/133� Analizando el porqué de esto mediante la expresión�

xB1xB2

�D

�x3x2

�D B�1b � �y D

�3

1

�� �

�5

�1

�;

se comprueba que x3 es la primera variable que llega a cero al incrementar x1.

Iteración 2. Paso 4

� Readaptemos la solución y las estructuras correspondientes:

x1 � D 35

x2 x2 � �y2 D 1 �35� .�1/ D 8

5

x3 x3 � �y1 D 3 �35� 5 D 0:

La solución queda: 26664x1x2x3x4

37775 D266643=5

8=5

0

0

37775

Page 33: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

33/133con

B D Œa1; a2� D

�2 3

�1 1

�y N D Œa3; a4� D

�1 0

0 1

�:

� La nueva función objetivo es

z D cTBB�1bD Œ�1; �3�

�2 3

�1 1

��1 �6

1

�D

D Œ�1; �3�

"15�35

15

25

#�6

1

�D �

27

5:

Iteración 3. Paso 1

� Calculemos los nuevos multiplicadores símplex resolviendo BT� D cB :

� D

�2 �1

3 1

��1 ��1

3

�D

"1515

�3525

#��1

�3

�D

��4=5

�3=5

�:

Page 34: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

34/133

� Los costes reducidos de las variables no básicas son

Nc3 D c3 � �Ta3 D 0 � Œ�4=5;�3=5�

�1

0

�D

45

y

Nc4 D c4 � �Ta4 D 0 � Œ�4=5;�3=5�

�0

1

�D

35:

Todos los costes reducidos son positivos por lo que se ha llegado al únicoóptimo del problema.

� La solución óptima es 26664x1x2x3x4

37775 D266643=5

8=5

0

0

37775 :La función objetivo

z D cTBB�1b D �Tb D Œ�4=5;�3=5�

�6

1

�D �

27

5:

Page 35: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

35/133

� Las soluciones básicas factibles que se han ido obteniendo en el proceso seindican en la figura.

���� �� ���

������� � Con el programa ProgLineal_3 de Matlab que hemos presentado antes sería:

min.�x1 � 3x2

s. a 2x1C 3x2C x3 D 6

�x1C x2C x4D 1

x1; x2; x3; x4 � 0:

>> cEje1=[-1 -3 0 0];>> AEje1=[2 3 1 0;-1 1 0 1];>> bEje1=[6;1];>> bfsEje1=[3 4];>> [sol fobj pi cr iters B N]=ProgLineal_3(cEje1,AEje1,bEje1,...sqrt(eps),bfsEje1)

Page 36: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

36/133

� Se obtiene:

>> [sol fobj pi cr iters B N]=ProgLineal_3(cEje1,AEje1,bEje1,...sqrt(eps),bfsEje1)It. Sale B Entra B Cos. red. fobj Inf. dual1 4 2 -3.000000 -3.000000 3.1622782 3 1 -4.000000 -6.000000 4.000000

sol =0.6000000000000001.600000000000000

00

fobj =-5.400000000000000

pi =-0.800000000000000-0.600000000000000

cr =00

0.8000000000000000.600000000000000

iters =2

B =1 2

N =3 4

Page 37: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

37/133� Con la rutina linprog de Matlab, la sesión sería la1 siguiente.

>> cEje1=[-1 -3 0 0];>> AEje1=[2 3 1 0;-1 1 0 1];>> bEje1=[6;1];>> lb=[0 0 0 0];>> options = optimset(’LargeScale’, ’off’, ’Simplex’, ’on’, ’Display’, ’Iter’);>> [x fval exitflag output]=linprog(cEje1,[],[],AEje1,bEje1,lb,[],[],options)Phase 1: Compute initial basic feasible point.

Iter Infeasibility0 11 -0

Phase 2: Minimize using simplex.Iter Objective Dual Infeasibility

f’*x A’*y+z-w-f0 -5.4 0

Optimization terminated.x =

0.60001.6000

00

fval =-5.4000

exitflag =1

output =iterations: 0algorithm: ’medium scale: simplex’

cgiterations: []message: ’Optimization terminated.’

1Obsérvese que con Matlab no sería necesario suministrar el problema en forma estándar pues admite dos conjuntos decondiciones: de igualdad y desigualdad. Si, en cambio, hay que explicitar que las cotas inferiores de las variables son cero.

Page 38: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

38/133� Ejemplo 2 Solución no acotada. Hay que resolver:

min.�x1 � 3x2s. a x1 � 2x2� 4

�x1C x2� 3

x1; x2� 0:

� Con las variables de holgura, la base inicial queda:

min.�x1 � 3x2

s. a x1 � 2x2C x3 D 4

�x1C x2C x4D 3

x1; x2; x3; x4 � 0:

I B D Œa3; a4� D

�1 0

0 1

�y N D Œa1; a2� D

�1�2

�1 1

�:

� La solución inicial, xB D B�1b, xN D 0, es24x1x2x3x4

35 D 240043

35 ; de función objetivo z D cTBB�1b D Œ0; 0�

h43

iD 0:

Page 39: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

39/133� La región factible de este problema es la que se ilustra en la figura.

���� ������� � ��

���

Iteración 1. Paso 1

� Calculemos los multiplicadores símplex resolviendo BT� D cB :

� D

�1 0

0 1

��1 �0

0

�D

�0

0

�:

Page 40: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

40/133� Los costes reducidos de las variables no básicas son

Nc1 D c1 � �Ta1 D �1 � Œ0; 0�

�1

�1

�D �1 y

Nc2 D c2 � �Ta2 D �3 � Œ0; 0�

��2

1

�D �3:

Al ser negativos los costes reducidos, esta solución no es óptima.

Iteración 1. Paso 2

� Elegimos la variable no básica x2 como aquella que ha de entrar en la base puessu coste reducido es el más negativo.

� Resolvamos el sistema By D a2:

y D

�1 0

0 1

��1 ��2

1

�D

��2

1

�:

Page 41: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

41/133

Iteración 1. Paso 3

� La variable básica a salir de la base se obtendrá de calcular

� D mKın�xB2y2

�D mKın

�3

1

�D 3:

Es decir saldrá xB2 D x4.Como venimos haciendo, esto también de puede comprobar a partir de laexpresión �

xB1xB2

�D

�x3x4

�D B�1b � �y D

�4

3

�� �

��2

1

�;

constatándose que, efectivamente, x4 es la primera variable que llega a cero alincrementar x2.

Page 42: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

42/133

Iteración 1. Paso 4

� Readaptemos la solución y las estructuras correspondientes:

x2 � D 3

x3 x3 � �y1 D 4 � 3 � .�2/ D 10

x4 x4 � �y2 D 3 � 3 � 1 D 0:

� La solución queda: 26664x1x2x3x4

37775 D266640

3

10

0

37775con

B D Œa3; a2� D

�1 �2

0 1

�y N D Œa1; a4� D

�1 0

�1 1

�:

Page 43: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

43/133

Iteración 2. Paso 1

� Calculemos los multiplicadores símplex resolviendo BT� D cB :

� D

�1 0

�2 1

��1 �0

�3

�D

�1 0

2 1

� �0

�3

�D

�0

�3

�:

Los costes reducidos de las variables no básicas son

Nc1 D c1 � �Ta1 D �1 � Œ0; �3�

�1

�1

�D �4 y

Nc4 D c4 � �Ta4 D 0 � Œ0; �3�

�0

1

�D 3:

Como existe un coste reducido negativo, todavía no se ha alcanzado el óptimo.

Page 44: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

44/133

Iteración 2. Paso 2

� Elegimos la única variable no básica posible, x1, como aquella que ha de entraren la base.

� Resolvamos el sistema By D a1:

y D

�1 �2

0 1

��1 �1

�1

�D

�1 2

0 1

� �1

�1

�D

��1

�1

�:

� Como todos los yi ; i D 1; 2 son negativos, hay un rayo de soluciones factibles alo largo del cual cTx !1. La solución es pues no acotada. u

Page 45: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

45/133� Ejemplo 3 Soluciones óptimas alternativas. Hay que resolver:

min.�2x1 � 4x2s. a x1C 2x2� 4

�x1C x2� 1

x1; x2� 0:

� Introduzcamos las variables de holgura x3 y x4. El problema queda:

min.�2x1 � 4x2s. a x1C 2x2C x3 D 4

�x1C x2C x4D 1

x1; x2; x3; x4 � 0:

� Escojamos como base de partida

B D Œa1; a4� D

�1 0

�1 1

�y N D Œa2; a3� D

�2 1

1 0

�:

Page 46: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

46/133

� La solución inicial, xB D B�1b, xN D 0, es pues�x1x4

�D

�1 0

�1 0

��1 �4

1

�D

�1 0

1 1

� �4

1

�D

�4

5

�y �

x2x3

�D

�0

0

�:

� La función objetivo para esta solución es

z D cTBB�1b D Œ�2; 0�

�4

5

�D �8:

Page 47: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

47/133

Iteración 1. Paso 1

� Calculemos los multiplicadores símplex resolviendo BT� D cB :

� D

�1 �1

0 1

��1 ��2

0

�D

�1 1

0 1

� ��2

0

�D

��2

0

�:

� Los costes reducidos de las variables no básicas son

Nc2 D c2 � �Ta2 D �4 � Œ�2; 0�

�2

1

�D 0 y

Nc3 D c3 � �Ta3 D 0 � Œ�2; 0�

�1

0

�D 2:

� Hemos llegado a un punto óptimo.

Page 48: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

48/133

� El óptimo, sin embargo, no es único.

���� �������� �������������������� ��� �!"#$"# ��% � Si incrementamos x2, manteniendo x3 D 0, las variables x1 y x4 se modificande la siguiente manera:h

x1x4

iD B�1b �B�1a2x2 D

h1 01 1

i h41

i�

h1 01 1

i h21

ix2 D

h45

i�

h23

ix2:

Page 49: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

49/133

� Para cualquier x2 < 53, la solución26664

x1x2x3x4

37775 D266644 � 2x2x20

5 � 3x2

37775es óptima con función objetivo z D �8.

Page 50: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

50/133

Degeneración y ciclado

� Aunque hasta ahora se ha supuesto que la solución básica x de un programalineal no es “degenerada”, el que lo sea no causa grandes dificultades prácticasen el proceso de obtención del óptimo.

� Lo peor que puede ocurrir es que. en el Paso 3, la variable que salga de la base,xjp , tenga un valor cero, lo que dará lugar a una iteración con desplazamiento� D 0: x no cambiará.

� Aunque x no cambie, si lo hará la base.

� Como x, y por tanto cTx, no cambian, es teóricamente posible que elalgoritmo entre en un ciclo infinito a través de una sucesión de bases, y suscorrespondientes soluciones, volviendo a esta base.

Page 51: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

51/133� El problema

min. �34x4C 20x5 �

12x6C 6x7

El óptimo es x D Œ3=4; 0; 0; 1; 0; 1; 0�T y su funciónobjetivo óptima -5/4.

s. a x1 C14x4 � 8x5 � x6C 9x7D 0

x2 C12x4 � 12x5 �

12x6C 3x7D 0

x3 C x6 D 1

x1; x2; x3; x4; x5; x6; x7 � 0:

expuesto por E.M.L. Beale en 1955, muestra cómo el método Símplex puedequedar atrapado en un ciclo infinito, si se escoge como variable a entrar en labase aquella que posee el coste reducido más negativo y para salir de ella una delas que proporcionan el mínimo � .

� Si se comienza a resolver partiendo de la base B D Œa1; a2; a3�, siguiendo elmétodo Símplex ordinario se obtienen las bases Œa4; a2; a3�, Œa4; a5; a3�,Œa6; a5; a3�, Œa6; a7; a3�, Œa1; a7; a3� y otra vez Œa1; a2; a3�.

� Si se vuelve a utilizar la misma secuencia de variables a entrar y salir de la base,el método entra en un ciclo infinito.

Page 52: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

52/133

La regla de Bland (1977) Robert G. Bland, EE.UU. 1948-.

� Mediante esta regla –la más habitualmente usada– se elige como variable queha de entrar en la base, de entre las de coste reducido negativo, aquella conmenor índice.

� Para salir de la base, si el ratio es igual en varias, también aquella con menoríndice.

Page 53: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

53/133Índice

� Introducción

� Condiciones de punto óptimo

� Mejora de una solución básica factible

� El algoritmo Símplex

� Degeneración y ciclado

� Solución básica factible inicial

� Análisis de sensibilidad

� El método Símplex para variables acotadas

� Implementaciones comerciales del método Símplex

� El método Símplex en forma de “tableau”� Otras variantes y mejoras del Símplex

� Complejidad computacional del método Símplex

Page 54: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

54/133

Solución básica factible inicial

� ¿Cómo obtener una eficazmente?

� Si las condiciones del problema son de la forma Ax � b; x � 0, donde b tienetodos sus coeficientes no negativos, el problema es trivial: añadiendo lasvariables de holgura a las condiciones se tendrá que

Ax C xhD b

x; xh � 0:

� Una solución básica factible será xh D b, x D 0; la matriz básicacorrespondiente, B D I .

Page 55: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

55/133

� Normalmente no es tan sencillo. Por ejemplo, si se diesen las mismascondiciones de antes pero el vector b tuviese algún coeficiente negativo, lasolución obtenida no sería válida pues violaría la condición de no negatividad.

� Si las condiciones son de la forma Ax � b; x � 0, añadiendo el vector devariables de holgura, xh, se tendría que Ax � xh D b; x � 0; xh � 0.

� Si el vector b no tuviese todos sus coeficientes negativos o cero, difícilmentese podría determinar una base B a partir de la matriz ŒA �I �, de tal formaque xB D B�1b cumpliese la condición de no negatividad.

Page 56: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

56/133

� Ejemplo 1 Consideremos las condiciones siguientes:

x1C 2x2� 4

�x1C x2� 1

x1; x2� 0:

� Añadiendo las variables de holgura x3 y x4 las condiciones se transforman en

x1C 2x2C x3 D 4

�x1C x2C x4D 1

x1; x2; x3; x4 � 0:

Una solución inicial básica factible sería

B D Œa3; a4� D

�1 00 1

�W xB D

�x3x4

�D B�1b D

�1 00 1

� �41�D

�41

�y

xN D

�x1x2

�D

�00

�:

Page 57: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

57/133

� Ejemplo 2 Sean ahora las siguientes condiciones:

x1C x2C x3� 6

�2x1C 3x2C 3x3� 3

x2; x3� 0:

� Cuando como aqui x1 una variable no está restringida a tomar valores nonegativos, podemos sustituirla por x0i � x

00i , x

0i � 0, x

00i � 0. Si lo hacemos e

introducimos las variables de holgura x4 y x5, las condiciones quedan:

x01 � x001 C x2C x3C x4 D 6

�2x01C 2x00

1 C 3x2C 3x3 � x5D 3

x01; x00

1 ; x2; x3; x4; x5 � 0:

No es inmediato determinar una base B que nos permita obtener una solucióninicial básica factible.

Page 58: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

58/133

� Ejemplo 3 Consideremos ahora las siguientes condiciones:

x1C x2 � 2x3��3

�2x1C x2C 3x3� 7

x1; x2; x3� 0:

� Si para hacer todos los coeficientes del vector b no negativos multiplicamos laprimera condición por �1 e introducimos las variables de holgura x4 y x5, lascondiciones resultarán:

�x1 � x2C 2x3� x4 D 3

�2x1C x2C 3x3 C x5D 7

x1; x2; x3; x4; x5 � 0:

Tampoco de aquí se puede determinar de una manera sencilla una base inicialdel problema.

Page 59: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

59/133

Variables artificiales

� La forma más inmediata de determinar una solución básica factible de partidaconsiste en introducir temporalmente, además de las variables de holgura, unnuevo conjunto similar de variables artificiales.Si el problema es

min. cTx

s. a AxD b

x � 0;

donde, sin pérdida de generalidad, se supone que b � 0, se le añade un vectorde variables artificiales, xa, resultando

AxCxaD b;

con x � 0 y xa � 0.

Page 60: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

60/133� Si se quiere conseguir una solución factible del problema original habrá queforzar a que los coeficientes del vector xa sean cero. Es decir, resolver tambiéncon el método Símplex el problema

min.mXiD1

xai

s. a AxCxaD bx; xa � 0:

� Si el problema original admite una solución factible, en la solución deltransformado se tendrá que xa D 0.

� Si tal solución factible no existe, el problema transformado acabará conalgún coeficiente de xa positivo.

� El método Símplex completo, por consiguiente, consta de las dos fases que seindican en la tabla.

Page 61: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

61/133

Fase I Partiendo de la solución inicial x D 0, xa D b, resolver

min.mXiD1

xai

s. a AxC xa D bx; xa � 0:

Si xa ¤ 0, parar: el problema no tiene solución básica factible.Si xa D 0, ir a la fase II tomando como B inicial la de la última iteración deesta fase.

Fase II Partiendo de xB D B�1b y xN D 0, resolver

min. cTBxB C cTNxN

s. a BxB C NxN D b

xB ; xN � 0:

Algoritmo Símplex revisado en dos Fases

Page 62: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

62/133

� Al final de la Fase I, si la solución tiene alguna variable artificial en la base yxai D 0 (degenerada), dicha variable se puede intercambiar por una no básica–de las originales– xj , o suprimirse sin más que eliminar la condición redundantecorrespondiente. Concretamente:

� Si la variable básica xak D 0 y se cumple que eTkB�1aj ¤ 0, la variable xak

se puede reemplazar por la xj .

� Si para todo aj 2 N , eTkB�1aj D 0, el sistema Ax D b tiene una

condición redundante y se puede eliminar la fila k-ésima de la matriz Aoriginal (así como la fila y columna k-ésimas de B).

� Circunstancias de este tipo se evitan con un mecanismo de preproceso paraaligerar el problema de redundancias, incoherencias, etc.

Page 63: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

63/133

� Ejemplo Hay que resolver el siguiente problema:

min. x1 � 2x2

s. a x1C x2� 2

�x1C x2� 1

x2� 3

x1; x2� 0:

� Para empezar, introduzcamos como siempre las variables de holgura:

min. x1 � 2x2

s. a x1C x2� x3 D 2

�x1C x2 � x4 D 1

x2 C x5D 3

x1; x2; x3; x4; x5 � 0:

Page 64: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

64/133

� Como la base de partida no es de fácil obtención, introducimos las variablesartificiales y planteamos el siguiente problema dentro de la fase I:

min. x6C x7

s. a x1C x2� x3 C x6 D 2

�x1C x2 � x4 C x7D 1

x2 C x5 D 3

x1; x2; x3; x4; x5; x6; x7 � 0:

Obsérvese que en la tercera condición no es necesario introducir variableartificial alguna.

� Del problema así planteado se puede obtener inmediatamente la base de partida;ésta es

B D Œa5; a6; a7� D

�0 1 00 0 11 0 0

�y N D Œa1; a2; a3; a4� D

�1 1 �1 0�1 1 0 �10 1 0 0

�:

Page 65: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

65/133

� La solución inicial, xB D B�1b, xN D 0, es:�x5x6x7

�D

�0 1 00 0 11 0 0

��1 �213

�D

�0 0 11 0 00 1 0

� �213

�D

�321

�:

Por tanto, 26666664x1x2x3x4x5x6x7

37777775 D266666640

0

0

0

3

2

1

37777775 :

Page 66: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

66/133Fase I. Iteración 1. Paso 1

� Calculemos los multiplicadores símplex resolviendo BT� D cB :

� D

240 0 11 0 0

0 1 0

35�124011

35 D 240 1 00 0 1

1 0 0

3524011

35 D 24110

35 :� Los costes reducidos de las variables no básicas son

Nc1 D c1 � �Ta1 D 0 � Œ1; 1; 0�

24 1

�1

0

35 D 0;Nc2 D c2 � �

Ta2 D 0 � Œ1; 1; 0�

24111

35 D �2;Nc3 D c3 � �

Ta3 D 0 � Œ1; 1; 0�

24�100

35 D 1 y

Nc4 D c4 � �Ta4 D 0 � Œ1; 1; 0�

24 0

�1

0

35 D 1:

Page 67: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

67/133

� No se ha llegado todavía al óptimo pues existe un coste reducido negativo.

Fase I. Iteración 1. Paso 2

� Elegimos la única variable no básica posible, x2, como aquella que ha de entraren la base.

� Resolvemos el sistema By D a2:

y D

240 1 00 0 1

1 0 0

35�124111

35 D 240 0 11 0 0

0 1 0

3524111

35 D 24111

35 :

Page 68: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

68/133

Fase I. Iteración 1. Paso 3

� La variable básica a salir de la base se obtendrá de calcular

� D mKın�xB1y1;xB2y2;xB3y3

�D mKın

�3

1;2

1;1

1

�D 1I

es decir, saldrá xB3 D x7.O, como solemos utilizar, de evaluar la expresión xB D B�1b � �y .

� Es decir, 24xB1xB2xB3

35 D 24x5x6x7

35 D 24321

35 � � 24111

35 ;comprobándose que x7 es la primera variable que llega a cero al incrementar x2.

Page 69: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

69/133

Fase I. Iteración 1. Paso 4

� Readaptemos la solución y las estructuras de datos:

x2 � D 1

x5 x5 � �y1 D 3 � 1 � 1 D 2

x6 x6 � �y2 D 2 � 1 � 1 D 1

x7 x7 � �y3 D 1 � 1 � 1 D 0:

� La solución queda por tanto, 26666664x1x2x3x4x5x6x7

37777775 D266666640

1

0

0

2

1

0

37777775

Page 70: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

70/133

siendo

B D Œa5; a6; a2� D

240 1 10 0 1

1 0 1

35y

N D Œa1; a7; a3; a4� D

24 1 0 �1 0

�1 1 0 �1

0 0 0 0

35 :

Fase I. Iteración 2. Paso 1

� Calculemos de nuevo los multiplicadores símplex resolviendo BT� D cB :

� D

240 0 11 0 0

1 1 1

35�124010

35 D 24 0 1 0

�1 �1 1

1 0 0

3524010

35 D 24 1

�1

0

35 :

Page 71: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

71/133� Los costes reducidos de las variables no básicas son

Nc1 D c1 � �T a1 D 0 � Œ1; �1; 0�

24 1�10

35 D �2;Nc7 D c7 � �

T a7 D 1 � Œ1; �1; 0�

24010

35 D 2;Nc3 D c3 � �

T a3 D 0 � Œ1; �1; 0�

24�100

35 D 1 y

Nc4 D c4 � �T a4 D 0 � Œ1; �1; 0�

24 0�10

35 D �1:No se ha llegado todavía al óptimo; hay dos costes reducidos negativos.

Fase I. Iteración 2. Paso 2

� Elegimos la variable no básica x1 para entrar en la base pues su coste reducidoes el más negativo.

Page 72: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

72/133� Resolvemos el sistema By D a1:

y D

240 1 10 0 1

1 0 1

35�124 1

�1

0

35 D 240 �1 11 �1 0

0 1 0

3524 1

�1

0

35 D 24 1

2

�1

35 :Fase I. Iteración 2. Paso 3

� La variable básica a salir de la base se obtendrá de calcular

� D mKınnxB1y1;xB2y2

oD mKın

˚21; 12

D

12I

es decir, saldrá xB2 D x6. Esto se deduce también de24xB1xB2xB3

35 D 24x5x6x2

35 D B�1b � �y D 24211

35 � � 24 1

2

�1

35 ;constatándose que x6 es la primera variable que llega a cero al incrementar x1.

Page 73: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

73/133Fase I. Iteración 2. Paso 4

� Readaptemos la solución y las estructuras de datos correspondientes:

x1 D � D12

x5 D x5 � �y1 D 2 �12� 1 D 3

2

x6 D x6 � �y2 D 1 �12� 2 D 0

x2 D x2 � �y3 D 1 �12� .�1/ D 3

2:

� La solución queda por tanto 266664x1x2x3x4x5x6x7

377775 D2666641=23=2003=200

377775siendo

B D Œa5; a1; a2� D

240 1 10 �1 11 0 1

35 y N D Œa6; a7; a3; a4� D

241 0 �1 00 1 0 �10 0 0 0

35 :

Page 74: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

74/133

Fase I. Iteración 3. Paso 1

� Calculemos los multiplicadores símplex resolviendo BT� D cB :

� D

240 0 1

1 �1 0

1 1 1

35�124000

35 D264�12 1

212

�12�1212

1 0 0

37524000

35 D 24000

35 :� Los costes reducidos de las variables no básicas son

Nc6 D c6 � �T a6 D 1 � Œ0; 0; 0�

24100

35 D 1;Nc7 D c7 � �

T a7 D 1 � Œ0; 0; 0�

24010

35 D 1;Nc3 D c3 � �

T a3 D 0 � Œ0; 0; 0�

24�100

35 D 0; y

Nc4 D c4 � �T a4 D 0 � Œ0; 0; 0�

24 0

�1

0

35 D 0:

Page 75: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

75/133� Todos los costes reducidos son no negativos: óptimo de la fase I.

� La base de partida de la fase II es

B D Œa5; a1; a2� D

�0 1 1

0 �1 1

1 0 1

�y N D Œa3; a4� D

��1 0

0 �1

0 0

�:

Fase II. Iteración 1. Paso 1

� Calculemos los multiplicadores símplex resolviendo BT� D cB :

� D

240 0 1

1 �1 0

1 1 1

35�124 0

1

�2

35 D264�12 1

212

�12�1212

1 0 0

37524 0

1

�2

35 D 24�1=2�3=2

0

35 :Los costes reducidos de las variables no básicas son

Nc3 D c3 � �T a3 D 0 � Œ�1=2; �3=2; 0�

24�100

35 D �12; y

Nc4 D c4 � �T a4 D 0 � Œ�1=2; �3=2; 0�

24 0

�1

0

35 D �32:

Page 76: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

76/133Como Nc3 y Nc4 son negativos, no se ha llegado aún al óptimo.

Fase II. Iteración 1. Paso 2

� Elegimos la variable no básica x4 como la que entra en la base.

� Resolvamos el sistema By D a4:

y D

240 1 10 �1 11 0 1

35�124 0�10

35 D 24�12 �12 112�120

12

120

3524 0�10

35 D 24 1=21=2�1=2

35 :Fase II. Iteración 1. Paso 3

� La variable básica a salir de la base se obtendrá de calcular

� D mKın�xB1y1;xB2y2

�D mKın

(3212

;

1212

)D 1:

Page 77: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

77/133

Es decir, saldrá xB2 D x1. Si se analiza la expresión24xB1xB2xB3

35 D B�1b � �y D 24x5x1x2

35 D 243=21=23=2

35 � � 24 1=21=2�1=2

35 ;también se comprueba que, efectivamente, la primera variable que llega a ceroal incrementar x4 es x1, con � D 1.

Fase II. Iteración 1. Paso 4

� Readaptemos la solución y las estructuras de datos:

x4 � D 1

x5 x5 � �y1 D32� 1 � 1

2D 1

x1 x1 � �y2 D12� 1 � 1

2D 0

x2 x2 � �y3 D32C 1 � 1

2D 2:

Page 78: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

78/133

� La nueva solución es, por tanto, 26664x1x2x3x4x5

37775 D266640

2

0

1

1

37775con

B D Œa5; a4; a2� D

�0 0 10 �1 11 0 1

�y N D Œa3; a1� D

��1 10 �10 0

�:

Fase II. Iteración 2. Paso 1

� Calculemos los multiplicadores símplex resolviendo BT� D cB :

� D

240 0 10 �1 01 1 1

35�124 00�2

35 D 24�1 1 10 �1 01 0 0

3524 00�2

35 D 24�200

35 :

Page 79: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

79/133Los costes reducidos de las variables no básicas son

Nc3 D c3 � �Ta3 D 0 � Œ�2; 0; 0�

24�100

35 D �2; y

Nc1 D c1 � �Ta1 D 1 � Œ�2; 0; 0�

24 1

�1

0

35 D 3:Todavía no se ha llegado al óptimo.

Fase II. Iteración 2. Paso 2

� Elegimos la variable no básica x3 como la que entra en la base.

� Resolvemos el sistema By D a3:

y D

240 0 10 �1 11 0 1

35�124�100

35 D 24�1 0 11 �1 01 0 0

3524�100

35 D 24 1�1�1

35 :

Page 80: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

80/133

Fase II. Iteración 2. Paso 3

� La variable básica a salir de la base se obtendrá de calcular

� D mKın�xB1y1

�D mKın

�1

1

�D 1I

es decir, saldrá xB1 D x5. Viéndolo a partir de la expresión24xB1xB2xB3

35 D 24x5x4x2

35 D b�1b � �y D 24112

35 � � 24 1

�1

�1

35 ;se comprueba también que la primera variable que llega a cero al incrementar x3es x5.

Page 81: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

81/133

Fase II. Iteración 2. Paso 4

� Readaptemos la solución y las estructuras de datos:

x3 � D 1

x5 x5 � �y1 D 1 � 1 � 1 D 0

x4 x4 � �y2 D 1C 1 � 1 D 2

x2 x2 � �y3 D 2C 1 � 1 D 3:

La nueva solución es 26664x1x2x3x4x5

37775 D266640

3

1

2

0

37775 :

Page 82: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

82/133� Las nuevas matrices:

B D Œa3; a4; a2� D

24�1 0 1

0 �1 1

0 0 1

35 I N D Œa5; a1� D240 1

0 �1

1 0

35 :Fase II. Iteración 3. Paso 1

� Calculemos los multiplicadores; resolvamos BT� D cB :

� D

24�1 0 00 �1 01 1 1

35�124 00�2

35 D 24�1 0 00 �1 01 1 1

3524 00�2

35 D 24 00�2

35 :Los costes reducidos de las variables no básicas son

Nc5 D c5 � �T a5 D 0 � Œ0; 0; �2�

24001

35 D 2; y

Nc1 D c1 � �T a1 D 1 � Œ0; 0; �2�

24 1�10

35 D 1:

Page 83: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

83/133

� Todos los costes reducidos de las variables no básicas son positivos por lo que seha alcanzado el único óptimo del problema.

� La solución final es 26664x1x2x3x4x5

37775 D266640

3

1

2

0

37775 :� El valor óptimo de la función objetivo es cTBB

�1b D �6.

Page 84: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

84/133

� El proceso iterativo que se ha seguido se representa en la figura

x�x� ��

��������������

Page 85: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

85/133

Método de penalización o de la M grande

� Consiste en combinar en un proceso único las fases I y II del método Símplex yresolver

min.nXiD1

cixi CMmXjD1

xaj

s. a AxCxaD b

x; xa � 0:

La constante M se elige “suficientemente grande” de tal forma que esté muypenalizado que en el óptimo xa ¤ 0.

� Eventualmente, si existe solución factible del problema original, las variablesartificiales tenderán a cero en el proceso de obtención del óptimo de esteproblema.

Page 86: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

86/133

� Esta alternativa tiene dos pegas:

� La necesidad de escoger un determinado valor fijo de M que asegure que lasvariables artificiales no van a estar en la base de la solución óptima.

� Un valor excesivamente grande de M, con respecto a los coeficientes delvector c y de la matriz A, puede hacer que los errores de redondeo de loscálculos y la inestabilidad numérica del proceso lleguen a ser importantes.

� Que el número de variables del problema se incrementa notablemente.

Page 87: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

87/133� Resolvamos con esta técnica un ejemplo anterior:

min. x1 � 2x2 1000x6C 1000x7

s. a x1C x2 � x3 C x6 D 2

�x1C x2 � x4 C x7D 1

x2 C x5 D 3

x1; x2; x3; x4; x5; x6; x7 � 0:

� Con el programa ProgLineal_3 de Matlab que usamos sería:

>> cM=[1 -2 0 0 0 1000 1000];>> AM=[1 1 -1 0 0 1 0;-1 1 0 -1 0 0 1;0 1 0 0 1 0 0];>> bM=[2;1;3];>> bfsM=[5 6 7];>> [sol fobj pi cr iters B N]=ProgLineal_3(cM,AM,bM,sqrt(eps),bfsM)It. Sale B Entra B Cos. red. fobj1 7 2 -2002.000000 1998.0000002 6 1 -2001.000000 -1.0000003 1 4 -1.500000 -3.0000004 5 3 -2.000000 -4.000000

sol =0312000

fobj =-6

pi =00-2

cr =1000 1000 2 1

iters =4

B =3 4 2

N =6 7 5 1

Page 88: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

88/133Análisis de sensibilidad

� La solución óptima que obtiene el método Símplex de un problema de PL escomo una fotografía fija de una situación real que habitualmente evoluciona enel tiempo, incluso a corto o muy corto plazo.

� Con un pequeño esfuerzo, una vez obtenida la solución con el Símplex, se puedeconocer hasta qué punto ese óptimo seguirá siéndolo y qué pueden representar,en costes o beneficios, determinadas variaciones de los parámetros del problema.

� Esto es frecuente estudiarlo cuando los costes de producción de un artículodeben variar en el tiempo al fluctuar el precio de una materia prima o, engeneral, cuando los datos del problema son estimaciones más o menosimprecisas de una realidad en la que oscilan entre determinados márgenes.Estudiemos cómo afecta a la solución de un problema de PL el que varíen loscoeficientes de la función objetivo c o el vector b.

Page 89: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

89/133

Cambios en el vector de costes

� Consideremos la familia de programas, función de un vector de parámetros � ,definida por

min. Œc C ��Tx

s. a AxD bx � 0:

� La base B de la solución óptima del problema original (sin los parámetros)seguirá siéndolo mientras los costes reducidos de las variables no básicas sigansiendo no negativos; es decir, mientras que

ŒcN C �N �T� ŒcB C �B�

TB�1N � 0T :

Page 90: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

90/133

� Consideraremos los dos casos más generales: 1. Que la variable cuyo coeficientede coste varía no está en la base; 2. Que está en la base.

1. La variable cuyo coeficiente de coste varía no está en la base. Para que loscostes reducidos sigan siendo óptimos, es decir,

ŒcN C �N �T� cTBB

�1N � 0T ;

se tiene que cumplir que

cTN � cTBB

�1N C �TN D NcTN C �

TN � 0

T :

Esto obliga a que el coeficiente del vector coste sólo pueda variar haciaabajo (decrecer), en una cantidad �i igual al coste reducido de la variable ique varía. Es decir

�i � �Nci :

Hacia arriba podría variar hasta el infinito.

Page 91: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

91/133

2. La variable cuyo coeficiente de coste varía está en la base. La condición deoptimalidad para los costes reducidos es ahora

cTN � ŒcB C �B�TB�1N D NcTN � �

TBB

�1N � 0T :

El intervalo de valores Œ� i ; � i � de la posible variación en el coste de unavariable en la base será

� iDmKax�

mKax1�k�n�m

f�Nck=dk; dk > 0g ;�1

����

mKın�

mKın1�k�n�m

f�Nck=dk; dk < 0g ;1

�D � i

expresión en la que d D�B�1.i;W/N

�T,es el vector fila i -ésimo del producto

de la inversa de B por N .

Page 92: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

92/133

Cambios en el vector b

� Consideremos el problema:

min. cTx

s. a AxD bC ıx � 0:

Al cambiar b, la solución óptima variaría así

x D ŒxTB xTN �TD

h�NbCB�1ı

�T0TiT;

donde Nb D B�1b y B es la base óptima.

� Esa base seguirá siendo óptima en tanto y cuando sus coeficientes sigan siendono negativos.

Page 93: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

93/133

� Para cada modificación ıi del coeficiente i del vector b, si

d D B�1

26666640:::

1:::

0

3777775 i D B�1ei ;vector columna i -ésimode la inversa de la base

el intervalo Œıi ; ıi � en el cual la solución sigue siendo óptima es

ıi D mKax�

mKax1�k�m

˚�Nbk=dk; dk > 0

;�1

�� ı �

mKın�

mKın1�k�m

˚�Nbk=dk; dk < 0

;1

�D ıi

Page 94: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

94/133

� Ejemplo Supongamos que hemos resuelto el problema

min. 40xC 53y

s. a 60xC 80y � 360

160xC 120y � 680

x; y � 0:

� La solución completa es

xB D

26642

3

0

0

3775 ; B D � 60 80

160 120

�; B�1 D 1

5600

��120 80

160 �60

�;

N D

��1 0

0 �1

�; � D 1

560

�368

2

�y Nc D 1

560

�368

2

�:

La función objetivo es 239.

Page 95: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

95/1331. Para que rango de costes de x la solución sigue siendo óptima.

� Como x está en la base, cualquier cambio cx cx C � afecta al vector� y al vector de costes reducidos de las variables no básicas, Nc.

� El vector d de las expresiones anteriores es

d D B�1.1;W/N D1

5600

��120 80

� ��1 0

0 �1

�D �

15600

��120 80

�:

� Los costes reducidos variarán de la siguiente manera.

Nc 1

560

�368 2

�C �

1

5600

��120 80

�:

� Para que la solución óptima anterior lo siga siendo, debe cumplirse que�3680 � 120 � � 0

20C 80 � � 0:

� Esto se cumple en Œ� ; �� D Œ�1=4; 92=3�. El coeficiente de x puedemoverse pues en el rango Œ39;75 70;67� para que la solución siga siendoóptima.

Page 96: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

96/1332. Cuánto puede variar el coeficiente 360 del término independiente sin

que cambie la base óptima, es decir b1 b1 C ı.� El vector d es en este caso

d D B�1�1

0

�D

1

5600

��120

160

�;

por lo que xB �2

3

�C ı 1

5600

��120

160

�.

� La base óptima original seguirá siendo óptima mientras xB sea positiva;es decir, mientras (

2 � 1205600

ı � 0

3C 1605600

ı � 0:

� Esto se cumple en el intervalo Œı; ı� D Œ�105 280=3�, por lo que elcoeficiente 360 puede variar entre 360 � 105 y 360C 280=3 sin que cambiela solución óptima del problema original.

� El valor del multiplicador símplex �1 indica cómo varía la función objetivocuando coeficiente 360 se mueve en ese rango de valores:

z z C368

560ı D 239C

33

35ı:

Page 97: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

97/133El método Símplex para variables acotadas

� Nos ocupamos ahora del problema

min.cTxs. a AxDb

l � x � u :

Las variables están así acotadas, encajadas o box constrained. Si la xj tienelj D �1 y uj D1, se dice libre.

� Se podrían introducir variables de holgura y aplicar el método habitual,

min. cTx

s. a AxDb

x C x1Du

x � x2D l

x; x1; x2 � 0:

Actuando así, el número de variables se triplicay el número de condiciones pasa a ser mC2n.

Page 98: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

98/133

� Considérese a continuación el sistema de inecuaciones

Ax D b

l � x � u;

donde la matriz Am�n es, sin pérdida de generalidad, de rango m.

Definición Una solución básica factible de ese sistema es aquella en la que n � mvariables no básicas tienen el valor de uno de sus límites, l ó u, y las restantes m variablesbásicas corresponden a vectores columnas linealmente independientes de A.

� Descompongamos la matriz A en ŒBNl Nu�, con rango.B/ D m, y el vector xen ŒxTB xTNl xTNu�:

Page 99: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

99/133

� Un vector x se dice solución básica factible del sistema de inecuaciones

Ax D b

l � x � u;

si xB es solución del sistemaBxB D b;

yxNl D lNlxNuDuNu:

� Si además lB < xB < uB , entonces x es una solución básica factible nodegenerada; si algún coeficiente de xBj es igual a lj o uj , la solución se dicebásica factible degenerada.

Page 100: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

100/133� Expresemos las condiciones de la forma BxB CNlxNl CNuxNu D b. El vectorxB es entonces:

xB D B�1b �B�1NlxNl �B

�1NuxNu:

La función objetivo:

z D cTx D cTBxB C cTNlxNl C c

TNuxNu

D cTB�B�1b �B�1NlxNl �B

�1NuxNu�C cTNlxNl C c

TNuxNu

D cTBB�1bC

�cTNl � c

TBB

�1Nl

��

cost. reducidos

xNl C�cTNu � c

TBB

�1Nu

��

cost. reducidos

xNu:

� Supongamos que partimos de una solución básica factible.

� En ese punto se examinan los costes reducidos de las variables2 no básicas.

� Si puede ser mejorada –en un problema de minimización–, alguna variableno básica que esté en su límite inferior tendrá un coste reducido negativo, uotra en su límite superior un coste reducido positivo.

2En uno de sus límites.

Page 101: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

101/133

� La función objetivo se puede mejorar (decrementar) si�cj � c

TBB

�1aj�< 0 para alguna xj D lj o�

cj � cTBB

�1aj�> 0 para alguna xj D uj :

� Si se elige una variable no básica, xq por ejemplo, como aquella que ha demejorar la función objetivo, y su valor se modifica desde la cota en el que estéen la dirección hacia la otra cota, la función objetivo mejorará (decrecerá)mientras se puedan modificar las variables básicas de tal manera que persista lafactibilidad del problema (se satisfagan las condiciones); es decir, hasta que:

a) una variable básica llegue a uno de sus límites, en cuyo caso se hará nobásica, pasando a ocupar su sitio en la base la no básica que se modifica; o

b) la variable no básica que se modifica llegue al límite opuesto del que parteantes de que ocurra lo anterior. La base entonces no se modifica.

Si ocurren a) y b) a la vez: solución básica factible degenerada.

Page 102: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

102/133� Si Nl es el conjunto de los índices de las variables no básicas en su límite inferiory Nu el de las no básicas en su límite superior, y se modifica xq, se tendrá que

xB D B�1b �B�1NlxNl �B

�1NuxNu � �B�1aq

D Ob � �y;

con Ob D B�1b�B�1NlxNl �B�1NuxNu y y D B�1aq. Opciones: que q 2 Nu; o q 2 Nl .

� Si q 2 Nl , el incremento posible, � , de xq desde su límite inferior lq, ha de serpositivo para seguir manteniendo la factibilidad; el máximo será

� D mKın

8̂̂̂̂ˆ̂̂<̂ˆ̂̂̂̂̂:

�1 D

�mKın1�i�m

�Obi�lBi

yiW yi > 0I 1 W yi � 0

��2 D

�mKın1�i�m

�Obi�uBi

yiW yi < 0I 1 W yi � 0

�uq � lq:

� Si q 2 Nu, el incremento desde uq ha de ser negativo. El máximo:

� D mKın

8̂̂̂̂<̂̂ˆ̂̂̂:�1 D

�mKın1�i�m

�Obi�lBi

yiW yi < 0I 1 W yi � 0

��2 D

�mKın1�i�m

�Obi�uBi

yiW yi > 0I 1 W yi � 0

�lq � uq:

Page 103: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

103/133

� El último paso es modificar las estructuras de datos correspondientes, a fin dereflejar los cambios habidos en la base.

� Todos los códigos comerciales del método Símplex lo hacen para variablesacotadas:

� En un ordenador, una variable en forma estándar, xj � 0, en realidad setrata como si 0 � xj � 1020, por ejemplo, ya que en una máquina quetrabaje con precisión finita la cantidad 1020 es suficientemente grande.

� En la tabla que sigue se expone el algoritmo Símplex revisado para variablesacotadas.

Page 104: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

104/133Paso 1 – Asignación de precios. Comprobación de óptimo.(a) Calcular los multiplicadores símplex resolviendo el sistema BT� D cB .(b) Calcular los costes reducidos de las variables no básicas, Ncj D cj � �T aj , para todo j … B.(c) Comprobar que se ha llegado al óptimo: si Ncj � 0 para todo j 2 Nl y Ncj � 0 para todo j 2 Nu, PARAR; lasolución es óptima.

Paso 2 – Obtener columna de pivotación.(a) Determinar la variable no básica xq que debe entrar en la base (encontrar una dirección de descenso): escogerq … B tal que

Ncq D mKax�j mKınj2Nl

f Ncj < 0gj; mKaxj2Nu

f Ncj > 0g

�:

(b) Resolver By D aq . Si q 2 Nl , ir al paso 3; si q 2 Nu, al 3’.Paso 3 – Obtener fila de pivotación. Determinar qué variable básica xjp sale de la base: calcular � W

� D mKın�

mKın1�i�m

�xji� lji

yiW yi > 0

�; mKın1�i�m

�xji� uji

yiW yi < 0

�; uq � lq

�:

Si � � Tol:: PARAR; el problema es no acotado. Si no, ir al paso 4.Paso 3’ – Obtener fila de pivotación. Determinar qué variable básica xjp sale de la base: calcular � W

� D mKın�

mKın1�i�m

�xji� uji

yiW yi > 0

�; mKın1�i�m

�xji� lji

yiW yi < 0

�; lq � uq

�:

Si � � �Tol:: PARAR; el problema es no acotado.Paso 4 – Pivotación. Adaptar la solución y la matriz B e ir al paso 1:

xq lq C � ó uq C � ;

xji xji

� �yi ; 1 � i � m ;

B B C .aq � ajp /eTp ; (sólo si � 6D uq � lq)

B B [ fqgnfjpg ; (sólo si � 6D uq � lq)Nl Nl [ fjpgnfqg ; (sólo si � 6D uq � lq y q 2 Nl)Nu Nu [ fjpgnfqg ; (sólo si � 6D uq � lq y q 2 Nu)jp q; (sólo si � 6D uq � lq).

Page 105: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

105/133

function [fobj niters x] = Rsimplex_1(file,A,b,c,lb,ub);% Resuelve min c’x st Ax=b, lb<=x<=ub con Simplex revisado en dos FASES

if nargin>2if nargin<4, error(’Si no se lee de fichero, se requieren al menos’,...

’ cuatro argumentos en entrada’); endif nargin<6, ub = Inf*ones(size(c)); endif nargin<5, lb = zeros(size(c)); endA = sparse(A);

else % Lectura de los datos desde fichero ’file’ en MPSeval([’!copy ’ file ’ d:\Matlab2010b\work\tmp\in.mps’]);LIPSO = ’d:\Matlab2010b\work’; exit=mps2mat(LIPSO); fprintf(’\n’);load d:\Matlab2010b\work\tmp\default;lb=lbounds; ub=ubounds;

end[m n] = size(A); zer_tol = 1.0e-5; piv_tol = 1.0e-8; niters=0; t=cputime;

f=fopen(’Salida_Rsimplex’,’w’);fprintf(f,’ It. Fase Sinf/Fobj Nopt\n’);fprintf(f,’----------------------------------\n’);

% FASE Iv = zeros(n,1);lbdd = find(lb>-Inf); v(lbdd) = lb(lbdd); free = setdiff(1:n,lbdd);ubdd = free(ub(free)<Inf); v(ubdd) = ub(ubdd);if isempty(ubdd), N = -lbdd’; % Var no en la base: en cota inf. No hay en u

else N = [-lbdd’ ubdd]; free = setdiff(free,ubdd);end;f = length(free);if f>0 % ¡OJO! Hay variables libres

[L U P Q] = lu(A(:,free)); % Q es matriz de permutaciónfree = free*Q’;i = length(find(abs(diag(U))>piv_tol)); j = free(i+1:f);if ~isempty(j)

N = [N j]; free = setdiff(free,j); f = length(free);lb(j) = zeros(size(j)); ub(j) = zeros(size(j));

end;[k i] = find(P(1:f,:)); % relies on diag(U) having zeros at endv(free) = U(1:f,1:f)\(L(1:f,1:f)\(P(1:f,:)*(b - A*v)));k = setdiff(1:m,k); m = m-f; B = [free n+1:n+m];A = [A sparse(k,1:m,sign(b(k)-A(k,:)*v+eps),m+f,m)];

else % No hay variables libresB = n+1:n+m; j = []; A = [A sparse(1:m,1:m,sign(b-A*v+eps*ones(size(b))))];

endlb = [lb; zeros(m,1)]; ub = [ub; Inf*ones(m,1)];w = [zeros(n,1); ones(m,1)]; % Variables + artificiales para FASE I[x niters B N L U] = rsmbdd(A,b,w,lb,ub,B,N,1,niters); % FASE Iif w’*x>zer_tol, error(’El problema no es factible’); end

% Adaptar para FASE IIub(n+1:n+m) = zeros(m,1); c = [c; zeros(m,1)];if ~isempty(j)

c_r = c(j)’-c(B)’*(U\(L\A(:,j)));if norm(c_r,inf)>zer_tol, error(’Problema no acotado’); end

end[x niters] = rsmbdd(A,b,c,lb,ub,B,N,2,niters); % FASE IIx = x(1:n); fobj=c(1:n)’*x;fclose(’all’);fprintf(’[m n]=[%g %g]. Tiempo CPU:%10.4f; fun. obj.=%17.4e\n’,m,n,cputime-t,fobj);

function [x niters B N L U] = rsmbdd(A,b,c,lb,ub,B,N,fase,niters)% Rutina de Símplex revisado para min c’x s.a Ax=b, lb<=x<=ub.% B vector 1xm con los índices de las variables (columnas) en la base.% N vector 1x(l-m) con los índices de las variables no básicas,% es decir, en sus límites (+/-1).

[m l] = size(A); f=fopen(’Salida_Rsimplex’,’a’);zer_tol = 1.0e-5; piv_tol = 1.0e-8;

[L U] = lu(A(:,B));if any(abs(diag(U))<piv_tol), error(’La base inicial no es invertible’); endx = lb; upper = N(N>0); x(upper) = ub(upper);x(B) = U\(L\(b-A(:,abs(N))*x(abs(N))));

while 1if any(x(B)<lb(B)-zer_tol | x(B)>ub(B)+zer_tol), error(’Punto no factible’); endu = L’\(U’\c(B));c_r = c(abs(N))’-u’*A(:,abs(N)); % Costes reducidos no básicasif ~any(c_r.*N>zer_tol), return, end % SE HA LLEGADO A UNA SOLUCIÓNNopt=sum(c_r.*N>zer_tol);

[min_red_cost s] = max(c_r.*sign(N)); % Entra var. s no básica con>coste reducidoblk = abs(N(s));min_ratio = ub(blk) - lb(blk); order = -sign(N(s)); % Puede s ir de u a l o l a ud = order*U\(L\A(:,blk));block_lb = find(d>=piv_tol & lb(B)>-1e32); % Comprobar básica que llega a lbif ~isempty(block_lb)

[min_lb index_r] = min((x(B(block_lb))-lb(B(block_lb)))./d(block_lb));if min_lb<min_ratio

r=block_lb(index_r);min_ratio = min_lb;blk = B(r);

endendblock_ub = find(d<=-piv_tol & ub(B)<1e32); % Comprobar básica que llega a ubif ~isempty(block_ub)

[min_ub,index_r] = min((x(B(block_ub))-ub(B(block_ub)))./d(block_ub));if min_ub<min_ratio

r=block_ub(index_r);min_ratio = min_ub;blk = B(r);

endendif min_ratio>1e32, error(’Problema no acotado’); end

% Readaptar solución y datosx(B) = x(B)-min_ratio*d;x(abs(N(s))) = x(abs(N(s))) + order*min_ratio;if blk == abs(N(s)), N(s) = -N(s); % Se bloquea la no básica

else swap = B(r); B(r) = abs(N(s)); N(s) = -sign(d(r))*swap;[L U] = lu(A(:,B));

endniters=niters+1;fprintf(f,’%5d%4d%18.9e%6d\n’,niters,fase,c’*x,Nopt);

end

Page 106: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

106/133� Ejemplo Resolvamos min.�2x1 � 4x2 � x3

s. a 2x1C x2C x3 � 10

x1C x2 � x3 � 4

0 � x1 � 4

0 � x2 � 6

1 � x3 � 4:

� Se introducen las variables de holgura:

min.�2x1 � 4x2 � x3s. a 2x1C x2C x3C x4 D 10

x1C x2 � x3 C x5D 4

0 � x1 � 4

0 � x2 � 6

1 � x3 � 4

x4; x5 � 0:

� Como es inmediato obtener una solución factible y una base de partida,entramos directamente en la fase II del método Símplex.

Page 107: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

107/133

� Partiremos de:

B D Œa4; a5� D

�1 0

0 1

�;Nl D Œa1; a2; a3� ;Nu D ;

y de la solución inicial x D Œ0; 0; 1; 9; 5�T . La función objetivo en este punto es�1.

Iteración 1. Paso 1

� Calculemos los multiplicadores símplex:

� D B�T cB D

�1 0

0 1

� �0

0

�D

�0

0

�:

Page 108: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

108/133

� Los costes reducidos de las variables no básicas son:

Nc1 D c1 � �Ta1 D �2 � Œ0; 0�

�2

1

�D �2;

Nc2 D c2 � �Ta2 D �4 � Œ0; 0�

�1

1

�D �4 y

Nc3 D c3 � �Ta3 D �1 � Œ0; 0�

�1

�1

�D �1:

Todavía no se ha llegado al óptimo del problema pues las variables x1, x2 y x3están en sus límites inferiores y sus costes reducidos son negativos.

Iteración 1. Paso 2

� Se elige la variable x2 para entrar en la base por ser la no básica de costereducido más negativo.

Page 109: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

109/133

� Se resuelve By D a2:

y D B�1a2 D

�1 0

0 1

� �1

1

�D

�1

1

�:

Iteración 1. Paso 3

� La variable a salir de la base de determinará de calcular el incremento � :

� D mKın

(�1 D mKın

�xB1 � lB1y1

;xB2 � lB2y2

�D

�9 � 0

1;5 � 0

1

�u2 � l2 D 6 � 0

)D 5:

� Saldrá, por tanto, la variable de número de índice 2 en la base, x5, pues es laque antes llega a su límite inferior.

Page 110: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

110/133

Iteración 1. Paso 4

� Readaptemos la solución y las estructuras de datos:

x2 l2 C � D 0C 5 D 5

x4 x4 � �y1 D 9 � 5 � 1 D 4

x5 x5 � �y2 D 5 � 5 � 1 D 0:

La nueva solución es x D Œ0; 5; 1; 4; 0�T , con

B D Œa4; a2� D

�1 1

0 1

�; Nl D Œa1; a3; a5� y Nu D ;:

La nueva función objetivo es �21.

Page 111: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

111/133Iteración 2. Paso 1

� Calculemos los multiplicadores símplex:

� D B�T cB D

�1 0

1 1

��1 �0

�4

�D

�1 0

�1 1

� �0

�4

�D

�0

�4

�:

� Los costes reducidos de las variables no básicas son:

Nc1 D c1 � �Ta1 D �2 � Œ0; �4�

�2

1

�D 2;

Nc3 D c3 � �Ta3 D �1 � Œ0; �4�

�1

�1

�D �5 y

Nc5 D c5 � �Ta5 D 0 � Œ0; �4�

�0

1

�D 4:

Como la variable x3 está en su límite inferior y su coste reducido es negativo,todavía no se ha llegado al óptimo.

Page 112: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

112/133Iteración 2. Paso 2

� Se elige la variable x3 para entrar en la base. Se resuelve By D a3:

y D B�1a3 D

�1 �1

0 1

� �1

�1

�D

�2

�1

�:

Iteración 2. Paso 3

� La variable a salir de la base de determinará de calcular � :

� D mKın

8̂̂̂̂<̂ˆ̂̂:�1 D mKın

nxB1�lB1y1

oD˚4�02

�2 D mKın

nxB2�uB2

y2

oD˚5�6�1

u3 � l3 D 4 � 1

9>>>>=>>>>; D 1:Saldrá, por tanto, la variable de número de índice 2 en la base, x2, pues es laque antes llega a uno de sus límites: el superior.

Page 113: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

113/133

Iteración 2. Paso 4

� Readaptemos la solución y las estructuras de datos:

x3 l3 C � D 1C 1 D 2

x4 x4 � �y1 D 4 � 1 � 2 D 2

x2 x2 � �y2 D 5C 1 � 1 D 6:

La nueva solución es x D Œ0; 6; 2; 2; 0�T , con

B D Œa4; a3� D

�1 1

0 �1

�;Nl D Œa1; a5� y Nu D Œa2�:

La nueva función objetivo es �26.

Page 114: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

114/133

Iteración 3. Paso 1

� Calculemos los multiplicadores símplex:

� D B�T cB D

�1 0

1 �1

��1 �0

�1

�D

�1 0

1 �1

� �0

�1

�D

�0

1

�:

Los costes reducidos de las variables no básicas son:

Nc1 D c1 � �Ta1 D �2 � Œ0; 1�

�2

1

�D �3;

Nc2 D c2 � �Ta2 D �4 � Œ0; 1�

�1

1

�D �5 y

Nc5 D c5 � �Ta5 D 0 � Œ0; 1�

�0

1

�D �1:

Como las variables x1 y x5, que están en sus límites inferiores, tienen costesreducidos negativos, todavía no se ha llegado al óptimo del problema.

Page 115: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

115/133Iteración 3. Paso 2

� Se elige la variable x1 para entrar en la base. Se resuelve By D a1:

y D B�1a1 D

�1 1

0 �1

��1 �2

1

�D

�1 1

0 �1

� �2

1

�D

�3

�1

�:

Iteración 3. Paso 3

� La variable a salir de la base de determinará de calcular � :

� D mKın

8̂̂̂̂<̂ˆ̂̂:�1 D mKın

nxB1�lB1y1

oD˚2�03

�2 D mKın

nxB2�uB2

y2

oD˚2�4�1

u1 � l1 D 4 � 0

9>>>>=>>>>; D2

3:

Saldrá x4 pues es la que antes llega a uno de sus límites: el inferior.

Page 116: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

116/133

Iteración 3. Paso 4

� Readaptemos la solución y las estructuras de datos:

x1 l1 C � D 0C 2=3 D 2=3

x4 x4 � �y1 D 2 � .2=3/ � 3 D 0

x3 x3 � �y2 D 2C .2=3/ � 1 D 8=3:

� La nueva solución es: 26664x1x2x3x4x5

37775 D266642=3

6

8=3

0

0

37775 :

Page 117: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

117/133

� También,

B D Œa1; a3� D

�2 1

1 �1

�;Nl D Œa4; a5� y Nu D Œa2�:

La nueva función objetivo es �28.

Iteración 4. Paso 1

� Calculemos los nuevos multiplicadores símplex:

� D B�T cB D

�2 1

1 �1

��1 ��2

�1

�D

�1=3 1=3

1=3 �2=3

� ��2

�1

�D

��1

0

�:

Page 118: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

118/133

� Los costes reducidos de las variables no básicas son:

Nc2 D c2 � �Ta2 D �4 � Œ�1; 0�

�1

1

�D �3;

Nc4 D c4 � �Ta4 D 0 � Œ�1; 0�

�1

0

�D 1 y

Nc5 D c5 � �Ta5 D 0 � Œ�1; 0�

�0

1

�D 0:

� Los costes reducidos de las variables no básicas en sus límites inferiores, x4 y x5,son 1 y 0, y el de la variable en su límite superior, x2, es -3.

� Se ha llegado, por tanto, a un óptimo del problema, aunque no es el único.

Page 119: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

119/133

� En efecto, si se incrementa x5, manteniendo x2 D 6 y x4 D 0 fijos, las variablesx1 y x3 se modificarán de la forma:�

x1x3

�D B�1b �B�1a5x5 D

�2=3

8=3

��

�1=3

�2=3

�x5:

� Para cualquier x5 < 2, la solución26664x1x2x3x4x5

37775 D266642=3 � 1=3x5

6

8=3C 2=3x50

0

37775es óptima. El valor de la función objetivo óptimo es �28. u

Page 120: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

120/133

� Con el programa Rsimplex_1 presentado antes, se consigue esto:

>> A=[2 1 1;1 1 -1];>> b=[10;4];>> c=[-2 -4 -1];>> l=[0 0 1];>> u=[4 6 4];

>> [fobj niters x]=Rsimplex_1([],A,b,c,l,u)[m n]=[2 3]. Tiempo CPU: 0.0312; fun. obj.= -2.8000e+001fobj =

-28niters =

4x =

0.6666666666666676.0000000000000002.666666666666667

� Para otro ejemplo mucho más grande:

» [fobj niters]=Rsimplex_1(’etam-mi.mps’)1 archivo(s) copiado(s).

NAME done ROWS done COLUMNS done RHS done RANGES done BOUNDS done reading done mps2mat doneStatus=0[m n]=[400 816]. Tiempo CPU: 3.0888; fun. obj.= -7.5572e002+

fobj =-7.557152331775660e+002

niters =2009

Page 121: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

121/133Implementaciones “comerciales” del SímplexForma de “tableau”

� El tableaux es así:

�z xB xN TD�z 1 0 cTN � c

TBB

�1N �cTBB�1b

xB 0 I B�1N B�1b

� Si TD designa Término de la Derecha y T es una matriz cuyos coeficientes sonlos del tableau, en realidad éste representa el sistema

T

26664�z

xBxN�TD

37775 D 0;de mC 1 ecuaciones lineales y nC 1 variables: las n de x y z.

Page 122: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

122/133� Esta es una de las primeras formas en que se explicitó computacionalmente elmétodo Símplex, con vistas a su mejor comprensión. Se diferencia de loexpuesto en que el cálculo de � y NcN del Paso 1, y el de y del Paso 2 seeliminan y el Paso 4 de pivotación se lleva a cabo directamente en el tableau.

� Si suponemos que las variables básicas que entran y salen de la base en unadeterminada iteración son la q y la p, y que las filas y las columnas del tableaude esa iteración están numeradas partiendo de cero, la operación de pivotaciónconlleva:

i) dividir la fila p de T por tpq, el coeficiente que ocupa la fila p y la columnaq de la matriz T , y

ii) para 0 � i � m, i ¤ p, restar de la fila i la p multiplicada por tiq a fin dehacer cero el elemento q de esa fila.

� Los costes reducidos, NcN , y el vector de variables básicas, B�1b, se obtienendirectamente del tableau.

Page 123: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

123/133� Ejemplo Resolvamos:

min. x1 C x2 � 4x3

s. a x1 C x2 C 2x3 � 9x1 C x2 � x3 � 2�x1 C x2 C x3 � 4

x1; x2; x3 � 0:

con variables deholgura

min. x1 C x2 � 4x3

s. a x1 C x2 C 2x3 C x4 D 9x1 C x2 � x3 C x5 D 2�x1 C x2 C x3 C x6 D 4

x1; x2; x3; x4; x5; x6 � 0:

Iteración 1�z x1 x2 x3 x4 x5 x6 TD

�z 1 1 1 �4 0 0 0 0

x4 0 1 1 2 1 0 0 9

x5 0 1 1 �1 0 1 0 2

x6 0 �1 1 ¬ 0 0 1 4

� La variable que entra en la base es la no básica cuyo coste reducido es másnegativo: x3.

� El ¬ indica que de entre las relaciones posibles, 9/2 y 4/1, (la otra afecta a unnúmero negativo) se elige esta última, por lo que saldrá de la base aquellavariable que pivota en la tercera fila: x6.

Page 124: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

124/133Iteración 2�z x1 x2 x3 x4 x5 x6 TD

�z 1 �3 5 0 0 0 4 16

x4 0 ® �1 0 1 0 �2 1

x5 0 0 2 0 0 1 1 6

x3 0 �1 1 1 0 0 1 4

Iteración 3�z x1 x2 x3 x4 x5 x6 TD

�z 1 0 4 0 1 0 2 17

x1 0 1 �13

0 13

0 �23

13

x5 0 0 2 0 0 1 1 6

x3 0 0 23

1 13

0 13

133

Se ha llegado a un punto en el que todos los costes reducidos de las variables nobásicas son positivos por lo que se ha conseguido el óptimo del problema.

� La solución final es por tanto

Œx1; x2; x3; x4; x5; x6�TD Œ1=3; 0; 13=3; 0; 6; 0�T :

El valor de la función objetivo es z D �17.

Page 125: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

125/133

�z x1 x2 x3 x4 x5 x6 TD

�z 1 0 4 0 1 0 2 17

x1 0 1 �13

0 13

0 �23

13

x5 0 0 2 0 0 1 1 6

x3 0 0 23

1 13

0 13

133

� La base óptima la constituyen los vectores columna a1, a5 y a3. Es decir,

B D Œa1; a5; a3� D

24 1 0 2

1 1 �1

�1 0 1

35 min. x1 C x2 � 4x3

s. a x1 C x2 C 2x3 C x4 D 9x1 C x2 � x3 C x5 D 2�x1 C x2 C x3 C x6 D 4

x1; x2; x3; x4; x5; x6 � 0:

� La inversa de B es la submatriz que en el tableau final ocupa el lugar que en elinicial ocupaba la submatriz identidad; es decir,

B�1 D

241=3 0 �2=30 1 1

1=3 0 1=3

35 :

Page 126: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

126/133

Otras variantes y mejoras del SímplexImplementación de la inversa de la base en forma de productosmatriciales

� En problemas grandes, resolver los sistemas BT� D cB y By D aq es costoso.La modificación de B�1 en una iteración es

NB�1 D EB�1;

donde

E D I �.y � ep/e

Tp

ypD

2666666664

1 �y1=yp: : :

:::1 �yp�1=yp

1=yp�ypC1=yp 1

:::: : :

�ym=yp 1

3777777775y y D B�1aq:

"

columna p

Page 127: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

127/133

� Si el Símplex se inicia con una matriz B igual a la identidad, después de kiteraciones la matriz B�1 se puede expresar en una forma producto, de lasiguiente manera

B�1k D EkEk�1 � � �E 1B�1:

Para implementar este esquema operativo se requiere almacenar los valores delos coeficientes de la columna de la matriz E i que la hace diferente de la matrizidentidad, y el propio valor del índice i .

� Para evitar errores de redondeo, conforme avanza el proceso es aconsejablerefactorizar periódicamente la matriz B�1.

� La variante del Símplex que incluye esta forma de actuar es la que sigue.

Page 128: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

128/133

Paso 1 – Operación BTRAN (backward transformation). Calcular los multiplicadores símplex a partir de

�TD cT

BB�1 D

���cT

BEk

�Ek�1

�� � �E 1

�:

Determinar los costes reducidos de las variables no básicas a partir de

Ncj D cj ��T aj ; para todo j 2 N:

Si Ncj � 0 para todo j … B, PARAR; la solución es óptima.Paso 2 – Operación FTRAN (forward transformation). Escoger q 2 N tal que Ncq D mKınj2N f Ncj < 0g. Calcular

y D B�1aq D .Ek.Ek�1 � � � .E 1aq///:

Si y � 0, PARAR; el problema es no acotado.Paso 3 – Operación CHUZR. Si xj D B

�1b, establecer la variable básica xjpque sale de la base determinando la fila p sobre la que pivota

la columna q a partir de la relaciónxjp

yp

D mKın1�i�m

�xji

yi

W yi > 0

�:

Paso 4 – Operación WRETA. Adaptar la matriz inversa de la base y la solución a partir de

EkC1 D

266666666664

1 �y1=yp

: : ::::

1 �yp�1=yp

1=yp

�ypC1=yp 1

:::

: : :

�ym=yp 1

377777777775:

La nueva inversa de la base será B�1 EkC1Ek � � �E 2E 1 y la nueva solución xj EkC1xj .

Page 129: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

129/133

Implementación de la base y su inversa mediante factorización LU

� La idea es factorizar la matriz básica en la forma LU e ir aplicándole a ella unasucesión de matrices elementales —que difieren de la identidad en un soloelemento debajo de la diagonal principal— y matrices de permutación.

� Si, por ejemplo,

U D

243 2 13 54

35 ;las matrices U 1, U 2 y U 3 serán

U 1 D

243 11

35 ;U 2 D

241 231

35 y U 3 D

241 11 54

35 :Es fácil comprobar que U D U 3U 2U 1.

Page 130: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

130/133

� Después de k iteraciones se tendrá que

Bk D B0E�11 E

�12 � � �E

�1k I

es decir, que

LmPm � � �L1P1Bk D UmUm�1 � � �U 1E�11 E

�12 � � �E

�1k :

� Para almacenar las matrices E i , Lj y Uj en la memoria del ordenador sólo esnecesario guardar el valor de los subíndices y los elementos distintos de cero delas columnas que designan esos subíndices.

� De las matrices de permutación P i sólo es necesario guardar un puntero queindique con qué fila se intercambia la i .

Page 131: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

131/133

Complejidad computacional del Símplex

� Cada iteración requiere alrededor de m.n �m/C .mC 1/2 multiplicaciones ym.nC 1/ sumas o restas: O.mn/ en los dos casos pues n� m..

� El número de puntos extremos de un programa lineal en forma estándar con nvariables y m condiciones es C.n;m/. Si n � 2m, se tiene que

C.n;m/ DnŠ

mŠ.n �m/Š�

� nm

�m� 2m:

De acuerdo con esto, en el peor de los casos, parece lógico temerse un númerode iteraciones exponencial.

Page 132: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

132/133� Un problema clásico es el estudiado por Klee y Minty [1972]:

maximizar xns. a 0 � x1 � 1

ıxi�1 � xi � 1 � ıxi�1; i D 2; : : : ; n; 0 < ı < 1=2;

xi � 0; i D 1; 2; : : : ; n:

Tiene 2n puntos extremos. Para n D 2 y n D 3 es el de la figura.

� Comenzando en x D 0 (factible), con precisión absoluta, el método recorreríalos 2n puntos extremos.

x1

x2

x3

x(1)

x(0)

x(2)x(3)

x(4) x(5)

x(6)

x(7)

x1

x2

x(0)

x(1)=

[1δ

]

x(2)=

[1

1 − δ

]x(3)

=

[01

]

Page 133: Programación Lineal. El Método Sí · PDF fileProgramación Lineal. El Método Símplex JoséLuisdelaFuenteO’Connor jldelafuente@etsii.upm.es joseluis.delafuente@upm.es Clase_simplex_2016.pdf

h i j

d e f g

a b c

10 8 7

9 4 6 5

1 2 3

133/133� La práctica de los últimos cincuenta años ha permitido constatar que los casosextremos, como el ejemplo de Klee y Minty, rara vez ocurren en la realidad.

� Grosso modo, en problemas de tamaño moderado, el método Símplex requiereun número de iteraciones real comprendido entre 4m y 6m.

� En problemas muy grandes, el número de iteraciones que cabe esperar llevar acabo para resolverlos es ˛ �m, donde e˛ < log2.2C n=m/.

� En resumen, la complejidad computacional práctica esperada del métodoSímplex es del O.m2n/.

� Teniendo también en cuenta el efecto que el tratamiento de la dispersidad de los problemas puede acarrear en la

complejidad del método, diversos estudios han establecido que la complejidad del método la define la ecuación

Km˛nd0;33, donde K es una constante, 1;25 < ˛ < 2;5 y d es el número de elementos distintos de cero en la matriz

A, dividido por nm.