Transcript Document

Optimización de
Procesos
Tier I: Métodos Matemáticos de
Optimización
Sección 2:
Programación Lineal
Programación Lineal (Linear
Programming, LP)
• La programación lineal (optimización
lineal) es el área de problemas de
optimización con funciones objetivo y
restricciones lineales
Ejemplo:
minimizar:
sujeta a:
f(x) = 6x1 + 5x2 + 2x3 + 7x4
2x1 + 8x3 + x4 ≥ 20
x1 – 5x2 – 2x3 + 3x4 = -5
Programación Lineal
continuación
• Ninguna de las variables está multiplicada
por otra variable, elevada a una potencia o
usada en una función no linear
• Puesto que la función objetivo y las
restricciones son lineales, son convexas.
Entonces, si la solución óptima de un
problema de LP es encontrada, ésta es el
óptimo global.
Forma estándar de LP
• Forma estándar de LP:
minimizar: f = cx
sujeta a: Ax = b
xi ≥ 0; i = 1, …, n
donde c es llamada el vector costo (1 por n), x es
el vector de variables (n por 1), A es la matriz
de coeficientes (m por n), y b es un vector de
constantes dadas m por 1.
Bases de la Forma Estándar
• Para un problema de maximización,
podemos transformar usando:
max(f(x))  min(-f(x))
• Para restricciones de desigualdad, se
usan variables "flojas":
2x1 + 3x2 ≤ 5  2x1 + 3x2 + s1 = 5
donde s1 ≥ 0
Usando Variables flojas
Cuando transformamos la ecuación
2x1 + 3x2 ≤ 5 to 2x1 + 3x2 + s1 = 5
Si el lado izquierdo (left-hand side, LHS) (2x1 + 3x2)
es menor que el lado derecho (right-hand side,
RHS) (5), entonces s1 tomará un valor positivo
para hacer la igualdad verdadera. Mientras el
valor del LHS sea más cercano al RHS, más
pequeño será el valor de s1. Si el LHS es igual al
RHS,
s1 = 0. s1 no puede ser negativo porque el LHS
no puede ser mayor que el RHS.
Ejemplo de Forma Estándar
Ejemplo:
Escrito en Forma Estándar:
maximizar: f = x1 + x2
sujeta a:
2x1 + 3x2 ≤ 6
x1 + 7x2 ≥ 4
x1 + x2 = 3
x1 ≥ 0, x2 ≥ 0
Definir las variables flojas x3 ≥ 0 & x4 ≥ 0
Ejemplo de Problema
Reescrito
El problema ahora puede escribirse:
minimizar: g = –x1 – x2
sujeta a:
2x1 + 3x2 + x3
=6
x1 + 7x2
– x4 = 4
x1 + x2
=3
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0
2 3 1 0 
A  1 7 0  1
1 1 0 0 
6 
b  4
3
c  1 1 0 0
Repaso de Álgebra Lineal
• La siguientes diapositivas revisan varios
conceptos de álgebra lineal que son la
base de los métodos usados para resolver
problemas de optimización lineal
Vectores e Independencia
Lineal
• Vectores
– Un vector k es una columna o fila o un arreglo de
columnas de k números. Tiene una dimensión de k.
• Independencia Lineal (Linear Independence, LI)
– Una recopilación de vectores a1, a2, …, ak, cada uno
de dimensión n, es llamado linealmente
independiente si la
k
  ja j  0
j 1
significa que
 j  0 para j=1, 2, …, k
Independencia Lineal
Continuación
• En otras palabras, un grupo de vectores
es linealmente independiente si un vector
no puede escribirse como una
combinación de cualquiera de los otros
vectores.
• El número máximo de vectores LI en un
espacio n-dimensional es n.
Independencia Lineal
Continuación
Por ejemplo, en un espacio de 2 dimensiones:
 4
Los vectores x1   
5 
20
y x2   
25
no son
Linealmente independientes porque x2 = 5x1.
0 
x1   
 2
3
y x 2    son LI porque no hay
1
Una constante que puedas multiplicar para
obtener la otra.
Grupos de Cobertura
• Se dice que un grupo de vectores a1, a2,
…, ak en un espacio n-dimensional abarca
el espacio si cualquier otro vector en el
espacio puede escribirse como una
combinación lineal de vectores
• En otras palabras, para cada vector b,
deben existir escalares 1, 2, …, k tales
k
que
b    ja j
j 1
Bases
•
Se dice que un grupo de vectores es una
base para un espacio n-dimensional si:
1. Los vectores abarcan el espacio
2. Si cualquiera de los vectores es removido,
el grupo ya no abarcará el espacio
•
•
Una base para un espacio n-dimensional
debe tener exactamente n vectores
Pueden existir muchas bases diferentes
para un espacio dado
Bases
continuación
• Un ejemplo de una base es el eje
coordenado de una gráfica. Para una
gráfica en 2-D, no puedes remover uno de
los ejes y aún formar una línea cualquiera
con solo los ejes restantes.
• O, no puedes tener tres ejes en una
gráfica 2-D porque siempre puedes
representar el tercero usando los otros
dos.
Sistemas de Ecuaciones
(SOE)
• El Álgebra Lineal puede ser usada para
resolver un sistema de ecuaciones
Ejemplo:
2x1 + 4x2 = 8 & 3x1 – 2x2 = 11
Esto puede ser escrito como una matriz
aumentada:
2 4 8 
[ A, b]  

3  2 11
Sistemas de Ecuaciones
Continuación
• Las operaciones de fila pueden ser
realizadas en la matriz sin cambiar el
resultado
• Operaciones de fila válidas incluyen lo
siguiente:
– Multiplicar una fila por una constante
– Intercambiar dos filas
– Sumar una fila a otra
Resolviendo SOE’s
• En el ejemplo previo, queremos cambiar la
matriz A para ser triangular superior
2 4 8  multiplica la
3  2 11 fila superior por ½


suma 3 veces la
fila superior a
la fila inferior
1 2 4 
3  2 11


1 2 4 
0  8  1


Resolviendo SOE’s
continuación
multiplica la fila
4
 inferior por -1/8
