Académique Documents
Professionnel Documents
Culture Documents
Programacin Matemtica
f (x1 , x2 ) = x1 + 2x2 ,
x1 , x2 > 0
Programacin Matemtica
f (x, y, z) = x3 + 2y 2 + 4z 4 .
(%i1)
(%i2)
(%i3)
(%i4)
--load("vect")$
f:x^3+2*y^2+4*z^4$
H:hessian(f,[x,y,z]);
eigenvalues(H);
6x 0
4
Hf = 0
0
0
0
0
48z 2
f:x1*exp(-(x1+x2))$
H:hessian(f,[x1,x2]);
eigenvalues(H);
determinant(H);
expand(%);
x1 2
x1 1
x1 1
x1
Programacin Matemtica
f (x1 , x2 ) =
x1 + 2x2 ,
x1 , x2 > 0
Hf = p
(x1 + 2x2 )3 1
2
1
2
5
1
Los autovalores de la hessiana son 1 = p
y 2 = 0, como
4 (x1 + 2x2 )3
x1 , x2 > 0, entonces 1 < 0. Por tanto la funcin f es cncava en todo R2 .
Programacin Matemtica
(0, 1).
eay1 +by2 eax1 +bx2 ay1 + by2 ax1 + bx2 a(y1 x1 ) + b(y2 x2 ) 0. (1)
Si calculamos el vector gradiente de f en el punto x multiplicado por el
vector y x se obtiene:
f (x) (y x) = ae
= eax1 +bx2
y1 x1
be
y2 x2
a(y1 x1 ) + b(y2 x2 ) .
ax1 +bx2
ax1 +bx2
Programacin Matemtica
f (x1 , x2 ) = x1 + x2
x21 x2 0
s.a
2x1 + x2 3
2x1 3x2 + 5 0
2.
5
0
.2
5
0
0
0
Objetivo
R1
R2
R3
Programacin Matemtica
Programacin Matemtica
Ejercicio 4. Una empresa desea minimizar sus costes totales, con la condicin
de que los ingresos obtenidos por la venta de las cantidades x1 , x2 de los dos
productos que fabrica superen un cierto umbral mnimo. Sabiendo que los costes
unitarios de fabricacin de cada bien son funciones lineales de los outputs producidos de la forma C1 = x1 , C2 = 2x2 , que se vende todo lo que se produce y
que los precios de venta de los productos son, p1 = 1, p2 = 3, respectivamente,
se pide:
Formular el programa matemtico correspondiente, suponiendo que se deben ingresar, como mnimo, 3 unidades monetarias.
Resolver el programa utilizando las condiciones de Kuhn-Tucker y decir si
son condiciones necesarias y suficientes.
Estudiar cunto variara el coste ptimo con respecto a la situacin anterior si como mnimo deben ingresarse 2.8 unidades monetarias y si como
mnimo deben ingresarse 3.1 unidades monetarias.
De acuerdo al enunciado, el problema se podra modelar de forma general
como:
Min f (x1 , x2 , C1 , C2 ) = C1 x1 + C2 x2
p1 x1 + p2 x2 k,
S.a
x1 , x2 0
Si ahora incluimos los outputs del enunciado, los precios de venta, y el mnimo
de unidades que se quieren vender nuestro problema quedara como sigue:
Min
S.a
x21 + 2x22
x1 + 3x2 3,
x1 , x2 0
Programacin Matemtica
6
9
Resolviendo el resultado obtenemos un ptimo en el punto (x1 , x2 ) = ( 11
, 11
)
18
en el cual la funcin objetivo vale 11 = 1.636364. Adems, como la funcin
objetivo es estrictamente convexa y las funciones de restriccin son convexas
entonces las condiciones de Kuhn-Tucker son necesarias y suficientes.
Programacin Matemtica
Ejercicio 5. Minimizar
J=
N
X
(qx2i + ru2i ) + qx23
i=0
donde N = 2, q = 2, r = 4, a = 1, b = 0.5.
En primer lugar, se crea un vector de decisin con todas las variables de
estado y de control, esto es, un vector x = (x1 , x2 , x3 , u0 , u1 , u2 ) y se definen la
funcin objetivo y las condiciones dinmicas de estado para i = 0, . . . , N 1.
Luego construimos la funcin lagrangiana y la resolvemos en funcin de sus
multiplicadores de Lagrange, y, por ltimo se resuelve la dual lagrangiana para
obtener los valores ptimos de sus multiplicadores.
Con el siguiente cdigo de Maxima se puede resolver este problema:
(%i1) c0:2*x0^2+4*u0^2$
(%i2) c1:2*x1^2+4*u1^2$
(%i3) c2:2*x2^2+4*u2^2$
(%i4) J:c0+c1+c2+2*x3^2$
(%i5) h1:x1-x0-0.5*u0$
(%i6) h2:x2-x1-0.5*u1$
(%i7) L:J+l*h1+m*h2$
(%i8) Lu0:diff(L,u0,1)$
(%i9) Lu1:diff(L,u1,1)$
(%i10) Lu2:diff(L,u2,1)$
(%i11) Lx1:diff(L,x1,1)$
(%i12) Lx2:diff(L,x2,1)$
(%i13) Lx3:diff(L,x3,1)$
(%i14) sol1:algsys([Lu0,Lu1,Lu2,Lx1,Lx2,Lx3],[u0,u1,u2,x1,x2,x3]);
En sol1 se obtienen los valores ptimos de nuestro vector de decisin en funcin
de los multiplicadores de Lagrange, obtenindose:
l
16
m1
x1 =
4
u0 =
m
16
m
x2 =
4
u1 =
u2 = 0,
x3 = 0.
Programacin Matemtica
(%i15)
(%i16)
(%i17)
(%i18)
(%i19)
(%i20)
duL:L,sol1;
expand(duL);
ec1:diff(duL,l,1)$
ec2:diff(duL,m,1)$
sol2:algsys([ec1,ec2],[l,m]);
SOL:sol1,sol2;
544
x0
89
m=
256
x0 .
89
u0 =
16
x0
89
64
x2 =
x0
89
u1 =
10
u2 = 0,
x3 = 0.
Programacin Matemtica
R1 + R2
4x1 4x2 + + R1 = 15
4x1 + 8x2 + 2 + R2 = 30
x1 + 2x2 + s1 = 30
s1 = 0
x1 , x2 , , s1 , R1 , R2 0
Empezamos metiendo en la base las variables x1 , x2 y , con lo cual si tratamos R1 , R2 y s1 como no bsicas tenemos que igualarlas a 0 y completar la tabla
del smplex. Adems, la nica diferencia a la hora de pivotar es que tenemos que
exigir la condicin de que s1 = 0, pero como s1 no est en la base podemos
usar esas variables para la iteracin inicial.
En el Cuadro 1 vemos como quedara nuestra tabla del Smplex y los dems
parmetros que tenemos que controlar.
Guido I. Novoa Flores
11
Programacin Matemtica
Base
x1
x2
z, zj
z zj
xB
12
9
3
0
cj
cB
0
0
0
0
0
0
x1
1
0
0
0
0
0
x2
0
1
0
0
0
0
0
1
0
0
1
R1
1
0
0
0
-1
1
R2
0
1
0
0
-1
0
s1
0
0
1
0
0
12
Programacin Matemtica
1
2
x+y 1
x, y 0
1. Resolverlo grficamente.
2. Comprobar la respuesta utilizando la teora de Kuhn-Tucker.
3. Encontrar la funcin dual l(, ) y probar que es cncava
Objetivo
R=
R2
R>=
0.625
13
Programacin Matemtica
f:(x-1)^2+(y-1)^2$
L:f+l*(-x+y-1/2)+m*(x+y-1)$
Lx:diff(L,x,1)$
Ly:diff(L,y,1)$
Ll:diff(L,l,1)$
Lm:diff(L,m,1)$
sol:algsys([Lx,Ly,Ll,Lm],[x,y,l,m]);
f,sol;
En sol estn los valores ptimos para (x, y) as como para l y m. Si ahora
queremos calcular la funcin dual duL(l, m) y probar que es cncava procederamos como sigue: Introduciramos los valores ptimos de (x, y) en funcin de
l y m y los sustituiramos en la funcin lagrangiana original.
(%i9) op:algsys([Lx,Ly],[x,y]);
(%i10) duL:L,op;
(%i11) expand(%);
(%i12) hessian(%,[l,m]);
(%i13) eigenvalues(%);
Vemos que la hessiana de la dual lagrangiana es:
HduL =
14
Programacin Matemtica
15
Programacin Matemtica
f
(x1 , x2 ) = 3 3x21
x1
f
(x1 , x2 ) = 4 4x2 .
x2
1
=
Si ahora sustituimos x0 en las derivadas parciales obtenemos c1 = 3 3 16
1
y c2 = 4 4 4 = 3. Ahora tenemos que resolver el problema lineal:
45
16
45
x1 + 3x2
16
Max
x1 + x2 1,
S.a
x1 , x2 0.
Se obtiene como solucin x1LP
Consideramos x1 = ( 41 , 14 ) +
= (0, 1).
3t+1
t (0, 1) ( 14 , 14 ) = ( 1t
4 , 4 ) y maximizamos
1 3
(t 75t2 + 99t + 103).
para t [0, 1] la funcin h(t) = f (x1 ) =
64
xk1
c1
c2
xkLP
( 14 , 14 )
45
16
(0, 1)
1
3
64 (t
3
xk
f (xk )
0.67
(0.0825, 0.7525)
2.12
h(t)
75t2 + 99t + 103)
(0.0825, 0.7525)
(1, 0)
0.51
(0.56, 0.36)
2.69
(0.56, 0.36)
2.09
2.52
(0, 1)
0.174
(0.45, 0.48)
2.74
load("vect");
f:x1^3+2*x2^2-3*x1-4*x2$
g:x1+x2$
fx1:diff(f,x1,1)$
fx2:diff(f,x2,1)$
gx1:diff(g,x1,1)$
gx2:diff(g,x2,1)$
e1:fx1+l*gx1$
16
Programacin Matemtica
(%i9) e2:fx2+l*gx2$
(%i10) e3:x1+x2-1$
(%i11) algsys([e1,e2,e3],[x1,x2,l]);
13 2 5 13
obtenemos que la solucin ptima a es x =
,
(0.535, 0.465)
3
3
Por ltimo, representamos esta situacin grficamente usando GeoGebra para ver donde estn los puntos xk y donde est el ptimo. En la Figura 3 vemos
tambin las rectas gk que hay que optimizar, los puntos xkLP y los segmentos
que unen estos puntos con los puntos xk1 .
1.1
g1 : ( 45
16 x1 + 3x2 = 3)
g3 : (2.06x1 + 2.56x2 = 2.56)
1.0
g2 : (3x1 + x2 = 3)
x1 x3
LP LP
0.9
0.8
x1 =(0.0825,0.7525)
0.7
0.6
x3 = (0.45, 0.48)
0.5
OPT
0.4
x2 =(0.56,0.36)
0.3
x0 = ( 41 ,
1
4)
0.2
0.1
x2LP
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
1.1
17
Programacin Matemtica
3.0
Regin
factible
2.0
1.0
1.0
2.0
3.0
4.0
5.0
18
Programacin Matemtica
(2, 4)
4.0
Dbilmente Eficientes
3.0
(4, 2)
2.0
1.0
(4, 0)
1.0
2.0
3.0
4.0
5.0
4.0
Eficientes
3.0
(4, 2)
2.0
1.0
1.0
2.0
3.0
4.0
5.0
19
Programacin Matemtica
4.0
Geoffrion Efi.
3.0
2.0
1.0
1.0
2.0
3.0
4.0
5.0
20
Programacin Matemtica
Ejercicio 10. El servicio de aguas Distrito 88, en el suroeste de Estados Unidos, recoge agua procedente de los ros en un embalse E1 en la montaa. El
caudal estimado es de 294 millones de pies de acre. Al menos 24 millones de
pies de acre de agua son contratados para ir directamente desde E1 hasta las poblaciones del entorno, aunque stas aceptan tanta cantidad de agua como pueda
ser suministrada. El caudal restante va a un segundo embalse E2 en el desierto
perdindose un 20 % por evaporacin en el camino. Parte del agua en E2 puede
ser dedicada al regado de granjas en los alrededores. El resto del agua atraviesa
una presa hidroelctrica y corre ro abajo. Para mantener los equipos, el agua
sobre la presa debe ser al menos de 50 millones de pies de acre. Distrito 88
vende agua a las poblaciones por valor de 050$ por pie de acre de agua y para
el regado de los granjeros a 020 $ por pie de acre de agua. El agua utilizada
en la presa hidroelctrica cuesta 080 $ por pie de acre de agua. Distrito 88
quiere maximizar tanto el agua suministrada para el riego como el beneficio de
sus ventas.
a) Tras modelar el problema por medio de un programa multiobjetivo lineal,
establecer y resolver una sucesin de programas lineales para obtener una
solucin lexicogrfica del problema priorizando los objetivos en el orden
dado en el enunciado.
b) Establecer y resolver un objetivo lineal suma ponderada de objetivos iniciales que pondere el primero dos veces ms que el segundo.
En primer lugar, vamos a modelar el problema como un problema de maximizacin multiobjetivo.
21
Programacin Matemtica
x2
24 x1 294
0.8(294 x1 ) = x2 + x3
x3 50
x1 , x2 , x3 0
Si queremos obtener una solucin lexicogrfica priorizando los objetivos en
el orden dado tenemos que resolver el problema de maximizar el regado, y una
vez obtenido un ptimo, incluirlo en el problema de maximizar los beneficios
como restriccin.
22
Programacin Matemtica
x2
24 x1 294
0.8x1 + x2 + x3 = 235.2
x3 50
x1 , x2 , x3 0
Una vez resuelto, obtenemos que el ptimo de este problema se encuentra
en (x1 , x2 , x3 ) = (24, 166, 50). Ahora, resolveramos la otra funcin objetivo,
aadiendo la restriccin de x2 166.
Max
24 x1 294
0.8(294 x1 ) = x2 + x3
x3 50
x2 166
x1 , x2 , x3 0
Resolviendo este nuevo problema, obtenemos que el ptimo vuelve a ser
(x1 , x2 , x3 ) = (24, 166, 50), lo cual conlleva unos beneficios de 8520000$.
Por ltimo, si queremos resolver el problema lineal suma ponderada tenemos
que considerar el siguiente modelo:
Max
24 x1 294
0.8(294 x1 ) = x2 + x3
x3 50
x1 , x2 , x3 0
donde w1 y w2 es el peso que asignamos a cada funcin objetivo. Como
queremos que el primero pondere ms que el segundo tenemos que w1 = 2w2 .
Si tomamos w2 = 1 el problema queda de la siguiente forma:
Max
24 x1 294
23
Programacin Matemtica
0.8(294 x1 ) = x2 + x3
x3 50
x1 , x2 , x3 0
cuya solucin ptima es (x1 , x2 , x3 ) = (24, 0, 216) con un valor de 18480000$.
Ntese el gran cambio que hay entre las soluciones de un problema y otro al
cambiar el modelo.
24
Programacin Matemtica
x1 4
x2 7
2x1 + x2 9
x1 , x2 0
x1 4
x2 7
2x1 + x2 9
x1 , x2 0
u1 + 2u3 1 + 22
u2 + u3 2
u1 , u2 , u3 0
Para encontrar una solucin eficiente del problema multiobjetivo dual, primero tenemos que darle valores a 1 , 2 con la condicin de que 1 + 2 = 1.
Guido I. Novoa Flores
25
Programacin Matemtica
Tomando 1 = 2 =
1
2
u1 + 2u3
u2 + u3
3
2
1
2
u1 , u2 , u3 0
cuyo ptimo est en el punto u = (0.5, 0, 0.5). La solucin correspondiente
del primal escalar sera x = (4, 1) con un valor de 6.5.
26