Está en la página 1de 32

OPTIMIZACIÓN DE PROCESOS

Programación No Lineal
Programación Separable
Tupia de la Cruz, Elmer MgIng.
Sustitución aproximada
LOGRO DE APRENDIZAJE

Al finalizar el curso, el estudiante formula


modelos matemáticos no lineales, a partir de
problemas complejos en entornos
determinísticos, con la finalidad de proponer
soluciones y tomar decisiones de mejora en las
operaciones de una empresa.
TEMARIO

TEMA 1 TEMA 2 TEMA 3


Programación Separable - Linealización para un PNL - Linealización por sustitución
Definición Generalidades aproximada
TEMA 1: Programación Separable - Definición

• La programación separable permite


aproximar ciertos PNL a modelos
de programación lineal, obteniendo
una solución óptima aproximada.
• Sólo se aplica esta técnica cuando
en un PNL las variables de
decisión aparecen en términos
separados tanto en la función
objetivo como en las restricciones.
Por ejemplo, este PNL
2 2
Max Z = 3*X1*X2 - 2*X1 - X2 ;
Subject to:
X12 + 2*X22 <= 4;
2*X1 - X2 <= 3;
X1*X22 + X12 *X2 = 2;
X1, X2 >= 0 No es separable
Por ejemplo, este PNL

Max Z = 30*X1 + 35*X2 - 2*X12 - 3*X22;


Subject to:
2 2
X1 + 2*X2 <= 250;
X1 + X2 <= 20;
X1, X2 >= 0
SI es separable
TEMA 2: Linealización para un PNL - Generalidades

Se logra mediante la sustitución de las expresiones


no lineales por funciones lineales por tramos.
La sustitución puede ser de dos tipos:
• Sustitución aproximada: La solución óptima
que el software arroja se considera una
aproximación a la verdadera solución óptima.
• Sustitución exacta: La solución óptima que el
software arroja se considera solución óptima
global.
TEMA 3: Linealización por sustitución aproximada

Se reemplazan las expresiones no lineales por


funciones lineales por tramos de manera
aproximada.

A menor amplitud que posean los tramos,


mayor precisión; pero también el modelo
resultante se hace más grande.
Ejemplo 1
Resolver el siguiente PNL aplicando programación separable

Max Z = 30*X1 + 35*X2 - 2*X12 - 3*X22;


Subject to :
2
X1 + 2*X22 <= 250;
X1 + X2 <= 20;
X1, X2 >= 0
Solución
Son dos las expresiones no lineales: X12 y X22
Analizando la primera restricción, el máximo valor que podría tomar:
Para hallar el valor limite de X1:
X12 + 2*X22 <= 250 ; Si X2=0  X1: √250 = 15.81 ≈ 16
Para hallar el valor limite de X2:
X12 + 2*X22 <= 250 ; Si X1=0  X2: √(250/2) = 11.18 ≈ 12
Ambos valores máximos satisfacen también la segunda restricción (es decir, no
exceden de 20)
Luego, se efectúa la siguiente sustitución:
X12 = F1
X22 = F2
Se aproxima cada expresión no lineal a funciones lineales
por tramos, por tanto para F1:
Arbitrariamente, se emplearán 4 tramos. Para cada tramo, se calculará la pendiente

F1 = X12 Aproximación lineal de F1


Modelamiento de las funciones lineales por tramos:
Se asigna una variable auxiliar por cada tramo: Ai / i =1..4
A1, A2, A3, A4 : Representan a cada tramo de la recta que
contiene a X1, en consecuencia:

X1 = A1 + A2 + A3 + A4;

A1 ≤ 4; A2 ≤ 4; A3 ≤ 4; A4 ≤ 4;

Por ejemplo:
Si X1 sería 9, entonces: A1=4, A2=4, A3=1 y A4=0

F1 = f(A1, A2, A3, A4) y de las pendientes por tramo:


A1 A2 A3 A4

F1 = 4*A1 + 12*A2 + 20*A3 + 28*A4;