1 2
0  8  1



1 2 4 
0 1 1 

8 
1x1  2 x2  4
0 x1  1x2  18
• De la matriz triangular superior
aumentada, podemos fácilmente ver que
x2 = 1/8 y usar este para obtener x1
x1 = 4 – 2 . 1/8 = 15/4
Matriz Invertida
• El inverso de una matriz puede ser
encontrado usando operaciones de filas
 2 1 1
Ejemplo:


A   1 2 1 
 1  1 2
 2 1 1 1 0 0
Forma la matriz aumentada (A, I) 


1
2
1
0
1
0


 1  1 2 0 0 1
Transformala a (I, A-1)
Usando operaciones
de filas
1 0 0

0 1 0
0 0 1

5
12
3
12
1

12
3
12
3
12
3
12

1
12
3

12
5
12






Ecuaciones de Optimización
• Hemos visto que las restricciones pueden
ser escritas en la forma Ax  b
.
• Debemos tener más variables que
ecuaciones así que tenemos algunos
grados de libertad para optimizar.
– Si el número de ecuaciones es mayor o igual
que el número de variables, los valores de las
variables ya están especificados.
Solución General a los SOE’s
• Dado un sistema de ecuaciones en la forma
Ax  b
– Asume m (número de ecuaciones) < n (número
de variables)  sistema underspecified system
• Podemos separar el sistema en variables
independientes (n-m) y variables
dependientes (m). Los valores de las
variables dependientes dependerán de los
valores que elijamos para las variables
independientes.
Solución General
continuación
• Llamamos a las variables dependientes
variables básicas porque su matriz de
coeficientes A forma una base. Las
variables independientes serán llamadas
variables no básicas.
• Al cambiar las variables en la base,
podemos cambiar las bases. Se mostrará
que esto permite examinar diferentes
puntos óptimos posibles.
Solución General
continuación
Separa la matriz A en la siguiente manera:
a1x1  ... am xm  ... an xn  b
O,
m
n
a x  a x
i
i 1
j
i
j  m 1
j
b
Solución General
continuación
Define las matrices B y N como sigue:
B  a
1
a
2
... a
m

N  a
m1
a
m 2
... a
n
donde B es una matriz m por m matriz, N es
una matriz m por (n-m), y aj es la columna
jth de la matriz A
• B es llamada “matriz básica” y N es
llamada “matriz no básica”

Solución General
continuación
• La matriz B contiene las columnas de la
matriz A que corresponden a las
variables x que están en la base. Se debe
mantener el orden.
– Así, si x4 es la segunda variable de la base, a4
debe ser la segunda columna de la matriz B
• La matriz N es solo las columnas de la
matriz A que quedan fuera.
Solución General
continuación
Similarmente, define
T
xB  [ x1 x2 ... xm ] y
x N  [ xm1
T
xm2 ... xn ]
Más adelante veremos como determinar
que variables poner en la base. Este es
un paso importante para examinar todas
las soluciones óptimas posibles.
Solución General
continuación
Ahora tenemos
BxB  NxN  b
Multiplica ambos lados por B-1:
xB  B1NxN  B1b
Así, x  (xB x N )  (B1b  B1NxN x N )
Solución Básica
• Podemos elegir cuales quiera valores para
las variables (n-m) (aquellas en xN)y
entonces resolver para las variables m
restantes en xB
• Si elegimos xN = 0, entonces x B  B1b
A esto se le llama "solución básica" del
sistema
Solución Básica: x  (x B
1
x N )  (B b 0)
Soluciones Básicas Factibles
Ahora tenemos una solución para Ax = b.
Pero esa era solo uno de dos grupos de
restricciones para el problema de
optimización. El otro era: xi ≥ 0, i = 1, …, n
(no-negativa)
• Una solución básica factible (basic
feasible solution, BFS) es una solución
básica donde cada x es no-negativa
Una BFS satisface todas las restricciones
del problema de optimización
Puntos Extremos
• Un punto es llamado punto extremo
(extreme point, EP) si no puede ser
representado como una combinación
convexa estricta (0 <  < 1) de otros dos
puntos factibles.
• Recuerda: una combinación convexa de
dos puntos es una línea entre ellos.
• Entonces, un EP no puede estar en una
línea de otros dos puntos factibles.
Puntos Extremos (Gráficos)
• Dada una región factible, un punto
extremo no puede hallarse en una línea
entre dos otros puntos factibles (debe
estar en un vértice)
Feasible
Region
Not Extreme
Points
Punto Extremo
• En un espacio n-dimensional, un punto
extremo está localizado en la intersección
de n restricciones
Puntos Extremos y óptimos
c
Punto de Inicio
• Tenemos un problema de maximización,
así que queremos ir tan lejos como sea
posible en la dirección del vector c
(función objetivo)
• ¿Podemos determinar algo sobre la
ubicación del punto óptimo?
Puntos Extremos y óptimos
c
• Si iniciamos en una línea, podemos
movernos a lo largo de la línea en la
dirección de la función objetivo hasta
llegar a un vértice
• De hecho, para cualquier vector c, el
punto óptimo siempre será en un vértice
Soluciones Básicas Factibles
(Basic Feasible Solutions, BFS)
• En un espacio n-dimensional, una BFS es
formada por la intersección de n
ecuaciones.
Solución
• En 2-D:
Básica Factible
Restricción 1
Restricción 2
• Pero, solo vimos que un punto extremo es
también el punto en un vértice. Entonces, una
BFS corresponde a un EP.
Enlazándolos
• Acabamos de ver que una solución básica
factible corresponde a un punto extremo.
• Esto es muy importante porque para los
problemas de LP , el punto óptimo es
siempre un punto extremo.
• Entonces, si podemos resolver para todos
las BFS's (EP's), podemos comprarlos
para encontrar el óptimo.
Desafortunadamente, esto toma mucho
tiempo.
Introducción al Método
Simplex
• El método simplex es el método más
común para resolver problemas de LP.
• Trabaja encontrando una BFS;
determinando si ésta es óptima; y si no lo
es, se mueve a una "mejor" BFS hasta
que la óptima es alcanzada.
• De esta manera, no tenemos que calcular
cada solución.
Álgebra del Método Simplex
1
1
Recuerda:xB  B NxN  B b
 x B   B1a j x j B1b
