Sei sulla pagina 1di 22

Programacion Lineal con Matlab

Arturo Vega Gonzalez


a.vega@ugto.mx
Division de Ciencias e Ingenieras
Universidad de Guanajuato
Campus Leon
Octubre 8, 2013
Universidad de Guanajuato, DCI, Campus Leon 1 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Contenido
1
Programacion Lineal
Metodo graco
Metodo algebraico / simplex
Universidad de Guanajuato, DCI, Campus Leon 2 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal
Programacion Lineal
La programacion lineal se aplica a modelos de optimizacion en los
que las funciones objetivo y restriccion son estrictamente lineales.
Para su solucion se cuenta con:
1
Metodo graco
2
Metodo algebraico
3
Metodo simplex
Universidad de Guanajuato, DCI, Campus Leon 3 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal
Ecuaciones Generales
Funcion objetivo a minimizar o maximizar
Z = c
1
x
1
+ c
2
x
2
+ c
3
x
3
+ ... + c
n
x
n
Restricciones (sujeta a:)
a
i1
x
1
+ a
i2
x
2
+ + a
in
x
n
= b
i
i = 1, 2, , p
a
i1
x
1
+ a
i2
x
2
+ + a
in
x
n
b
i
i = p + 1, , r
a
i1
x
1
+ a
i2
x
2
+ + a
in
x
n
b
i
i = r + 1, , m
x
j
0 j = 1, 2, , n
Universidad de Guanajuato, DCI, Campus Leon 4 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal
Ecuaciones Generales
Donde:
x
1
, x
2
, ..., x
n
: niveles de actividad sujetas a alguna manipulacion,
variables reales o variables de decision.
c
i
: coecientes de costo
a
ij
: coecientes estructurales
b
i
: disponibilidad de recursos
Universidad de Guanajuato, DCI, Campus Leon 5 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal Metodo graco
Metodo graco
Determinacion del espacio de soluciones que dene todas las
soluciones factibles del modelo.
Representacion graca de cada restriccion y determinar el
espacio que cumple con todas las restricciones.
Determinacion de la solucion optima, entre todos los puntos
factibles del espacio de soluciones.
1
Evaluar la funcion objetivo Z en cada una de las esquinas del
espacio de soluciones factibles.
2
Usando la funcion objetivo para determinar la esquina del
espacio de soluciones factible que la optimiza.
Universidad de Guanajuato, DCI, Campus Leon 6 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal Metodo graco
Metodo Graco (1)
Utilizando plot
pause on ;
x =1: 1: 7; % i n t e r v a l o par a ge ne r ar l a s r e c t a s
z =(215.x ) /4; % f unc i on a maxi mi zar
% r e s t r i c c i o n e s
R1 = (24 6. x ) /4;
R2 = (6x ) /2;
R3 = 1+x ;
f o r r =1: l e ngt h ( x ) % c ons t a nt e s
R4( r ) = 2;
R5( r ) = 0;
R6( r ) = 0;
end
%g r a f i c a de l a s f unc i o ne s c ons i de r ando i g ua l da de s
f i g u r e ( 1 ) ;
p l o t ( x , z , k ) ;
hol d on ;
p l o t ( x , R1, b , x , R2, b , x , R3, m , x , R4, m ) ;
p l o t ( R5 , x , r , x , R6, r ) ;
g r i d on
Universidad de Guanajuato, DCI, Campus Leon 7 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal Metodo graco
Metodo Graco (1)
Universidad de Guanajuato, DCI, Campus Leon 8 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal Metodo graco
Metodo Graco (1)
Universidad de Guanajuato, DCI, Campus Leon 9 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal Metodo graco
Metodo Graco (2)
Utilizando area y meshgrid
%pr obl ema de l a s p i n t u r a s
x = 0 : 8 ; % r ango par a l a g r a f i c a
y1 = max ( ( 24 6x ) / 4 , 0 ) ; % 6x + 4y <= 24
y2 = max((6x ) / 2 , 0 ) ; % x + 2y <= 6
y3 = max(1 + x , 0 ) ; % x + y <= 1
y4 = max(2 , 0) ones ( 1 , 9 ) ; % y <= 2
yt op = min ( [ y1 ; y2 ; y3 ; y4 ] ) ; % v e c t o r de mi ni mos
ar ea ( x , yt op ) ; % s e r e l l e n a l a ar ea
hol d on ;
[ u v ] = mes hgr i d ( 0 : 8 , 0 : 8 ) ; % r ango de l a g r a f i c a
cont our ( u , v , 5 u + 4v ) ; % e v a l ua r z en e l r ango de f i ndo
hol d o f f ;
Universidad de Guanajuato, DCI, Campus Leon 10 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal Metodo graco
Metodo Graco (2)
Universidad de Guanajuato, DCI, Campus Leon 11 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal Metodo algebraico / simplex
Usando linprog
El comando linprog del toolbox de optimizacion implementa el
algoritmo simplex
Soluciona problemas de la forma
Minimizar:
Z = c
1
x
1
+ c
2
x
2
+ c
3
x
3
+ ... + c
n
x
n
Restricciones (sujeta a:)
a
i1
x
1
+ a
i2
x
2
+ + a
in
x
n
b
i
i = 1, 2, , m
Universidad de Guanajuato, DCI, Campus Leon 12 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal Metodo algebraico / simplex
Usando linprog
Parametros
Minimizar:
Z = f x
Restricciones (sujeta a:)
A x b
f: vector con los coecientes costo c
i
A: Matriz con los coecientes estructurales a
ij
b: vector con la disponibilidad de recursos b
i
Universidad de Guanajuato, DCI, Campus Leon 13 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal Metodo algebraico / simplex
Ejemplo
Problema de las pinturas:
Maximizar:
Z = 5x
1
+ 4x
2
Restricciones (sujeta a:)
6x
1
+ 4x
2
24
x
1
+ 2x
2
6
x
1
+ x
2
1
x
2
2
x
j
0 j = 1, 2
Universidad de Guanajuato, DCI, Campus Leon 14 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal Metodo algebraico / simplex
Ejemplo
1
Si es problema de maximizacion se convierte en un problema de
minimizacion
Minimizar:
Z = 5x
1
4x
2
Restricciones (sujeta a:)
6x
1
+ 4x
2
24
x
1
+ 2x
2
6
x
1
+ x
2
1
x
2
2
x
j
0 j = 1, 2
Universidad de Guanajuato, DCI, Campus Leon 15 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal Metodo algebraico / simplex
Ejemplo
Codicacion: se denen los vectores y se invoca el comando
linprog
%pr obl ema de l a s p i n t u r a s
f = [ 5 4] ; % c o e f i c i e n t e s de c os t o (Z)
A=[6 4; 1 2; 1 1; 0 1; 1 0; 0 1] ; % r e s t r i c c i o n e s
b = [ 2 4 ; 6; 1; 2; 0; 0 ] ; % r e c u r s o s
r=l i n p r o g ( f , A, b ) ; % r c ont i e ne s o l . x i
Z = f r ; % v a l o r opti mo de Z ( gananci a )
Universidad de Guanajuato, DCI, Campus Leon 16 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal Metodo algebraico / simplex
Ejemplo
Salida
>> r
r =
3. 0000
1. 5000
>> Z
Z =
21. 0000
>>
Universidad de Guanajuato, DCI, Campus Leon 17 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal Metodo algebraico / simplex
Problema 1
Considere: Maximizar:
Z = x
1
+ x
2
Restricciones (sujeta a:)
5x
1
+ 3x
2
15
3x
1
+ 5x
2
15
x
j
0 j = 1, 2
1
Utilice Matlab para gracar las restricciones
2
Utilice linprog para encontrar la solucion
Universidad de Guanajuato, DCI, Campus Leon 18 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal Metodo algebraico / simplex
Problema 2
Considere: Maximizar:
Z = 143x
1
+ 60x
2
Restricciones (sujeta a:)
x
1
+ x
2
75
110x
1
+ 30x
2
4000
120x
1
+ 210x
2
15000
x
j
0 j = 1, 2
1
Utilice Matlab para gracar las restricciones
2
Utilice linprog para encontrar la solucion
Universidad de Guanajuato, DCI, Campus Leon 19 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal Metodo algebraico / simplex
Problema 3
Considere: Problema de la dieta (libro) Minimizar:
Z = 0.3x
1
+ 0.9x
2
Restricciones (sujeta a:)
x
1
+ x
2
800
0.21x
1
0.3x
2
0
0.03x
1
0.01x
2
15000
x
j
0 j = 1, 2
1
Utilice Matlab para gracar las restricciones
2
Utilice linprog para encontrar la solucion
Universidad de Guanajuato, DCI, Campus Leon 20 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal Metodo algebraico / simplex
Mas sobre linprog
Minimizar:
Z = f x
Restricciones (sujeta a:)
A x b
A
eq
x = b
eq
lb x ub
x = linprog(f,A,b,A
eq
,b
eq
,lb,ub)
x = linprog(f,A,b,A
eq
,b
eq
,lb,ub,x
0
)
x = linprog(f,A,b,A
eq
,b
eq
,lb,ub,x
0
,opciones)
Universidad de Guanajuato, DCI, Campus Leon 21 / 22
Programacion Lineal con Matlab
Octubre 8, 2013
Programacion Lineal Metodo algebraico / simplex
Mas sobre linprog
Minimizar:
Z = f x
Restricciones (sujeta a:)
A
eq
x = b
eq
x 0
x = linprog(f,[],[],A
eq
,b
eq
, zeros(size(f)),[])
Universidad de Guanajuato, DCI, Campus Leon 22 / 22
Programacion Lineal con Matlab
Octubre 8, 2013

Potrebbero piacerti anche