De manera similar, para F2

F2 = X22 Aproximación lineal de F2


Modelamiento de las funciones lineales por tramos:
Se asigna una variable auxiliar por cada tramo: Bi / i =1..4
B1, B2, B3, B4 : Representan a cada tramo de la recta que
contiene a X1, en consecuencia:

X2 = B1 + B2 + B3 + B4;

B1 ≤ 3; B2 ≤ 3; B3 ≤ 3; B4 ≤ 3;

Por ejemplo:
Si X2 sería 5, entonces: B1=3, B2=2, B3=0 y B4=0

F2 = f(B1, B2, B3, B4) y de las pendientes por tramo:


B1 B2 B3 B4

F2 = 3*B1 + 9*B2 + 15*B3 + 21*B4;


Entonces el programa cambia de la siguiente manera:
Programa No Lineal [Original] Modelo Linealizado
Max Z = 30*X1 + 35*X2 - 2*X12 - 3*X22; Max Z = 30*X1 + 35*X2 - 2*F1 - 3*F2;
Subject to : Subject to:
X12 + 2*X22 <= 250; F1 + 2*F2 <= 250;
X1 + X2 <= 20; X1 + X2 <= 20;
X1, X2 >= 0 F1 = 4*A1 + 12*A2 + 20*A3 + 28*A4;
X1 = A1 + A2 + A3 + A4;
A1 <= 4; A2 <= 4; A3 <= 4; A4 <= 4;
F2 = 3*B1 + 9*B2 + 15*B3 + 21*B4;
X2 = B1 + B2 + B3 + B4;
B1 ≤ 3; B2 ≤ 3; B3 ≤ 3; B4 ≤ 3;
X1, X2 >= 0
Análisis de la solución óptima del modelo no lineal original
La solución óptima que Lingo arroja del
programa no lineal (originalmente formulado) es:

Óptimo Local: 214.5833


Valores:
X1 = 7.5
X2 = 5.8333

La región factible del programa es convexa y la


función objetivo [Max], es una función cóncava;
por lo tanto, esta solución es global
Análisis de la solución óptima del modelo “linealizado”:
La solución óptima que Lingo arroja del programa
linealizado es:

Óptimo Global: 214


Valores:
X1 = 8
X2 = 6

Lingo le da categoría de Global porque ha resuelto


un PL; pero en realidad, es una aproximación a la
verdadera solución ya que las funciones NL han
sido sustituidas de manera aproximada a funciones
L por tramos.
Ejemplo 2
Resuelva los siguientes problemas empleando la técnica de la programación separable
(por sustitución aproximada):

Min Z = X12 + X22 + 5


Subject to:
3 X12 + X2 < 243
X1 + 2X22 > 32
X 1, X 2 > 0

Nota Importante: Si la exigencia es producto entero, adicionar @Gin(X1) @Gin(X2);


PNL PL (linealizado)
MODEL: MODEL:
Min = X1^2 + X2^2 + 5; Min= F1 + F2 + 5;
3*X1^2 + X2 <= 243; 3*F1 + X2 <= 243;
X1 + 2*X2^2 >= 32; X1 + 2*F2 >= 32;
End F1 = 3*A1 + 9*A2 + 15*A3;
F2 = 1*B1 + 3*B2 + 5*B3 + 7*B4;
X1 = A1 + A2 + A3;
X2 = B1 + B2 + B3 + B4;
A1 <= 3;
A2 <= 3;
A3 <= 3;
B1 <= 1;
B2 <= 1;
B3 <= 1;
B4 <= 1;
End
Variable Value Reduced Cost
F1 0.000000 0.000000
F2 16.00000 0.000000
X2 4.000000 0.000000
X1 0.000000 0.000000
A1 0.000000 2.500000
A2 0.000000 8.500000
Linealizado A3 0.000000 14.50000
B1 1.000000 0.000000
B2 1.000000 0.000000
B3 1.000000 0.000000
B4 1.000000 0.000000

Row Slack or Surplus Dual Price