jN
Suma global de las
variables no básicas
Función Objetivo:
f  cx  cB x B  c N x N
sustituir xB  B1b   B1a j x j en la ecuación de arriba:
jN
f  c B (B1b   B1a j x j )   c j x j
jN
jN
Álgebra del Método Simplex
Multiplica y colecta términos xj:
f  c B B1b   (c j  c B B1a j ) x j
jN
 f  c B B1b   (c j  z j ) x j
jN
donde z j  c B B1a j
Ecuaciones del Método
Simplex
Minimiza
f  c B B1b   (c j  z j ) x j
jN
Sujeta a:
x B   B1a j x j B1b
jN
Si (cj – zj) ≥ 0 para todo j  N, entonces la
BSF actual es optima para un problema
de minimización.
Porque, si fuera < 0 para cualquier j, esa
variable no básica, xj, podría entrar la
base y reducir la función objetivo.
Variables Entrantes
• Una variable no básica puede entrar en la
base y reemplazar una de las variables
básicas
• Puesto que xN = 0, y no tenemos
restricciones no negativas, la variable
entrante debe incrementar su valor.
• El valor de la variable entrante se
incrementará, reduciendo la función
objetivo, hasta que una restricción sea
cumplida.
Ecuación de Variable
Entrante
• La ecuación para determinar cual variable
entra es:
c j  cTBB1a j  c j  z. j Calculada para
todos los índices no básicos j
• Para un problema de minimización, elige el
índice j para el que cj - zj es el más negativo
– Si cj - zj ≥ 0 para todo j, la solución es óptima
• Para un problema de maximización, elige el
índice j para el que cj - zj es el más positivo
– Si cj - zj ≤ 0 para todo j, la solución es óptima
Variables salientes (Leaving
Variables)
• Mientras el valor de la variable entrante se
incrementa, usualmente el valor de al
menos una variable básica decrecerá
– Si no, el problema es llamado "no ligado" y el
valor de la función mínima objetivo es -
• La variable cuyo valor alcanza el cero
primero será la variable que deja la base
Variable Entrantes y
Salientes
• Ejemplo: x1 está entrando en la base
mientras que x2, x3 y x4 son las
variables básicas actuales
x4
x3
x2
x1
Cuando x2 llegue a cero, debemos parar dsebido a
las restricciones no negativas. Pero, ahora x2 =
0, así que es una variable no básica y x1 > 0, así
que es una variable básica. Entonces, x2 deja la
base y x1 entra en la base.
Ecuación de Variable
Saliente
• Consideremos a j como el índice de la
variable que está entrando a la base y a i*
como el índice de la variable que está
dejando la base
1


( B b) i
*
1 j
i  argmin 1 j ( B a )i  0
 ( B a )i

Esto significa que, para cada índice i que
1 j
(
B
a )i  0 , se
esté en la base
y
que
tenga
(B 1b)i
calcula 1 j . El índice del valor que es el
(B a ) i
mínimo es el índice de la variable saliente.
Ecuación de Variable
Saliente
La expresión previa es obtenida de la
ecuación:
1
1
xB  B b  B a x j  0
j
que aplica cuando una restricción es cumplida
El Ejemplo Revisado
x4
x3
x2
-1
x1
• x2, x3, y x4 inician en (B b)i ; (i=2, 3, 4) y tienen
-1
pendientes de (–B aj)i ; (i=2, 3, 4) donde j=1
porque 1 es el índice de la variable entrante (x1)
• Entonces, la distancia a la que podemos ir antes
de que la variable básica alcance el valor de
-1
-1
cero es (B b) (B a ) para B a1 > 0. Pero, si (B a1)i <
0 (como x3), nunca alcanzará el cero.
1
i
1 1
i
El Ejemplo Revisado
x4
x3
x2
x1
• Podemos también ver como, si ninguna de
las variables decrece, podemos mantener
x1 incrementándose y mejorar la función
objetivo sin siquiera cumplir una
restricción –Esto da una solución
desligada
Problema de Ejemplo
Minimizar f = -x1 – x2
Sujeta a:
x 1 + x2 ≤ 5
2x1 – x2 ≤ 4
x1
≤3
; x1, x2 ≥ 0
Dados: La base inicial es x1, x2, y x3.
Insertar variables flojas x3, x4, y x5.
Ejemplo
Minimizar f = -x1 – x2
Sujeta a:
x 1 + x2 + x 3
=5
2x1 – x2
+ x4 = 4
x1
x5 = 3
x1, x2, x3, x4, x5 ≥ 0
1 1 1 0 0


A   2 1 0 1 0
1 0 0 0 1


5
 
b   4
 3
 
c  1 1 0 0 0
Ejemplo
1a Iteración:

B  a1 a 2
1 1 1


3
a   2 1 0
1 0 0



1  5   3 
0 0

   
1
x B  B b   0  1 2  4    2 
 1 1  3  3   0 

   
1
1 
1 1 1
0 0




1
B   2 1 0   0 1 2 
 1 0 0
 1 1  3




 3
 
f  c B x B   1  1 0  2   5
0
 
Ejemplo
Ahora, revisa la optimización
1  0 
0 0

 
1 4
x4: c4  c B B a  0   1  1 0 0  1 2  1   0  1  1
 1 1  3  0 

 
<0
1  0 
0 0

 
1 5
x5: c5  c B B a  0   1  1 0 0  1 2  0   0  (3)  3
 1 1  3  1 

 
>0
Ejemplo
Entonces, x4 entra a la base puesto que su
indicador de optimización es < 0.
 3
 
1
( B b)   2 
0
 
1
 ( B b)1  3 ( B b)2  2
1
1
& ( B b)3  0
1  0   0 
0 0

   
1 j
1 4
j  4  B a  B a   0  1 2  1     1
 1 1  3  0   1 

   
Ejemplo
1
( B b)1  3
1 4
1
( B b)2  2
1 4
( B a )1  0 ( B a ) 2  1
0
1
(B b)3  0
( B1a 4 )3  1
0

