El documento describe el método gráfico y el método simplex para resolver problemas de programación lineal. El método gráfico involucra graficar las restricciones y la función objetivo para determinar la región factible y la solución óptima. El método simplex transforma el problema a una forma estándar y usa tablas y pivotes para iterativamente encontrar la solución óptima. El documento también presenta el software GLP para graficar problemas de programación lineal de dos variables.
1. 1
Programación Lineal (2)
Docente : Gabriel Solari Carbajal
Universidad Nacional Mayor de San Marcos
Facultad de Ingeniería de Sistemas e Informática
Investigación Operativa I
2
SOLUCION DE
PROBLEMAS DE
PROGRAMACION
LINEAL
Programación Lineal
2. 2
3
METODO GRAFICO PARA LA RESOLUCION DE UN
PPL.-
Programación Lineal
Introducción.-
El método gráfico se utiliza para resolver Problemas de
Programación Lineal (PPL) de dos variables, y con
cierta dificultad, de tres variables.
Para mayor número de variables no es posible la
representación gráfica.
Su estudio es importante porque permite la definición
de nuevos conceptos.
4
GRÁFICA DE UNA RECTA.-
Para graficar una recta se procede de la siguiente
manera:
Programación Lineal
1) Determinar dos puntos arbitrarios de la recta.
2) Unir los puntos localizados.
Ejemplo
Graficar:
5x2x 21 =+
3. 3
5
Los puntos son:
Programación Lineal
Graficando
x1 x2
0.0 2.5
5.0 0.0
1 2 3 4 5
1
2
3
x1
x2
x1 + 2x2 = 5
6
GRÁFICA DE UNA DESIGUALDAD.-
La gráfica de una desigualdad forma una región. Se
procede de la siguiente manera:
Programación Lineal
1) Determinar dos puntos arbitrarios de la recta.
2) Unir los puntos localizados.
Ejemplo
Graficar:
5x2x 21 ≤+
3) Se selecciona la región correspondiente a la
desigualdad. Comprobar con un valor determinado
como el punto (0, 0).
4. 4
7
Los puntos son:
Programación Lineal
x1 x2
0.0 2.5
5.0 0.0
Comprobando con el punto (0, 0):
Se verifica que el punto (0, 0) pertenece a la región
formada por la desigualdad.
5)0(20 ≤+
8
Graficando
Programación Lineal
1 2 3 4 5
1
2
3
x1
x2
x1
+ 2x2
<= 5
Región
5. 5
9
GRÁFICA DE LAS RESTRICCIONES DE UN PPL.-
Se grafica desigualdad por desigualdad determinando
la región factible. La región factible es aquella que
contiene a todas las soluciones que satisfacen al
conjunto de restricciones. Se obtiene de la intercepción
de las regiones formadas por cada restricción.
Programación Lineal
Ejemplo
Graficar:
5x2x 21 ≤+
10x3x4 21 ≤+
0x,x 21 ≥
10
Graficando la primera restricción:
Programación Lineal
1 2 3 4 5
1
2
3
x1
x2
4x1
+ 3x2
<= 10
4
6. 6
11
Graficando la segunda restricción:
Programación Lineal
1 2 3 4 5
1
2
3
x1
x2
x1 + 2x2 <= 5
4
12
Graficando las restricciones de no negatividad:
Programación Lineal
1 2 3 4 5
1
2
3
x1
x2
x1, x2 >= 0
4
7. 7
13
Graficando la región factible:
Programación Lineal
1 2 3 4 5
1
2
3
x1
x2
x1 + 2x2 <= 5
4
4x1
+ 3x2
<= 10
Región
factible
14
GRÁFICA DE LA FUNCION OBJETIVO.-
Se asigna un valor, seleccionado convenientemente, a
la función objetivo y se grafica como una recta.
Se asigna un segundo valora la función objetivo y se
grafica la recta.
La familia de paralelas se conoce como rectas de nivel.
Programación Lineal
Ejemplo
Graficar:
21 10x8xZMax +=
8. 8
15
Se grafican las rectas:
Programación Lineal
1010x8x 21 =+
2010x8x 21 =+
donde los valores 10 y 20 han sido seleccionados
arbitrariamente.
16
Programación Lineal
1 2 3 4 5
1
2
3
x1
x2
4
Z=10 Z=20
hacia este sentido
se maximiza Z
rectas de nivel
valor de la
función objetivo
9. 9
17
SOLUCION OPTIMA DE UN PPL.-
Corresponde al valor óptimo de la función objetivo al
recorrer la región factible. Se seleccionará aquella recta
paralela que determine el valor óptimo de Z sobre la
región factible.
Programación Lineal
18
Ejemplo
Determinar la solución óptima de:
Programación Lineal
21 10x8xZMax +=
5x2x 21 ≤+
10x3x4 21 ≤+
0x,x 21 ≥
sujeto a
10. 10
19
Programación Lineal
1 2 3 4 5
1
2
3
x1
x2
4
20
Según se observa en la gráfica el último punto de
contacto (la solución óptima) de la función objetivo
sobre la región factible es x1=1 y x2=2 siendo el valor
óptimo Z=28
Programación Lineal
11. 11
21
GLP.-
Programación Lineal
GLP es un software elaborado por el Profesor Jeffrey
Moore, Ph.D., de la Universidad de Stanford.
e-mail: fmoore@gsb.stanford.edu.
GLP se utiliza para graficar la región factible de un
conjunto de restricciones de un PPL de dos variables.
El programa soporta un máximo de 6 restricciones.
Dada una función objetivo determina su orientación, el
máximo y mínimo valor de la aplicación de la función
objetivo a la región factible en forma automática.
22
12. 12
23
Procedimiento de su uso:
Programación Lineal
1) Definición de las variables.-
Ingresar la descripción de las variables que
corresponden con los ejes X e Y, en las cajas de
dialogo respectivas.
24
Programación Lineal
2) Ingreso de restricciones.-
Se puede ingresar o editar hasta 6 restricciones.
Una restricción con coeficientes y recursos será
ignorada por el programa:
13. 13
25
Programación Lineal
Las restricciones con desigualdad estricta(< o >) no
son validas.
Es posible colocar una etiqueta para identificar una
restricción. Ejemplo: Horas hombre:
5.0X + 1.0Y <= 3.0
Se pueden realizar cambios discretos de los
recursos de cada restricción presionando +/-
26
Programación Lineal
3) Ingreso de la función objetivo (PAYOFF) .-
En el casillero etiquetado PAYOFF ingresar la
función objetivo.
Evaluar la ecuación de la función objetivo a algún
valor. No se permiten desigualdades.
14. 14
27
Programación Lineal
4) Mover las restricciones y función objetivo con el
mouse.-
Para mover una restricción o función objetivo,
paralelamente, colocar el puntero del mouse sobre
la restricción o función objetivo a mover, y
manteniendo presionado el botón izquierdo del
mouse colocarla en su nueva posición.
Puede cambiar la orientación (pendiente) de la
función objetivo colocando el puntero del mouse
sobre la función objetivo, y manteniendo presionado
el botón derecho del mouse rotarla a su nueva
posición.
28
Programación Lineal
5) Visualización de la región factible.-
Se puede aumentar o disminuir el tamaño de la
gráfica utilizando los controles Zoom. Por defecto se
encuentra en valor 6.
Puede utilizar el icono AutoZomm para obtener
el tamaño mas grande de la región factible que
permite el área grafica.
15. 15
29
Programación Lineal
6) Cambiar la precisión del número de decimales.-
Se puede modificar el número de decimales
utilizando la casilla respectiva.
30
Programación Lineal
7) Valores máximos y mínimos de X e Y.-
Podemos ingresar valores máximos y mínimos de X
e Y, utilizando los casilleros respectivos:
16. 16
31
Programación Lineal
8) Solución optima.-
El icono AutoMax/AutoMin permite
encontrar automáticamente el valor optimo máximo
y mínimo de aplicar la función objetivo a la región
factible formada. El valor optimo es presentado en el
casillero de la función objetivo (PAYOFF)
32
Programación Lineal
9) Otras opciones .-
El primer icono recorta/repone el exceso de las
líneas que sobrepasan la región factible.
El segundo icono muestra/oculta la descripción de
las restricciones.
El tercer icono pinta la región factible de un color
seleccionado por el analista. Otro clic sobre este
icono desactiva el color.
17. 17
33
Programación Lineal
El cuarto icono pinta la región factible de color gris.
Otro clic sobre este icono desactiva el color.
El quinto icono activa/desactiva los valores enteros
de la región factible. La optimización también es
entera si este comando se encuentra activado.
34
EL METODO SIMPLEX
Este método elaborado por George Dantzig, se utiliza
para hallar la solución óptima de un PPL, asumiendo
que su dominio admisible es un conjunto convexo y
compacto. Desarrollaremos el método para modelos de
maximización y minimización. En la actualidad todos los
software comerciales utilizan éste método.
Programación Lineal
18. 18
35
Programación Lineal
Caso: Maximización
1) Dado un PPL de maximización transformarlo,
mediante las reglas de equivalencia a su forma
canónica:
cXZMax =
bAX≤
0X ≥
sujeto a
36
2) Expresar el PPL del paso 1 a la forma estándar de
maximización mediante la aplicación de la regla 4 de
las reglas de equivalencia:
Programación Lineal
sujeto a
nn2211 xcxcxcZMax +++= L
11nn1n212111 bxxaxaxa =++++ +L
22nn2n222121 bxxaxaxa =++++ +L
M
mmnnmn2m21m1 bxxaxaxa =++++ +L
i0xi ∀≥
19. 19
37
Programación Lineal
El vector de las variables de holgura (xn+1, xn+2,...,
xn+m) se convierte en la primera base del PPL,
tomando como valores el vector de recursos .
38
3) Escribir la función objetivo en la forma:
Programación Lineal
o en forma similar:
0cXZ =−
0xcxcxcZ nn2211 =−−−− L
20. 20
39
4) Construir la tabla inicial con los coeficientes del
problema estándar obtenido en los pasos 2 y3, esta
tabla tiene la siguiente estructura:
Programación Lineal
Z x1 x2 xn xn+1 xn+2 xn+m Sol.
Z 1 -c1 -c2 -cn 0 0 0 0
xn+1 0 a11 a12 a1n 1 0 0 b1
xn+2 0 a21 a22 a2n 0 1 0 b2
xn+m 0 am1 am2 amn 0 0 1 bm
Θ
40
Programación Lineal
21. 21
41
5) Condición de optimalidad
Seleccione como variable de entrada a la base,
aquella variable no básica que tenga el coeficiente
zj-cj con valor más negativo.
Programación Lineal
Z x1 x2 x3 x4 x5 x6 Sol.
Z 1 -1 -2 0 -5 0 0 0
x3 0
x5 0
x6 0
Θ
Ejemplo
42
El zj-cj con valor más negativo corresponde a x4,
entonces la variable que debe ingresar a la base es
x4.
Si hay empate entre 2 o más variables no básicas
para ingresar a la base, elija arbitrariamente
cualquiera de ellas.
Si todos los coeficientes zj-cj son no negativos, la
solución óptima ha sido hallada.
Programación Lineal
22. 22
43
6) Condición de factibilidad
Seleccione como variable de salida de la base,
aquella variable básica que le corresponde el
cociente más pequeño de los que resultan de dividir
los valores actuales de las variables básicas, con los
coeficientes estrictamente positivos de la matriz de
coeficientes tecnológicos correspondientes a la
variable que ingresa.
Programación Lineal
44
Ejemplo
Programación Lineal
Z x1 x2 x3 x4 x5 x6 Sol.
Z 1 -1 -2 0 -5 0 0 0
x3 0 5 15 3
x5 0 0 14
x6 0 2 8 4
Θ
{ } 343,min
2
8
,
5
15
minθ ==
⎭
⎬
⎫
⎩
⎨
⎧
=
23. 23
45
El menor cociente corresponde a la variable x3,
entonces la variable que debe salir de la base es x3.
Si hay empate en los cocientes entre 2 o mas
variables básicas aplique las reglas lexicográficas.
Programación Lineal
46
7) Construcción de la nueva tabla Simplex
La intersección de la columna que corresponde a la
variable que debe ingresar con la fila que
corresponde a la variable que debe salir determina
un elemento que se conoce como pivot.
Mediante operaciones elementales construir la nueva
tabla Simplex, donde se verifique que la variable que
ingresa a la base le corresponde un vector unitario y
un valor zj-cj igual a cero.
El valor 1 de este vector unitario se encuentra en la
ubicación del pivot.
Programación Lineal
24. 24
47
Las operaciones que se utilizan son:
La nueva fila pivot se obtiene dividiendo cada valor
de la fila pivot entre el valor pivot.
Programación Lineal
48
Programación Lineal
Z x1 x2 x3 x4 x5 x6 Sol.
Z 1 -3 -2 -5 0 0 0 0
x4 0 1 430 430
x5 0 3 0 2 0 1 0 460 230
x6 0 0 420
Z 1 0 0 0
x4 0 0
x3 5 1.5 0 1 0 0.5 0 230
x6 0 0
Θ
25. 25
49
Las restantes filas se obtienen de la siguiente forma:
Restar a cada valor de una fila no pivot el producto
de su correspondiente valor en la columna pivot por
su correspondiente valor columna en la nueva fila
pivot.
Programación Lineal
50
Programación Lineal
Z x1 x2 x3 x4 x5 x6 Sol.
Z 1 -3 -2 -5 0 0 0 0
x4 0 1 1 430 430
x5 0 3 0 2 0 1 0 460 230
x6 0 0 420
1 - 1 x 1.5 = -0.5
Z 1 0 0 0
x4 0 -0.5 0
x3 5 1.5 0 1 0 0.5 0 230
x6 0 0
Θ
26. 26
51
Una vez completa la nueva tabla regresar al paso 5.
Programación Lineal
52
Programación Lineal
321 5x2x3xZMax ++=
430x2xx 321 ≤++
4602x3x 31 ≤++
4204xx 21 ≤+
0x0,x0,x 321 ≥≥≥
Ejemplo.-
Utilizando el método Simplex resolver:
sujeto a
27. 27
53
Programación Lineal
321 5x2x3xZMax ++=
430xx2xx 4321 =+++
460x2x3x 531 =+++
420x4xx 621 =++
0x0,x0,x0,x0,x0,x 654321 ≥≥≥≥≥≥
determinando la forma estándar del PPL
sujeto a
54
Programación Lineal
05x2x3xZ 321 =−−−
cambiando la función objetivo a la forma
28. 28
55
Programación Lineal
Z x1 x2 x3 x4 x5 x6 Sol.
Z 1 -3 -2 -5 0 0 0 0
x4 0 1 2 1 1 0 0 430 430
x5 0 3 0 2 0 1 0 460 230
x6 0 1 4 0 0 0 1 420
Θ
Construyendo el tablero inicial se tiene:
Se observa que la variable que debe ingresar a la base
es x3 y la variable que debe salir de la base es x5. El
valor pivot es 2. La solución actual es Z = 0.
56
Programación Lineal
Z 1 4.5 -2 0 0 2.5 0 1150
x4 0 -0.5 2 0 1 -0.5 0 200 100
x3 5 1.5 0 1 0 0.5 0 230
x6 0 1 4 0 0 0 1 420 105
Se observa que la variable que debe ingresar a la base
es x2 y la variable que debe salir de la base es x4. El
valor pivot es 2. La solución actual es Z = 1150.
realizando las correspondientes operaciones
matriciales, se obtiene:
29. 29
57
Programación Lineal
Z 1 4 0 0 1 2 0 1350
x2 2 -0.25 1 0 0.5 -0.25 0 100
x3 5 1.5 0 1 0 0.5 0 230
x6 0 2 0 0 -2 1 1 20
Se observa que no hay variable candidata para
ingresar, por lo tanto se ha llegado a la solución óptima.
Realizando, nuevamente, las correspondientes
operaciones matriciales, se obtiene:
58
Programación Lineal
La solución óptima resulta:
0x1 = 100x2 =
230x3 = 0x4 =
0x5 = 20x6 =
1350Z =
30. 30
59
Programación Lineal
Caso: Minimización
1) Dado un PPL de minimización transformarlo,
mediante las reglas de equivalencia a su forma
canónica:
cXZMin =
bAX≤
0X ≥
sujeto a
60
2) Expresar el PPL del paso 1 a la forma estándar de
minimización mediante la aplicación de la regla 4 de
las reglas de equivalencia:
Programación Lineal
sujeto a
nn2211 xcxcxcZMin +++= L
11nn1n212111 bxxaxaxa =++++ +L
22nn2n222121 bxxaxaxa =++++ +L
M
mmnnmn2m21m1 bxxaxaxa =++++ +L
i0xi ∀≥
31. 31
61
Programación Lineal
El vector de las variables de holgura (xn+1, xn+2,...,
xn+m) se convierte en la primera base del PPL,
tomando como valores el vector de recursos .
62
3) Escribir la función objetivo en la forma:
Programación Lineal
o en forma similar:
0cXZ =−
0xcxcxcZ nn2211 =−−−− L
32. 32
63
4) Construir la tabla inicial con los coeficientes del
problema estándar obtenido en los pasos 2 y3, esta
tabla tiene la siguiente estructura:
Programación Lineal
Z x1 x2 xn xn+1 xn+2 xn+m Sol.
Z 1 -c1 -c2 -cn 0 0 0 0
xn+1 0 a11 a12 a1n 1 0 0 b1
xn+2 0 a21 a22 a2n 0 1 0 b2
xn+m 0 am1 am2 amn 0 0 1 bm
Θ
64
5) Condición de optimalidad
Seleccione como variable de entrada a la base,
aquella variable no básica que tenga el coeficiente
zj-cj con valor más positivo.
Programación Lineal
Z x1 x2 x3 x4 x5 x6 Sol.
Z 1 2 6 0 3 0 0 0
x3 0
x5 0
x6 0
Θ
Ejemplo
33. 33
65
El zj-cj con valor más positivo corresponde a x2,
entonces la variable que debe ingresar a la base es
x2.
Si hay empate entre 2 o más variables no básicas
para ingresar a la base, elija arbitrariamente
cualquiera de ellas.
Si todos los coeficientes zj-cj son no positivos, la
solución óptima ha sido hallada.
Programación Lineal
66
6) Condición de factibilidad
Seleccione como variable de salida de la base,
aquella variable básica que le corresponde el
cociente más pequeño de los que resultan de dividir
los valores actuales de las variables básicas, con los
coeficientes estrictamente positivos de la matriz de
coeficientes tecnológicos correspondientes a la
variable que ingresa.
Programación Lineal
34. 34
67
Ejemplo
Programación Lineal
Z x1 x2 x3 x4 x5 x6 Sol.
Z 1 2 6 0 3 0 0 0
x3 0 4 16 4
x5 0 5 15 3
x6 0 1 8 8
Θ
{ } 383,4,min
1
8
,
5
15
,
4
16
minθ ==
⎭
⎬
⎫
⎩
⎨
⎧
=
68
El menor cociente corresponde a la variable x5,
entonces la variable que debe salir de la base es x5.
Si hay empate en los cocientes entre 2 o mas
variables básicas aplique las reglas lexicográficas.
Programación Lineal
35. 35
69
7) Construcción de la nueva tabla Simplex
La intersección de la columna que corresponde a la
variable que debe ingresar con la fila que
corresponde a la variable que debe salir determina
un elemento que se conoce como pívot.
Mediante operaciones elementales construir la nueva
tabla Simplex, donde se verifique que la variable que
ingresa a la base le corresponde un vector unitario y
un valor zj-cj igual a cero.
El valor 1 de este vector unitario se encuentra en la
ubicación del pívot.
Programación Lineal
70
Las operaciones que se utilizan son:
La nueva fila pívot se obtiene dividiendo cada valor
de la fila pívot entre el valor pívot.
Programación Lineal
36. 36
71
Programación Lineal
Z x1 x2 x3 x4 x5 x6 Sol.
Z 1 3 2 5 0 0 0 0
x4 0 1 430 430
x5 0 3 0 2 0 1 0 460 230
x6 0 0 420
Z 1 0 0 0
x4 0 0
x3 5 1.5 0 1 0 0.5 0 230
x6 0 0
Θ
72
Las restantes filas se obtienen de la siguiente forma:
Restar a cada valor de una fila no pívot el producto
de su correspondiente valor en la columna pívot por
su correspondiente valor columna en la nueva fila
pívot.
Programación Lineal
37. 37
73
Programación Lineal
Z x1 x2 x3 x4 x5 x6 Sol.
Z 1 3 2 5 0 0 0 0
x4 0 1 1 430 430
x5 0 3 0 2 0 1 0 460 230
x6 0 0 420
1 - 1 x 1.5 = -0.5
Z 1 0 0 0
x4 0 -0.5 0
x3 5 1.5 0 1 0 0.5 0 230
x6 0 0
Θ
74
Una vez completa la nueva tabla regresar al paso 5.
Programación Lineal
38. 38
75
Programación Lineal
21 2xxZMin −=
2xx- 21 ≤+
5xx 21 ≤+
0x0,x 21 ≥≥
Ejemplo.-
Utilizando el método Simplex resolver:
sujeto a
76
Programación Lineal
21 2xxZMin −=
2xxx- 321 =++
5xxx 421 =++
0x0,x0,x0,x 4321 ≥≥≥≥
determinando la forma estándar del PPL
sujeto a
39. 39
77
Programación Lineal
02xxZ 21 =+−
cambiando la función objetivo a la forma
78
Programación Lineal
Construyendo el tablero inicial se tiene:
Se observa que la variable que debe ingresar a la base
es x2 y la variable que debe salir de la base es x3. El
valor pivot es 1. La solución actual es Z = 0.
Z x1 x2 x3 x4 Sol.
Z 1 -1 2 0 0 0
x3 0 -1 1 1 0 2 2
x4 0 1 1 0 1 5 5
Θ
40. 40
79
Programación Lineal
Se observa que la variable que debe ingresar a la base
es x1 y la variable que debe salir de la base es x4. El
valor pivot es 2. La solución actual es Z = -4.
realizando las correspondientes operaciones
matriciales, se obtiene:
Z 1 1 0 -2 0 -4
x2 -2 -1 1 1 0 2
x4 0 2 0 -1 1 4
80
Programación Lineal
Se observa que no hay variable candidata para
ingresar, por lo tanto se ha llegado a la solución óptima.
Realizando, nuevamente, las correspondientes
operaciones matriciales, se obtiene:
Z 1 0 0 -1.5 -0.5 -5.5
x2 -2 0 1 0.5 0.5 3.5
x1 1 1 0 -0.5 0.5 1.5