No lineal 1 21.00000 -1.000000
2 239.0000 0.000000
3 0.000000 -0.5000000
Variable Value Reduced Cost 4 0.000000 -1.000000
X1 0.25000 0.000000 5 0.000000 0.000000
X2 3.984344 0.000000 6 0.000000 0.5000000
7 3.000000 0.000000
Row Slack or Surplus Dual Price 8 3.000000 0.000000
1 20.93750 -1.0000000 9 3.000000 0.000000
10 0.000000 0.000000
2 238.8282 0.00000000 11 0.000000 0.000000
3 0.2135789E-07 -0.5000000 12 0.000000 0.000000
13 0.000000 0.000000
14 0.000000 0.000000
Variable Value Reduced Cost
TA 3.000000 0.000000
TB 1.000000 0.000000
X( 1) 0.000000 0.000000
X( 2) 4.000000 0.000000
SETS: F( 1) 0.000000 0.000000
Variable/1 2/:X, F; F( 2) 16.00000 0.000000
A( 1) 0.000000 2.500000
Lineal/1 2 3 4/:A, B, MA,MB; A( 2) 0.000000 8.500000
ENDSETS A( 3) 0.000000 14.50000
A( 4) 0.000000 0.000000
DATA: B( 1) 1.000000 0.000000
B( 2) 1.000000 0.000000
MA = 3 9 15 0; B( 3) 1.000000 0.000000
MB = 1 3 5 7; B( 4) 1.000000 0.000000
MA( 1) 3.000000 0.000000
TA = 3; MA( 2) 9.000000 0.000000
TB = 1; MA( 3) 15.00000 0.000000
MA( 4) 0.000000 0.000000
ENDDATA MB( 1) 1.000000 0.000000
MB( 2) 3.000000 0.000000
Min =@Sum(Variable(i): F(i))+5; MB( 3) 5.000000 0.000000
3*F(1)+X(2) <= 243; MB( 4) 7.000000 0.000000

X(1)+2*F(2) >= 32; Row Slack or Surplus Dual Price


F(1)=@Sum(Lineal(j):MA(j)*A(j)); 1 21.00000 -1.000000
2 239.0000 0.000000
F(2)=@Sum(Lineal(j):MB(j)*B(j)); 3 0.000000 -0.5000000
4 0.000000 -1.000000
X(1)=@Sum(Lineal(j):A(j)); 5 0.000000 0.000000
X(2)=@Sum(Lineal(j):B(j)); 6 0.000000 0.5000000
7 0.000000 0.000000
@For(Lineal(j):A(j)<=TA); 8 3.000000 0.000000
@For(Lineal(j):B(j)<=TB); 9 3.000000 0.000000
10 3.000000 0.000000
A(4)=0; 11 3.000000 0.000000
12 0.000000 0.000000
End 13 0.000000 0.000000
14 0.000000 0.000000
15 0.000000 0.000000
16 0.000000 0.5000000
Ejemplo 3
Resuelva los siguientes problemas empleando la técnica de la programación separable
(por sustitución aproximada):

Min Z = (X1 – 2)2 + 4*(X2 – 6)2;


Subject to:
6*X1 + 3*(X2 + 1)2 ≤ 50;
X1, X2 ≥ 0

Nota Importante: Si la exigencia es producto entero, adicionar @Gin(X1) @Gin(X2);


No lineal

MIN = (X1-2)^2 + 4*(X2-6)^2;


6*X1 + 3*(X2+1)^2<=50;
Linealizado
End
Min = F1-4*X1+4*F2-48*X2+148;
6*X1 + 3*F2 + 6*X2<=50-3;
X1 = A1+A2+A3+A4;
F1 = 2*A1+6*A2+10*A3+14*A4;
A1 <= 2;
A2 <= 2;
A3 <= 2;
A4 <= 2;
X2 = B1+B2+B3;
F2 = 1*B1+3*B2+5*B3;
B1 <= 1;
B2 <= 1;
B3 <= 1;
End
Linealizado