0

1


(
B
b) i
*
1 j
i  argmin 1 j ( B a )i  0  argmin N / A N / A 0  3
1
(
B
a
)
i


Entonces, x3 es la variable saliente
Ejemplo
2a
Iteración:
1 1 0


B   2 1 1 
1 0 0


a4 ha sido
sustituida por
a3
0 0
 0 0 1  5   3 

   
1
x B  B b   1 0  1  4    2 
 1 1  3  3   0 

   
1 


1
B   1 0 1
 1 1  3


 3
 
f  c B x B   1  1 0  2   5
0
 
Ejemplo
Indicadores de Optimización:
 0 0 1  1 

 
1 3
x3: c3  c B B a  0   1  1 0 1 0  1  0   0  (1)  1  0
 1 1  3  0 

 
 0 0 1  0 

 
1 5
x5: c5  c B B a  0   1  1 0 1 0  1  0   0  0  0  0
 1 1  3  1 

 
Solución al Ejemplo
Todos los indicadores son ≥ 0, así que esta
es la solución óptima.
f *  5
Entonces,
 x1   3 
   
*
x B   x2    2 
 x  0
 4  
 x3   0 
x      
 x5   0 
*
N
Pasos del Algoritmo Simplex
1. Con la base elegida, obtén B y resuelve
xB = B-1b y f = cBxB.
2. Calcula cj – zj para todas las variables no
básicas, j.
– Para un problema de min., si todo cj – zj’s are
≥ 0, la solución actual es óptima. Si no, elige
el índice con el cj – zj mas negativo.
– Para un problema de max., si todos los cj –
zj's son ≤ 0, la solución actual es óptima. Si
no es así, elige el índice con el cj – zj más
positivo.
Pasos del Algoritmo Simplex
 ( B 1b)i

1 j
i  argmin 1 j ( B a )i  0
 ( B a )i

3. Usando la ecuación
elige la variable saliente.
*
-1 j
– Si todos los (B a )i’s son ≤ 0, entonces la
solución es desligada
4. Deja que xj entre a la base y que xi* deje
la base. Obtén la nueva matriz B y
comienza nuevamente con el paso 1.
Eligiendo una Base Inicial
•
•
En el ejemplo, se nos dio una base
inicial. ¿Cómo podemos obtener una por
nosotros mismos?
Caso #1: problema de max (o min) con
1. Ax ≤ b (todas desigualdades≤ ) y
2. Todas las entradas del vector b son ≥ 0.
Inserta variables flojas en las ecuaciones de
restricción y usa la matriz de identidad
resultante como la base inicial
Eligiendo una Base Inicial
Consideremos s = vector de variables flojas
El problema se convertirá en
max

 f  cx  0s
 min
Ax  Is  b
Sujeta a
x  0, s  0
0 ... 0 0
1 ... 0 0


0 ... 1 0
0 ... 0 1
...
...
1
0

Donde I = La matriz de Identidad  

0
0
Eligiendo una Base Inicial
Elige las variables flojas como la base inicial
La matriz base inicial(B) está conformada
por los coeficientes de las variables flojas.
Esto es la matriz de identidad.
Podemos observar que la base inicial es
factible
BI
(xB ≥ 0):
1
1
x B  B b  I b  Ib  b  0
Problema #2 de Ejemplo
Minimizar -x1 – 3x2
Sujeta a
2x1 + 3x2 ≤ 6
-x1 + x2 ≤ 1
x 1, x 2 ≥ 0
Inserta variables flojas:
Matriz de
2x1 + 3x2 + x3 = 6 Identidad
-x1 + x2 + x4 = 1
0
x1, x2, x3, x4 ≥ 0
 2 3 1 0
A


1
1
0
1


6 
b 
1
c  1  3 0 0
Ejemplo #2
Usa las variables flojas como la base inicial:

B a
3

1 0
a 

0
1


4
1
&
1 0 6 6
xB  B b  
 



0 1 1 1
1
1 0
1 0 
B 



0
1
0
1




1
6
f  c B x B  0 0   0
1
Ejemplo #2
Indicadores de Optimización:
1 0  2 
 1  0  1
j=1: c1  z1  c1  cB B a  1  0 0



0 1  1
1 1
1 0 3
 3  0  3
j=2: c2  z2  c2  cB B a  3  0 0



0 1 1
1 2
c2 - z2 es el más negativo, así que x2 entra a
la base
Ejemplo #2
6
( B b)   
1
 ( B 1b)3  6
1
& ( B1b)4  1
x2 está entrado a la base
1 0 3 3
j 2B a B a  
 



0 1 1 1
1
j
1 2
Ejemplo #2
1
(B b)3  6
1 2
( B a )3  3
( B 1b) 4  1
1 2
(B a )4  1

1


(
B
b) i
*
1 j
i  argmin 1 j ( B a )i  0  argmin 6
3
 ( B a )i


1  argmin2 1  4
1
Entonces, x4 es la variable saliente.
Ejemplo #2
2a Iteración:
x2 reemplazó a x4

B a
3

1 3
a 

0
1


2
1  3 6 3
xB  B b  
 



0 1  1 1
1
1
1 3
1  3
B 



0
1
0
1




1
3
f  c B x B  0  3   3
1
Ejemplo #2
Indicadores de Optimización:
1  3  2 
 1  3  4
j=1: c1  z1  c1  cB B a  1  0  3



0 1   1
1 1
1  3 0
j=4: c4  z4  c4  cB B a  0  0  3
 0  (3)  3



0 1  1
1 4
Entonces, x1 entra a la base
Ejemplo #2
Variable Saliente:
3
( B b)   
1
1
1
1
(B b)3  3 & ( B b)2  1
1  3  2   5 
j 1 B a  
 



0 1   1  1
1
0
j

1


(
B
b) i
*
1 j
i  argmin 1 j ( B a )i  0  argmin 3
5
 ( B a )i


N/ A 3
Entonces, x3 deja la base y x1 lo reemplaza.
Ejemplo #2
3a Iteración:

B a
1

 2 3
a 

 1 1
2
1
 2 3
0.2  0.6
B 




1
1
0
.
2
0
.
4




1
0.2  0.6 6 0.6
xB  B b  
 



0.2 0.4  1 1.6 
1
0.6
f  c B x B   1  3   5.4
1.6 
Ejemplo #2
Indicadores de Optimización:
j=3:
0.2  0.6 1
c3  z3  c3  cB B a  0   1  3
 0  (0.8)  0.8



0.2 0.4  0
j=4:
0.2  0.6 0
c4  z4  c4  cB B a  0   1  3
 0  (0.6)  0.6



0.2 0.4  1
1 3
1 4
Ambos cj-zj’s son ≥ 0, entonces la solución
actual es óptima
x*  0.6 1.6 0 0
f *  5.4
Ejemplo #2
Esta gráfica muestra el procedimiento seguido.
Las líneas punteadas son perpendiculares al
vector de costo, c.
x2
 0 .6 
1.6 
 
0 
1 
 
c en aumento
0 
0 
 
x1
Ejemplo #2
• Puesto que estamos minimizando, fuimos
en la dirección opuesta como el vector
costo
x2
 0 .6 
1.6 
 
0 
1 
 
C en aumento
0 
0 
 
x1
Más sobre Bases Iniciales
•
Caso #2: problema de max (o min) con:
1. Ax ≥ b (al menos algunas restricciones ≥) y
2. Todas las entradas del vector b son ≥ 0
Suma variables flojas para convertir el
problema en
Ax – Is = b
x, s ≥ 0.
No podemos usar el mismo truco que antes
porque ahora tenemos una matriz de
identidad negativa como matriz B.
Caso #2
continuación
• Método de 2 fases:
Introduce “variables artificiales” (y) donde se
requiera obtener una matriz de identidad.
Si todas las restricciones fueran ≥, el
problema se convertiría en:
Ax – Is + Iy = b
x, s, y ≥ 0
Variables Artificiales
• Las variables artificiales no son variables
reales.
• Las usamos solo para obtener una base
inicial, así que debemos deshacernos de
ellas.
• Para deshacernos de ellas, resolvemos un
problema extra de optimización antes de
comenzar a resolver el problema normal.
Método de 2 Fases
Fase 1:
Resuelve la siguiente LP comenzando con
B = I y xB = y = b:
Minimiza y
Sujeta a: Ax – Is + Iy = b
x, s, y ≥ 0
Si y  0 en el punto óptimo, detente – el
problema no es factible. Si y = 0,
entonces usa la base actual y continua
con la fase 2.
Método de 2 Fases
Continuación
Fase 2:
Usando la función objetivo del problema
original, cambia el vector c y continua
resolviendo usando la base actual.
Minimiza (o Maximiza) cx
Sujeta a:
Ax – Is = b x, s ≥ 0
Variables Artificiales vs.
flojas
• Las variables flojas son variables reales que
pueden ser positivas en una solución óptima, lo
que significa que su restricción es una
desigualdad estricta (< o >) en el punto óptimo.
• Las variables artificiales no son variables
reales. Éstas están solo insertadas para darnos
una base inicial para comenzar el método
simplex. Se deben volver cero para tener una
solución factible del problema original.
Ejemplo 1 de Variable
Artificial (AV)
• Considera las restricciones:
x1 + 2x2 ≥ 4
-3x1 + 4x2 ≥ 5
2x1 + x2 ≤ 6
x1, x2 ≥ 0
• Introduce variables flojas:
x1 + 2x2 – x3
=4
-3x1 + 4x2
– x4
=5
2x1 + x2
+ x5 = 6
Ejemplo 1. AV
Como observamos, no podemos obtener
una matriz de identidad en los coeficientes
ni números positivos en el lado derecho.
Necesitamos agregar variables artificiales:
x1 + 2x2 – x3
+ y1
=4
-3x1 + 4x2
– x4
+ y2 = 5
2x1 + x2
+ x5
=6
Ejemplo 1. AV
Ahora tenemos una matriz de identidad,
hecha de las columnas de coeficientes de
y1, y2, y x5.
Resolveremos el problema con el objetivo
de minimizar y1 + y2 para librarnos de las
variables artificiales, después usamos
cualquier base que obtengamos y
continuamos resolviendo, usando la
función objetivo original.
Ejemplo 2 de Variable
Artificial (AV)
• Considera las restricciones:
x1 + 2x2 – 5x3 ≥ -4
3x1 – x2 + 3x3 ≤ 2
-x1 + x2 + x3 = -1
x1, x2, x3 ≥ 0
• Introduce variables flojas:
x1 + 2x2 – 5x3 – x4
= -4
3x1 – x2 + 3x3
+ x5 = 2
-x1 + x2 + x3
= -1
Ejemplo 2 de AV
No tenemos que agregar variables artificiales
para la primera restricción si multiplicamos por
-1.
Cuando multiplicamos la última restricción por -1
y agregamos una variable artificial, tenemos:
-x1 – 2x2 + 5x3 + x4
=4
3x1 – x2 + 3x3
+ x5
=2
x1 – x2 – x3
+ y1 = 1
x1, x2, x3, x4, x5, y1 ≥ 0
Manipulación de
Restricciones
Entonces, después de agregar variables
flojas, debemos hacer que los números
del lado derecho sean positivos. Así que
agregamos variables artificiales si las
necesitamos.
Ejemplo 3 de Variable
Artificial (AV)
• Considera el problema:
Maximizar -x1 + 8x2
Sujeta a:
x1 + x2 ≥ 1
-x1 + 6x2 ≤ 3
x2 ≤ 2
x1, x2 ≥ 0
Ejemplo 3 de AV
Inserta variables flojas:
x1 + x2 – x3
=1
-x1 + 6x2 + x4
=3
x2
+ x5 = 2
Ahora necesitamos una variable artificial en
la 1a restricción.
Ejemplo 3 de AV
Inserta una variable artificial:
x 1 + x2 – x 3
+ y1 = 1
-x1 + 6x2
+ x4
=3
x2
+ x5
=2
Ejemplo 3 de AV
Entonces, la Fase 1 es:
Minimizar y1
Sujeta a: x1 + x2 – x3
+ y1 = 1
-x1 + 6x2 + x4
=3
x2
+ x5
=2
Nuestra base inicial es: y1, x4, y x5.
Ejemplo 3 de AV
1 
b  3
2
c  0 0 0 0 0 1