Variable Value Reduced Cost


F1 0.6666667 0.000000
X1 0.3333333 0.000000
F2 9.000000 0.000000
X2 3.000000 0.000000
A1 0.3333333 0.000000
A2 0.000000 4.000000
A3 0.000000 8.000000
A4 0.000000 12.00000
B1 1.000000 0.000000
B2 1.000000 0.000000
B3 1.000000 0.000000

Row Slack or Surplus Dual Price


No lineal 1 39.33333 -1.000000
2 0.000000 0.3333333
3 0.000000 2.000000
4 0.000000 -1.000000
5 1.666667 0.000000
6 2.000000 0.000000
7 2.000000 0.000000
Variable Value Reduced Cost 8 2.000000 0.000000
X1 0.000000 1.717143
9 0.000000 46.00000
X2 3.082483 0.000000
10 0.000000 -5.000000
Row Slack or Surplus Dual Price 11 0.000000 41.00000
1 38.04762 -1.000000 12 0.000000 31.00000
2 0.000000 0.9528571 13 0.000000 21.00000
Variable Value Reduced Cost
TA 2.000000 0.000000
TB 1.000000 0.000000
X( 1) 0.3333333 0.000000
X( 2) 3.000000 0.000000
SETS: F( 1) 0.6666667 0.000000
F( 2) 9.000000 0.000000
Variable/1 2/:X, F, CX, CF; CX( 1) -4.000000 0.000000
Lineal/1 2 3 4/:A, B, MA,MB; CX( 2) -48.00000 0.000000
CF( 1) 1.000000 0.000000
ENDSETS CF( 2) 4.000000 0.000000
DATA: A( 1)
A( 2)
0.3333333
0.000000
0.000000
4.000000
CX = -4 -48; A( 3) 0.000000 8.000000
A( 4) 0.000000 12.00000
CF = 1 4; B( 1) 1.000000 0.000000
MA = 2 6 10 14; B( 2) 1.000000 0.000000
B( 3) 1.000000 0.000000
MB = 1 3 5 0; B( 4) 0.000000 0.000000
TA = 2; MA( 1)
MA( 2)
2.000000
6.000000
0.000000
0.000000
TB = 1; MA( 3) 10.00000 0.000000
MA( 4) 14.00000 0.000000
ENDDATA MB( 1) 1.000000 0.000000
Min =@Sum(Variable(i): CX(i)*X(i)+CF*F(i))+148; MB( 2) 3.000000 0.000000
MB( 3) 5.000000 0.000000
6*X(1)+3*F(2)+6*X(2) <= 50-3; MB( 4) 0.000000 0.000000
F(1)=@Sum(Lineal(j):MA(j)*A(j)); Row Slack or Surplus Dual Price
F(2)=@Sum(Lineal(j):MB(j)*B(j)); 1 39.33333 -1.000000
2 0.000000 0.3333333
X(1)=@Sum(Lineal(j):A(j)); 3 0.000000 -1.000000
X(2)=@Sum(Lineal(j):B(j)); 4 0.000000 -5.000000
5 0.000000 2.000000
@For(Lineal(j):A(j)<=TA); 6 0.000000 46.00000
@For(Lineal(j):B(j)<=TB); 7
8
1.666667
2.000000
0.000000
0.000000
B(4)=0; 9 2.000000 0.000000
10 2.000000 0.000000
End 11 0.000000 41.00000
12 0.000000 31.00000
13 0.000000 21.00000
14 1.000000 0.000000
15 0.000000 46.00000
Ejemplo 4
Considere que la empresa Wyndor Glass Co. desea conocer la composición de su
producción de sus dos únicos productos para disponer su ejecución para el próximo mes
si conoce que por el producto 1 gana $3 y por el producto 2 gana $5.
Considera que el mercado demanda cubrir del producto 1 hasta 4 unidades y del producto
2 hasta 7 unidades; además ha establecido un régimen de producción combinada que
obedece a la siguiente función: 8*X1 – X12 + 14*X2 – X22 no debe superar las 49
unidades (siendo x e y los productos 1 y 2 respectivamente).
Se solicita:
a) Presente un modelo de PNL de la situación planteada.
b) Si al resolver en Lingo el modelo planteado, éste tiene solución local, determine si
dicha solución local también es la solución global.
Solución
a)
X(i) = cantidad del producto i (enteros) a fabricar el próximo mes
SETS:
Max Z = 3X1 + 5X2 Producto/1 2/: X, Ganancia, Demanda, P1,
Subject to: P2;
ENDSETS
X1 <= 4
DATA:
X2 <= 7 Ganancia = 3 5;
8X1 – X12 + 14X2 – X22 <= 49 Demanda = 4 7;
End P1 = 8 14;
P2 = 1 1;
Produccion = 49;
ENDDATA
Max = @Sum(Producto:Ganancia*X);
@For(Producto:X<=Demanda);
@Sum(Producto:P1*X-P2*X*X)<=Produccion;
@For(Producto:@Gin(X));
END
Local optimal solution found.
Objective value: 35.00000