B  a6
a4
1 0 0 
a 5  0 1 0
0 0 1

1
1 0 0
1 0 0
0 1 0   0 1 0 
1
B

&




0 0 1
0 0 1
1 0 0 1 1 
x B  B 1b  0 1 0 3  3
0 0 1 2 2
1 
f  c B x B  1 0 03  1
2
Ejemplo 3 de AV
Indicadores de Optimización:
1 0 0  1 
j=1: c1  z1  c1  cB B 1a1  0  1 0 00 1 0  1  0  1  1
0 0 1  0 
1 0 0 1
j=2: c2  z 2  c2  cB B 1a 2  0  1 0 00 1 0 6  0  1  1

 
0 0 1 1
1 0 0  1
0 1 0   0   0  1  1
1 3


c

z

c

c
B
a

0

1
0
0
j=3: 3 3 3 B

 
0 0 1  0 
Ejemplo 3 de AV
Es un vínculo entre x1 y x2 – elige x1 para
entrar a la base
1   (B1b)  1
6
1


1
(B b)4  3
(B b )   3 
& (B1b)5  2
 2
x1 está entrando a la base
1 0 0  1   1 
j  1  B 1a j  B 1a1  0 1 0  1   1
0 0 1  0   0 
Ejemplo 3 de AV
1
( B b)6  1
1 2
( B a )6  1
1
(B b)5  2
1
( B b)4  3
1 2
( B a ) 4  1
0
1 2
( B a )5  0
0
0
1


(
B
b) i
1

*
1 j
i  argmin 1 j ( B a )i  0  argmin N / A N / A  6
1

 ( B a )i

Así que x1 reemplaza a y1 en la base
Ejemplo 3 de AV

B  a1 a 4
 1 0 0
a 5   1 1 0
 0 0 1

1 0 0 1 1 
x B  B 1b  1 1 0 3  4
0 0 1 2 2
1
 1 0 0
1 0 0
B 1   1 1 0  1 1 0
 0 0 1
0 0 1
1 
f  c B x B  0 0 04  0
2
Ejemplo 3 de AV
Indicadores de Optimización:
1 0 0 1
1 1 0 6  0  0  0
1 2


c

z

c

c
B
a

0

0
0
0
j=2: 2 2 2 B

 
0 0 1 1
1 0 0  1
1 1 0  0   0  0  0
1 3


c

z

c

c
B
a

0

0
0
0
j=3: 3 3 3 B

 
0 0 1  0 
1 0 0   1 
j=6: c1  z1  c1  cB B 1a1  0  0 0 01 1 0  1  0  0  0
0 0 1  0 
Ejemplo 3 de AV
Todos los indicadores de optimización son ≥
0, así que esta es una solución óptima.
Entonces, mantenemos esta base y
cambiamos la función objetivo por la
original:
Maximizar –x1 + 8x2
Nuestra base todavía es x1, x4, y x5.
Ejemplo 3 de AV
Volviendo al problema original:
c  1 8 0 0 0
1 0 0
B 1  1 1 0
0 0 1
La base sigue
siendo la misma
1 
x B  B 1b  4
2
1 
f  c B x B   1 0 04  1
2
Ejemplo 3 de AV
Indicadores de Optimización:
1 0 0 1
j=2: c2  z2  c2  cB B 1a 2  8   1 0 01 1 0 6  8  1  7
0 0 1 1
1 0 0  1
j=3: c3  z3  c3  cB B 1a 3  0   1 0 01 1 0  0   0  1  1
0 0 1  0 
Puesto que estamos maximizando, buscamos
el más positivo. Entonces, x2 entra en la base.
Ejemplo 3 de AV
1 
1

(
B
b
)

1
1


1
(B 1b )   4
(B b)4  4
1
&
(
B
b)5  2
 2
x2 está entrando a la base
1 0 0 1 1
j  2  B 1a j  B 1a 2  1 1 0 6  7
0 0 1 1 1
Ejemplo 3 de AV
1
( B b)5  1
1 2
( B a )1  1
1
( B b)4  4
1 2
(B a )4  7
1
(B b)5  2
1 2
( B a )5  1
1


(
B
b) i
1 4
*
1 j
i  argmin 1 j ( B a )i  0  argmin
1 7
 ( B a )i

2
4
1
Mínimo
De este modo x4 deja la base
Ejemplo 3 de AV
Indicadores de Optimización:
j=3:
 0.857  0.143 0  1
c3  z3  c3  cB B 1a 3  0   1 0 0 0.143 0.143 0  0   0.857
 0.143  0.143 1  0 
j=4:
 0.857  0.143 0 0
c4  z 4  c4  cB B 1a 4  0   1 0 0 0.143 0.143 0 1  0  0  0
 0.143  0.143 1 0
Ejemplo 3 de AV

B  a1 a 2
 1 1 0
a 5   1 6 0
 0 1 1

 0.856  0.143 0
B 1   0.143 0.143 0
 0.143  0.143 1
 0.856  0.143 0 1  0.429
x B  B 1b   0.143 0.143 0 3   0.571
 0.143  0.143 1 2 1.429
0.429
f  c B x B   1 8 0 0.571  4.143
1.429
Ejemplo 3 de Variable
Artificial
Todos los indicadores de optimización son ≤
0, por lo tanto esta es la solución óptima:
0.429
 0.571


x*   0 


 0 
1.429
f *  4.143
Condiciones KKT
• Las condiciones Karush-Kuhn-Tucker
(KKT) pueden ser usadas para ver la
optimización gráficamente
• Las usaremos más posteriormente en
programación no linear, pero podemos
usar una versión simplificada aquí
Condiciones KKT para LP
• Cambia las restricciones para que todas
ellas sean restricciones ≥.
• El punto óptimo es el punto donde el
gradiente de la función objetivo se
encuentra dentro del cono formado por los
vectores normal a las restricciones que se
intersectan.
Condiciones KKT
• Recordatorio:
– El gradiente () de una función f con n
variables es calculada como sigue:
 f