Variable Value Reduced Cost


PRODUCCION 49.00000 0.000000
X( 1) 0.000000 0.000000
X( 2) 7.000000 0.000000
GANANCIA( 1) 3.000000 0.000000
GANANCIA( 2) 5.000000 0.000000
DEMANDA( 1) 4.000000 0.000000
DEMANDA( 2) 7.000000 0.000000
P1( 1) 8.000000 0.000000
P1( 2) 14.00000 0.000000
P2( 1) 1.000000 0.000000
P2( 2) 1.000000 0.000000

Row Slack or Surplus Dual Price


1 35.00000 1.000000
2 4.000000 0.000000
3 0.000000 5.000000
4 0.000000 0.3750000
b. Análisis de la solución
Función objetivo:
3*X1 + 5*X2; 3X1 es cóncava; 5X2 es cóncava; entonces 3X1 + 5X2 es cóncava
Restricciones:
X1 <= 4 X es convexa
X2 <= 7 Y es convexa
8X1 – X12 + 14X2 – Y22 <= 49
-X12 es cóncava;
-X22 es cóncava;
8X1 es cóncava;
14X2 es cóncava;
entonces 8X1 – X12 + 14X2 – X22 es cóncava
Por lo tanto, si existe una solución local, ésta no es global
Ejercicio
Resuelva los siguientes problemas empleando la técnica de la programación
separable (por sustitución aproximada):

Max Z = f(X1) + f(X2) + f(X3); Donde:


Subject to: f(X1)= 5*X1 + X12
f(X2)= X22 - 5*X2
g1(X1,X2,X3) ≤ 250;
f(X3)= 17*X3 - X32
g2(X1,X2,X3) ≤ 120; g1(X1,X2,X3)= 5*X1 - 2*X12 + 3*X3
g3(X1,X2,X3) ≤ 320; g2(X1,X2,X3)= 2*X1 + 7*X12 - X2 + 3*X32
X1 , X2, X3 ≥ 0 g3(X1,X2,X3)= 3*X1 + 4*X22 + X3 - 2*X32

Nota Importante: Si la exigencia es producto entero, adicionar @Gin(X1) @Gin(X2) @Gin(X3);


BIBLIOGRAFÍA

Hillier, & Lieberman, G. J. (2015). Investigación de operaciones (Décima


edición.). McGraw-Hill Interamericana; Capítulo 13, pp. 495 - 590.

Taha H., (2012). Investigación de operaciones. (Novena edición). Pearson


Educacion. 21, pp. 699-728.

Winston W., (2005). Investigación de operaciones: aplicaciones y algoritmos.


(Cuarta edición). Thomson, pp. 610-706.
Material producido por la
Universidad Peruana de
Ciencias Aplicadas

Autor:
Muchas gracias Elmer Tupia de la Cruz

COPYRIGHT © UPC
2022 – Todos los
derechos reservados

También podría gustarte