f
f 
f   ,
, ...

xn 
 x1 x2
Ejemplo:
f  3( x1 )2  5x2 x3
f  6 x1 , 5x3 , 5x2 
Ejemplo de Restricciones
KKT
• Ejemplo: En el problema #2 de ejemplo,
tenemos el problema:
Minimizar f = -x1 – 3x2
Sujeta a: 2x1 + 3x2 ≤ 6
-x1 + x2 ≤ 1
x1, x2 ≥ 0
El gradiente de la función de costo, -x1 – 3x2
es:
f  c   1,  3
Ejemplo KKT
Previamente, vimos que este problema luce
como sigue:
x2
Restricción 2
(3/5, 8/5)
Puntos
Extremos
(0, 1)
(0, 0)
Restricción 1
(3, 0)
x1
Ejemplo KKT
Cambia todas las restricciones para que
sean ≥:
g1:
-2x1 – 3x2 ≥ -1
g2:
x1 – x2 ≥ -1
g3:
x1
≥ 0
g4:
x2 ≥ 0
Ejemplo KKT
Los gradientes de las cuatro restricciones
(contando las restricciones no negativas),
g1, …, g4 son:
g1   2,  3
g3  1, 0
g2  1, 1
g 4  0, 1
Ejemplo KKT
La gráfica del problema con las normales de
las restricciones se convierte en:
x2
Restricción 2
(0, 1)
(3/5, 8/5)
g1
g3
El gradiente correspondiente a
cada restricción (gi) es
perpendicular a la restricción i.
g2
Restricción 1
g2
g4
g4
(3, 0)
(0, 0)
g3
g1
x1
Ejemplo KKT
c = (-1, -3) se ve así:
Entonces, cualquier cono en el que este
vector encaje corresponde al punto
extremo óptimo.
Ejemplo KKT
x2
¡Encaja!
(3/5, 8/5)
No encaja
(0, 1)
g1
g3
g2
g2
g4
g4
(3, 0)
(0, 0)
No encaja
g3
g1
No encaja
x1
Ejemplo KKT
• De esta manera, obtenemos el mismo
punto óptimo que cuando usamos el
método simplex
• Éste método también puede usarse para
problemas con tres variables en un
espacio 3-D
• Con cuatro variables o más, la
visualización no es posible y es necesario
usar la definición matemática
Definición Matemática de las
Condiciones KKT para LP
Dado un problema de minimización de LP:
Modificar las restricciones de manera que
tengamos:
i  1 m
gi (x)  0,
Donde gi(x) es la ecuación lineal de restricción i.
La bi que estaba en el lado derecho del signo de
desigualdad es movida al lado izquierdo e
incluida en gi.
Definición Matemática de las
Condiciones KKT para LP
Si existe una solución para x* y las i’s para
las condiciones de abajo, entonces x* es
el óptimo global
f  c  1  g1 (x )   m  gm (x )
Ecuación 1
i  gi (x* )  0, i  1 m
Ecuación 2
gi (x )  0,
i  1 m
Ecuación 3
i  0,
i  1 m
Ecuación 4
*
*
*
Explicación de la Ecuación 1
• La Ecuación 1 establece matemáticamente
que el vector de la función objetivo debe
hallarse dentro del cono formado por los
vectores normales a las restricciones
activas en el punto óptimo
Explicación de la Ecuación 2
• La Ecuación 2 fuerza a i a ser cero para
todas las restricciones inactivas – llamada
la condición de “soltura complementaria”
– Si la restricción es activa, gi(x*) = 0, entonces
i puede ser positiva y gi será parte del cono
en la Ecuación 1.
– Si la restricción es inactiva, gi(x*)  0,
entonces i debe ser cero. gi no será
incluida en el cono en la Ecuación 1 porque
será multiplicada por cero.
Explicación de las Ecuaciones 3
y4
• La Ecuación 3 asegura que x* es factible
• La Ecuación 4 asegura que la dirección
del cono es correcta.
– Si las i’s fueran negativas, el cono estaría en
la dirección opuesta. Entonces, esta ecuación
previene que eso suceda.
Resumen de Condiciones
KKT
• Las condiciones KKT no son útiles al
resolver para puntos óptimos, pero
pueden ser usadas para revisar
optimización y pueden ayudarnos a
visualizar la optimización
• Las usaremos frecuentemente al tratar
problemas de optimización no lineal in la
siguiente sección
Solvers de LP Automatizados
• Existen muchos programas de software
disponibles que resolverán
numéricamente los problemas de LP
• Microsoft Excel es un programa que
resuelve problemas LP
– Para ver los ejemplos de Excel para
problemas de optimización, busca y abre el
archivo "solvsamp.xls" (debe estar incluido en
la instalación estándar de Microsoft Office)
Ejemplo #1 de LP en Excel
Resolvamos el primer ejemplo en este
capítulo con Excel
El problema era:
Minimizar f = -x1 – x2
Sujeta a:
x 1 + x2 ≤ 5
2x1 – x2 ≤ 4
x1
≤3
; x1, x2 ≥ 0
Ejemplo #1 de LP en Excel
Aquí está la hoja de cálculo de Excel con los
datos necesarios:
x1
0
x2
0
Función Objetivo:
Restricción 1:
Restricción 2:
Restricción 3:
valor
=-A2-B2
límite
=A2+B2
=2*A2-B2
=A2
5
4
3
En la hoja de cálculo, A2 es la celda de
referencia para x1 y B2 es la referencia para x2
Ejemplo #1 de LP en Excel
x1
0
x2
0
Función Objetivo:
Restricción 1:
Restricción 2:
Restricción 3:
valor
=-A2-B2
límite
=A2+B2
=2*A2-B2
=A2
5
4
3
Puedes ver que bajo el encabezado "valor"
para las restricciones y función objetivo,
simplemente usamos las funciones dadas
para calcular el valor de la función
Ejemplo #1 de LP en Excel
x1
0
x2
0
Función Objetivo:
Restricción 1:
Restricción 2:
Restricción 3:
valor
=-A2-B2
límite
=A2+B2
=2*A2-B2
=A2
5
4
3
En el lado derecho de las restricciones, en
la columna de "límite", escribimos el valor
de “bi” para esa restricción
Obviamente, la función objetivo no tiene un
límite
Ejemplo #1 de LP en Excel
Entonces, la hoja de cálculo se ve así:
Ejemplo #1 de LP en Excel
• Ahora, necesitamos usar la función solver
de Excel
• Busca "solver" en el menú Herramientas
– Si no está ahí, ve a “complementos” (Add-Ins)
en el menú herramientas (Tools) y selecciona
Solver.
Ejemplo #1 de LP en Excel
La ventana del Solver debe parecerse a
esta:
Ejemplo #1 de LP en Excel
• Este es un problema de minimización,l
entonces selecciona “Mínimo” (Min) y
establece la "celda objetivo" (Set target
cell) como el valor de la función objetivo
• Las variables son x1 y x2, entonces en el
cuadro "Cambiando las celdas" (By
Changing Cells), selecciona A2 y B2
Ejemplo #1 de LP en Excel
• Ahora agrega las restricciones:
– Para la "Celda de Referencia" (Cell
Reference), usa el valor de la función de
restricción y para la "Restricción" (Constraint),
usa el número en la columna de Límite
– Las restricciones son todas ≤, así que debes
asegurarte de que “<=“ aparece entre la
Celda de Referencia y los cuadros de
Restricción
Ejemplo #1 de LP en Excel
• Ahora, la ventana de Solver debe lucir así:
Ejemplo #1 de LP en Excel
• Finalmente, presiona el botón Opciones
(Options)
• Todas las variables están especificadas
como positivas, así que selecciona el
recuadro "Asumir no negativos" (Assume
Non-Negative)
Ejemplo #1 de LP en Excel
• Puesto que este es un problema de LP,
selecciona el recuadro "Adoptar Modelo
Lineal" (Assume Linear Model)
• Finalmente, la tolerancia por default de
5% es por lo general demasiado grande. A
menos que el problema sea muy difícil,
una tolerancia de 1% o incluso 0.1% está
usualmente bien.
Ejemplo #1 de LP en Excel
• Da click en "Resolver" (Solve) y la ventana
de Resultados de Solver debe aparecer
• Bajo "Informes" (Reports), selecciona
Respuestas (Answer Report) y presiona
Aceptar (OK)
• Una nueva hoja de cálculo que contiene el
Informe de Respuestas (Answer Report)
se ha agregado al archivo
Ejemplo #1 de LP en Excel
• La hoja de cálculo con los valores óptimos
debe verse así:
Ejemplo #1 de LP en Excel
• Los valores para x1 y x2 son los mismos
que cuando resolvimos el problema
usando el método simplex
• También, si observas el Informe de
Respuestas (Answer Report) puedes ver
que todas las variables flojas son iguales
a cero, que es lo que también obtuvimos
con el método simplex
Ejemplo #2 de LP en Excel
Vamos a resolver otro problema de LP con
Excel:
Maximizar 5x1 – 2x2 + x3
Sujeta a:
2x1 + 4x2 + x3 ≤ 6
2x1 + x2 + 3x3 ≥ 2
x1, x2 ≥ 0
x3 no restringida en signo
Ejemplo #2 en Excel
La hoja de cálculo con las ecuaciones debe
quedar como sigue:
x1
0
x2
0
x3
0
Límite
Función Objetivo:
Valor
=5*A2-2*B2+C2
Restricción 1:
Restricción 2:
=2*A2+4*B2+C2
=2*A2+B2+3*C2
6
2
Ejemplo #2 en Excel
A diferencia del último ejemplo, no se
especificó que todas las variables sean
positivas, ase que no podemos usar la
opción "Asumir no negativos" (Assume
Non-Negative) para todas las variables.
Entonces tenemos que especificar
manualmente que x1 y x2 son no negativas
agregando dos restricciones mas
Ejemplo #2 en Excel
Ahora, las fórmulas en la hoja de cálculo
deben verse así:
x1
0
x2
0
x3
0
Límite
Función Objetivo:
Valor
=5*A2-2*B2+C2
Restricción
Restricción
Restricción
Restricción
=2*A2+4*B2+C2
=2*A2+B2+3*C2
=A2
=B2
6
2
0
0
1:
2:
3:
4:
Ejemplo #2 en Excel
Ahora, abre la ventana de parámetros del
solver y especifica:
• La Celda Objetivo (Target Cell),
• El rango de celdas variables,
• Problema de Maximización
• Las restricciones
– La primera restricción es ≤ y el resto son ≥.
Ejemplo #2 en Excel
Presiona el botón de Opciones y selecciona
el recuadro de "Adoptar Modelo Lineal".
Recuerda, puesto que x3 no está restringida
en signo, no selecciones el recuadro de
"Asumir no negativos"
Puedes reducir la tolerancia si así lo deseas
Ejemplo #2 en Excel
La ventana del Solver debe verse como
sigue:
Ejemplo #2 en Excel
Después de resolver, la hoja de cálculo debe
lucir así:
Ejemplo #2 en Excel
• Nota que, debido a que x3 no estaba
restringida en signo, fue posible obtener
un valor negativo y esto mejoró la solución
• Para ver cuanta diferencia hace esto en la
solución, resuelve el problema ahora
seleccionando la opción "Asumir no
negativos"
Resolviendo Problemas de LP
con Excel
• De estos ejemplos, puedes ver que Excel
puede ser una herramienta eficiente para
usar al resolver problemas de
optimización de LP
• El método para resolver problemas que
fue descrito aquí es obviamente solo una
manera y el usuario debe sentirse libre
para experimentar y encontrar su propio
estilo
Referencias
• Linear Programming and Network Flows;
Bazaraa, Mokhtar; John Jarvis; & Hanif
Sherali.
• Optimization of Chemical Processes 2nd
Ed.; Edgar, Thomas; David Himmelblau; &
Leon Lasdon.
• Pollution Prevention Through Process
Integration; El-Halwagi, Mahmoud