Está en la página 1de 64

PROGRAMACIÓN LINEAL

Tarea 1. Métodos simplex primal y simplex dual

ERIKA PAOLA PARADA


CRISTIAN LEONARDO CELY
EDGAR CAMARGO MARTIN DIONISIO
LEDHERZON CONTRERAS PINTO
E-ESTUDIANTE
GRUPO: 100404_360

TUTOR
MICHAEL ALEXIS SANTOYA HERNÁNDEZ

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA


ESCUELA DE CIENCIAS BÁSICAS, TECNOLOGÍA E INGENIERÍA
FORMACIÓN PROFESIONAL
Formación Interdisciplinar Básica Común
Octubre, 2019
INTRODUCCIÓN

La programación línea es el campo de la programación matemática dedicado a maximizar


y minimizar una función lineal, denominada función objetivo, de tal forma que las
variables de dicha función estén sujetas a una serie de restricciones expresadas mediante
un sistema de ecuaciones o inecuaciones también lineales.

Con el presente trabajo colaborativo se busca identificar y comprender los conceptos de


programación lineal, a través de la utilización de los métodos simplex algebraicos primal
y simplex algebraico dual, desarrollando 6 ejercicios y comprobándolos con el software
PHP simplex.
Estudiante Cristian Leonardo Cely

La junta de acción comunal del barrio Bohórquez conformo un negocio de comidas rápidas. Para
realizar una empanada requiere 12 gramos de harina, 2 gramos de mantequilla y 6 gramos de carne y
genera una utilidad de 400 pesos. Para realizar un buñuelo requiere 10 gramos de harina y 2 gramos d
mantequilla, y le genera una utilidad de 300 pesos. Para realizar una arepa requiere 20 gramos de
harina y 2 gramos de mantequilla, y le genera una utilidad de 300 pesos. Semanalmente cuenta con
10.000 gramos de harina, 1.500 gramos de mantequilla y 15.000 gramos de carne. ¿Cuántos producto
de cada tipo debe producir y vender para generar mayor utilidad? ¿Este ejercicio es de maximización
de minimización?

TABLA DE VARIABLES
PRODUCTO
Empanada Buñuelo Arepa Total semanal Precio
harina 12 gr 10 gr 20 gr 10,000 400
Mantequilla 2 gr 2 gr 2 gr 1,500 300
Carne 6 gr 0 0 15,000 300

Funcion Objetivo

Max z= 400 x1+ 300x2+ 300x3

Restricciones

12𝑥_1+ 10𝑥_2+ 20𝑥_3 ≤ 10.000


2𝑥_(1 )+ 2𝑥_2 + 2𝑥_3 ≤ 1.500
6𝑥_1 + 𝑥_2 + 𝑥_3 ≤ 15.000

Restriccion de no negatividad

x1,x2,x3 ≥ 0

Modelo Aumentado

12𝑥_1+ 10𝑥_2 + 20𝑥_3 + h1 = 10.000


2𝑥_1 + 2𝑥_2 + 2𝑥_3 + h2 = 1.500
6𝑥_1 + 𝑥_2 + 〖 𝑥〗 _3 +h3 =15.000

Igualar z a 0

z= 400 x1+ 300x2+ 300x3


z=- 400 x1- 300x2- 300x3 = 0
VB z X1 X2 X3 h1
z 1 -400 -300 -300 0
h1 0 12 10 20 1
h2 0 2 2 2 0
h3 0 6 0 0 0

Uso del software PHPSimplex

5
ocio de comidas rápidas. Para
mantequilla y 6 gramos de carne y le
10 gramos de harina y 2 gramos de
a arepa requiere 20 gramos de
pesos. Semanalmente cuenta con
amos de carne. ¿Cuántos productos
Este ejercicio es de maximización o
h2 h3
0 0
0 0
1 0
0 1

4
Estudiante Edgar Camargo Martin Dionisio

Ejercicio 2.
La panadería El Horno Caliente maneja tres productos: Pan aliñado con una utilidad de 60
pesos utilizando 5 gramos de harina, 3 gramos de azúcar y 2 gramos de mantequilla; pan liso
con una utilidad de 60 pesos utilizando 6 gramos de harina, 2 gramos de azúcar y 2 gramos
de mantequilla, pan de arroz con una utilidad de 60 pesos utilizando 5 gramos de harina, 3
gramos de azúcar y 3 gramos de mantequilla. Semanalmente el panadero cuenta con Harina
35 kilos, azúcar 12 kilos, mantequilla 10 kilos. (Estos valores lo convertimos a gramos
porque no podemos mezclar kilos con gramos) ¿Cuántos panes de cada tipo debe producir
semanalmente para generar mayor utilidad posible con los recursos disponibles? ¿Este
ejercicio es maximización o de minimización?

Información del enunciado


Producto
Disponibilidad
Pan Aliñado Pan Liso Pan de arroz
semanal
Utilidad/Unidad 60 60 60
Harina 5g 6g 5g 35000 g
Azúcar 3g 2g 3g 12000 g
Mantequilla 2g 2g 3g 10000 g

Identificación de variables

X1= # de pan aliñado a producir X semana


X2= # de pan liso a producir X semana
X3= # de pan de arroz a producir X semana

Formulación canónica

𝑀𝑎𝑥𝑖𝑚𝑖𝑧𝑎𝑟 �= 〖 60 〗 _𝑥1+ 〖 60 〗 _𝑥2+ 〖 60 〗 _𝑥3

Sujeto a:
5_𝑥1+ 6_𝑥2+ 5_𝑥3 ≤35000
3_𝑥1+ 2_𝑥2+ 3_𝑥3 ≤12000
2_𝑥1+ 2_𝑥2+ 3_𝑥3 ≤10000
𝑥1, 𝑥2, 𝑥3≥0

Formulación estándar

𝑀𝑎𝑥𝑖𝑚𝑖𝑧𝑎𝑟 �= 〖 60 〗 _𝑥1+ 〖 60 〗 _𝑥2+ 〖 60 〗 _𝑥3


"Sujeto a: "
5_𝑥1+ 6_𝑥2+ 5_𝑥3+𝑠1=35000
3_𝑥1+ 2_𝑥2+ 3_𝑥3+𝑠2=12000
2_𝑥1+ 2_𝑥2+ 3_𝑥3+𝑠3=10000
𝑥1, 𝑥2, 𝑥3, 𝑠1, 𝑠2, 𝑠3≥0
Método simplex algebraico primal

d de 60 Básicas Z X1 X2 X3 S1 S2 S3 Sol. Oper. Filas Factibilidad


=Q5/K5
; pan liso Z 1 -60 -60 -60 0 0 0 0 =Q6/K6 0
gramos S1 0 5 6 5 1 0 0 35000 7000
=Q7/K7
rina, 3 S2 0 3 2 3 0 1 0 12000 =Q8/K8 4000 Mínimo
n Harina S3 0 2 2 3 0 0 1 10000 5000
mos
oducir
ste Básicas Z X1 X2 X3 S1 S2 S3 Sol. Oper. Filas Factibilidad
Z 1 0 -20 0 0 20 0 240000 =J5-$K$5*J13
=J6-$K$6*J13
-12000
S1 0 0 2.67 0 1 -1.667 0 15000 5625
=J7/$K$7
X2 0 1 0.67 1 0 0.333 0 4000 =J8-$K$8*J13 6000
S3 0 0 0.67 1 0 -0.667 1 2000 3000 Mínimo

Básicas Z X1 X2 X3 S1 S2 S3 Sol. Oper. Filas Factibilidad


Z 1 0 0 30 0 0 =J11-$L$11*J20
30 300000 =J12-$L$12*J20
S1 0 0 0 -4 1 1 -4 7000
=J13-$L$13*J20
X1 0 1 0 0 0 1 -1 2000 =J14/$L$14
X2 0 0 1 1.5 0 -1 1.5 3000

Solución Z= 300000
X1= 2000
X2= 3000
X3= 0

¿Cuántos panes de cada tipo debe producir semanalmente para generar mayor
utilidad posible con los recursos disponibles?
RTA:
Pan aliñado: 2000
Pan liso: 3000
Pan de arroz: 0
¿Este ejercicio es maximización o de minimización?

Es un ejercicio de maximización
Uso del Software PHP Simplex
Estudiante Ledherzon Contreras Pinto

Mina sur Mina norte Mina central Relación

Carbón alto
volátil 80 60 40 >=
Carbón medio
volátil 70 50 30 >=
Carbón bajo
volátil 65 40 20 >=
Costo de un viaje
($) $ 2,500 $ 1,500 $ 900

Es un ejercicio de minimización, la función Z es una función de costo, y necesitan

Las variables quedan definidas:


x1= Cantidad de viajes diraio de la mina sur
x2= Cantidad de viajes diraio de la mina norte
x3=Cantidad de viajes diraio de la mina central

Minimizar Z=2500X_1+1500X_2+900X_3
Sujeto a:
80X_1+60X_2+40X_3≥5000
70X_1+50X_2+30X_3≥4000
Minimizar Z=2500X_1+1500X_2+900X_3
Sujeto a:
80X_1+60X_2+40X_3≥5000
70X_1+50X_2+30X_3≥4000
65X_1+40X_2+20X_3≥3000

Modelo Estándar:
Minimizar
Z-2500x1-1500x2-900x3=0
Restricciones
-80x1-60x2-40x3 + S1 =-5000
-70x1-50x2-30x3 +S2=-4000
-65x1-40x2-20x3+S3=-3000
x1,x2,x3≥0

X1 X2 X3 S1
Z -2500 -1500 -900 0
S1 -80 -60 -40 1
S2 -70 -50 -30 0
S3 -65 -40 -20 0

Se selecciona el menor valor de la columna resultado y esta es la fila pivote

X1 X2 X3 S1
Z -2500 -1500 -900 0
S1 -80 -60 -40 1
S2 -70 -50 -30 0
S3 -65 -40 -20 0

Se divide los valores de Z entre los valores de S1 y se escoje el menor valor y

31.25 25 22.5

X1 X2 X3 S1
Z -2500 -1500 -900 0
S1 -80 -60 -40 1
S2 -70 -50 -30 0
S3 -65 -40 -20 0

X1 X2 X3 S1
Z -2500 -1500 -900 0
1/-40*S1=S1 X3 2 1.5 1 -0.025
S2 -70 -50 -30 0
S3 -65 -40 -20 0

X1 X2 X3 S1
900*S1+Z=Z Z -700 -150 0 -22.5
X3 2 1.5 1 -0.025
S2 -70 -50 -30 0
S3 -65 -40 -20 0

X1 X2 X3 S1
Z -700 -150 0 -22.5
X3 2 1.5 1 -0.025
(30)*S1+S2=S2 S2 -10 -5 0 -0.75
S3 -65 -40 -20 0

X1 X2 X3 S1
Z -700 -150 0 -22.5
X3 2 1.5 1 -0.025
S2 -10 -5 0 -0.75
(20)*S1+S3=S3 S3 -25 -10 0 -0.5

Se elige el valor más negativo de la columna resultado y es la fila pivote

X1 X2 X3 S1
Z -700 -150 0 -22.5
X3 2 1.5 1 -0.025
S2 -10 -5 0 -0.75
S3 -25 -10 0 -0.5

Se divide los valores de Z entre los valores de S3 y se escoje el menor valor y

28 15
X1 X2 X3 S1
Z -700 -150 0 -22.5
X3 2 1.5 1 -0.025
S2 -10 -5 0 -0.75
X2 -25 -10 0 -0.5

X1 X2 X3 S1
Z -700 -150 0 -22.5
X3 2 1.5 1 -0.025
S2 -10 -5 0 -0.75
1/-10 S3=S3 X2 2.5 1 0 0.05

X1 X2 X3 S1
150*S3+Z=Z Z -325 0 0 -15
X3 2 1.5 1 -0.025
S2 -10 -5 0 -0.75
X2 2.5 1 0 0.05

X1 X2 X3 S1
Z -325 0 0 -15
(-1,5)*S3+S1=S1X3 -1.75 0 1 -0.1
S2 -10 -5 0 -0.75
X2 2.5 1 0 0.05

X1 X2 X3 S1
Z -325 0 0 -15
X3 -1.75 0 1 -0.1
5*S3+S2=S2 X1 2.5 0 0 -0.5
X2 2.5 1 0 0.05

Respuesta

Z 120000
X1 0
X2 50
X3 50

SOLUCIÓN

Para que el transporte quede al emnor costo se deben realizar 0 Via


50 viajes de la mina norte y 50 viajes de la mina central. Este
minimización de costos
Demostración en el simulador PHP
Requerimiento
mínimo

5000 Kg

4000 Kg

3000 Kg

de costo, y necesitan minimizar los costos de transporte

sur
norte
entral

00X_2+900X_3

X_3≥5000
X_3≥4000
0

00
00
00

S2 S3 Resultado
0 0 0
0 0 -5000
1 0 -4000
0 1 -3000

esta es la fila pivote

S2 S3 Resultado
0 0 0
0 0 -5000
1 0 -4000
0 1 -3000

oje el menor valor y esta es la columna pivote

S2 S3 Resultado
0 0 0
0 0 -5000
1 0 -4000
0 1 -3000

S2 S3 Resultado
0 0 0
0 0 125
1 0 -4000
0 1 -3000

S2 S3 Resultado
0 0 112500
0 0 125
1 0 -4000
0 1 -3000

S2 S3 Resultado
0 0 112500
0 0 125
1 0 -250
0 1 -3000

S2 S3 Resultado
0 0 112500
0 0 125
1 0 -250
0 1 -500

o y es la fila pivote

S2 S3 Resultado
0 0 112500
0 0 125
1 0 -250
0 1 -500

oje el menor valor y esta es la columna pivote

S2 S3 Resultado
0 0 112500
0 0 125
1 0 -250
0 1 -500

S2 S3 Resultado
0 0 112500
0 0 125
1 0 -250
0 -0.1 50

S2 S3 Resultado
0 -15 120000
0 0 125
1 0 -250
0 -0.1 50

S2 S3 Resultado
0 -15 120000
0 0.15 50
1 0 -250
0 -0.1 50

S2 S3 Resultado
0 -15 120000
0 0.15 50
1 -0.5 0
0 -0.1 50

IÓN

se deben realizar 0 Viajes de la mina sur,


e la mina central. Este ejercicio es de
de costos
Estudiante Erika Paola Parada

Casa de Carpintero
Relación Requerimiento
madera PACO (X1) RUFO (X2) LEO (X3)
GRANDE 1 3 2 ≥ Mínimo 20
MEDIANA 3 2 2 ≥ Mínimo 18
PEQUEÑA 0 3 2 ≥ Mínimo 15
Costo $ 120 $ 210 $ 150

Variables
X1 = Cantidad de contratos diarios con el carpintero Paco
X2= Cantidad de contratos diarios con el carpintero Rufo
X3 = Cantidad de contratos diarios con el carpintero Leo

MODELO CANÓNICO MODELO ESTÁNDAR NUEVO MODELO ESTÁNDAR

Función objetivo: Función objetivo: Función objetivo:


Minimizar: Minimizar: Minimizar:
Z = 120X1 + 210X2 + 150X3 Z - 120X1 - 210X2 - 150X3 = 0 Z - 120X1 - 210X2 - 150X3 = 0
Restricciones: Restricciones: Restricciones:
X1 + 3X2 + 2X3 ≥ 20 X1 + 3X2 + 2X3 - 1S1 = 20 -X1 - 3X2 - 2X3 + 1S1 = -20
3X1 + 2X2 + 2X3 ≥ 18 3X1 + 2X2 + 2X3 - 1S2 = 18 -3X1 - 2X2 - 2X3 + 1S2 = -18
3X2 + 2X3 ≥ 15 3X2 + 2X3 - 1S3 = 15 -3X2 - 2X3 + 1S3 = -15
X1, X2, X3 ≥ 0
Hay que pasar variables holgura a valores positivos para trabajar por método sim

Matriz del modelo


X1 X2 X3 S1 S2 S3
Z -120 -210 -150 0 0 0
S1 -1 -3 -2 1 0 0
S2 -3 -2 -2 0 1 0
S3 0 -3 -2 0 0 1
Iteración #1
1 Identificar la fila pivote Valor menor o mas negativo en la columna de Resultado sin tener en cuenta fila la
Fila S1
2 Identificar columna pivote Dividir valores de las variables X1, X2 y X3 de la fila Z por fila pivote
El numero mas cercano a cero indica la columna pivote

(−120)/(−1)=120 , (−210)/(−3)=𝟕� , (−150)/


(−2)=75

Columna X2
Matriz de columna y fila pivote Numero pivote
X1 X2 X3 S1 S2 S3
Z -120 -210 -150 0 0 0
S1 -1 -3 -2 1 0 0
S2 -3 -2 -2 0 1 0
S3 0 -3 -2 0 0 1

3 Hallar la nueva fila pivote Convertir el numero pivote en 1


Dividir fila pivote en numero pivote

X1 X2 X3 S1 S2 S3
Z -120 -210 -150 0 0 0
X2 -1 -3 -2 1 0 0
S2 -3 -2 -2 0 1 0
S3 0 -3 -2 0 0 1

Matriz con numero pivote = 1


X1 X2 X3 S1 S2 S3
Z -120 -210 -150 0 0 0
X2 0.33 1.00 0.67 -0.33 0.00 0.00
S2 -3 -2 -2 0 1 0
S3 0 -3 -2 0 0 1

4 Convertir en cero la columna pivote (menos el 1) Operación=


Para fila Z
X1 X2 X3
Actual Z -120.0 -210.0 -150.0
Operación 70.0 210.0 140.0
Nueva Z -50.0 0.0 -10.0
Para fila S2
X1 X2 X3
Actual S2 -3.0 -2.0 -2.0
Operación 0.7 2.0 1.3
Nuevo S2 -2.3 0.0 -0.7
Para fila S3
X1 X2 X3
Actual S3 0.0 -3.0 -2.0
Operación 1.0 3.0 2.0
Nuevo S3 1.0 0.0 0.0

Ordenando nueva matriz


X1 X2 X3 S1 S2 S3
Z -50.00 0.00 -10.00 -70.00 0.00 0.00
X2 0.33 1.00 0.67 -0.33 0.00 0.00
S2 -2.33 0.00 -0.67 -0.67 1.00 0.00
S3 1.00 0.00 0.00 -1.00 0.00 1.00
Todos los valores de la columna de resultados son positivos NO
Si hay un NO, se debe iterar
Todos los valores de la fila Z son ceros o negativos SI nuevamente
(Excepto el resultado)

Iteración #2
1 Identificar la fila pivote Valor menor o mas negativo en la columna de Resultado sin tener en cuenta la fila
Fila S2
2 Identificar columna pivote Dividir valores de las variables X1, X2 y X3 de la fila Z por fila pivote
El numero mas cercano a cero indica la columna pivote

(−50)/(−2,33)=21,46 , 0/0=− , (−10)/


(−0,67)=𝟏𝟒,𝟗�

Columna X3
Matriz de columna y fila pivote Numero pivote
X1 X2 X3 S1 S2 S3
Z -50.00 0.00 -10.00 -70.00 0.00 0.00
X2 0.33 1.00 0.67 -0.33 0.00 0.00
X3 -2.33 0.00 -0.67 -0.67 1.00 0.00
S3 1.00 0.00 0.00 -1.00 0.00 1.00

3 Hallar la nueva fila pivote Convertir el numero pivote en 1


Dividir fila pivote en numero pivote

X1 X2 X3 S1 S2 S3
Z -50.00 0.00 -10.00 -70.00 0.00 0.00
X2 0.33 1.00 0.67 -0.33 0.00 0.00
X3 -2.33 0.00 -0.67 -0.67 1.00 0.00
S3 1.00 0.00 0.00 -1.00 0.00 1.00

Matriz con numero pivote = 1


X1 X2 X3 S1 S2 S3
Z -50.00 0.00 -10.00 -70.00 0.00 0.00
X2 0.33 1.00 0.67 -0.33 0.00 0.00
X3 3.50 0.00 1.00 1.00 -1.50 0.00
S3 1.00 0.00 0.00 -1.00 0.00 1.00
4 Convertir en cero la columna pivote (menos el 1) Operación=
Para fila Z
X1 X2 X3
Actual Z -50.00 0.00 -10.00
Operación 35.00 0.00 10.00
Nueva Z -15.0 0.0 0.0

Para fila X2
X1 X2 X3
Actual X2 0.33 1.00 0.67
Operación -2.33 0.00 -0.67
Nuevo X2 -2.0 1.0 0.0

Para fila S3
X1 X2 X3
Actual S3 1.00 0.00 0.00
Operación 0.00 0.00 0.00
Nuevo S3 1.0 0.0 0.0

Ordenando nueva matriz


X1 X2 X3 S1 S2 S3
Z -15.00 0.00 0.00 -60.00 -15.00 0.00
X2 -2.00 1.00 0.00 -1.00 1.00 0.00
X3 3.50 0.00 1.00 1.00 -1.50 0.00
S3 1.00 0.00 0.00 -1.00 0.00 1.00

Todos los valores de la columna de resultados son positivos SI


Si hay un NO, se debe iterar
Todos los valores de la fila Z son ceros o negativos SI nuevamente
(Excepto el resultado)

X1 X2 X3 S1 S2 S3
Z -15 0 0 -60 -15 0
X2 -2 1 0 -1 1 0
X3 3.5 0 1 1 -1.5 0
S3 1 0 0 -1 0 1

Variables
X1 = Cantidad de contratos diarios con el carpintero Paco X1= 0
X2= Cantidad de contratos diarios con el carpintero Rufo X2= 2
X3 = Cantidad de contratos diarios con el carpintero Leo X3= 7

Función objetivo:
Minimizar:
Z = 120X1 + 210X2 + 150X3 Z= 1470
Restricciones:
X1 + 3X2 + 2X3 ≥ 20 r1= 20
3X1 + 2X2 + 2X3 ≥ 18 r2= 18
3X2 + 2X3 ≥ 15 r3= 20
X1, X2, X3 ≥ 0

Al carpintero Paco no se le debe contratar


Al carpintero Rufo se de le debe contratar 2 días
Al carpintero Leo se de le debe contratar 7 días

Con estos contratos se cumple el pedido exigido y al menor costo de mano de obra de los carpintero $1470 dólares.
Uso de software PHPSimplex

EVO MODELO ESTÁNDAR

nción objetivo:

120X1 - 210X2 - 150X3 = 0

- 3X2 - 2X3 + 1S1 = -20


1 - 2X2 - 2X3 + 1S2 = -18
2 - 2X3 + 1S3 = -15

os para trabajar por método simplex dual

Resultado
0
-20
-18
-15
#1
ultado sin tener en cuenta fila la Z

a Z por fila pivote

Resultado
0
-20
-18
-15

Resultado
0
-20 X2 0.3333 1.0000 0.6667 -0.3333 0.0000
-18
-15

Resultado
0
6.67
-18
-15

numero operación*fila pivote

S1 S2 S3 Resultado numero operación


0.0 0.0 0.0 0.0 210.00
-70.0 0.0 0.0 1400.0
-70.0 0.0 0.0 1400.0

S1 S2 S3 Resultado numero operación


0.0 1.0 0.0 -18.0 2.00
-0.7 0.0 0.0 13.3
-0.7 1.0 0.0 -4.7

S1 S2 S3 Resultado numero operación


0.0 0.0 1.0 -15.0 3.00
-1.0 0.0 0.0 20.0
-1.0 0.0 1.0 5.0

Resultado
1400.00
6.67
-4.67
5.00

hay un NO, se debe iterar


nuevamente

#2
ultado sin tener en cuenta la fila Z

a Z por fila pivote

El método simplex dual solo admite divisiones


entre negativos

Resultado
1400.00
6.67
-4.67
5.00

Resultado
1400.00
6.67 X3 3.5000 0.0000 1.0000 1.0000 -1.5000
-4.67
5.00

Resultado
1400.00
6.67
7.00
5.00
numero operación*fila pivote

S1 S2 S3 Resultado numero operación


-70.00 0.00 0.00 1400.00 10.00
10.00 -15.00 0.00 70.00
-60.0 -15.0 0.0 1470.0

S1 S2 S3 Resultado numero operación


-0.33 0.00 0.00 6.67 -0.67
-0.67 1.00 0.00 -4.67
-1.0 1.0 0.0 2.0

S1 S2 S3 Resultado numero operación


-1.00 0.00 1.00 5.00 0.00
0.00 0.00 0.00 0.00
-1.0 0.0 1.0 5.0

Resultado
1470.00
2.00
7.00
5.00

hay un NO, se debe iterar


nuevamente

Resultado
1470
2
7
5 Debe ser cero para que la optimización Z=1470, con x2=2 y x3=7

5 0
2 2
7 7
2070 1470

25 20
33 18
20 20

carpintero $1470 dólares.


0.0000 6.6667
0.0000 7.0000
La frutería Pammy vende tres tipos de ensaladas de fruta: La ensalada junior está compuesta de 150 gramos de
fruta, 12 gramos de crema de leche, y se elabora en 10 minutos; la ensalada súper está compuesta de 250 gramos
de fruta, 30 gramos de crema de leche, y se elabora en 15 minutos; la ensalada tropical está compuesta de 200
gramos de fruta, 0 gramos de crema de leche, y se elabora en 12 minutos. Se debe gastar como mínimo 20000
gramos de fruta debido a que se tiene un contrato fijo con las fincas que proveen la fruta y no hay espacio de
almacenamiento; se debe gastar máximo 12000 gramos de crema de leche y máximo 240 horas para elaborar los
pedidos. Cada ensalada genera una utilidad de $500, $700 y $600 pesos, respectivamente. ¿Cuántas ensaladas de
cada tipo se deben vender diariamente con los recursos disponibles a fin de generar la mayor utilidad posible?

Ensalada
ÍTEM Relación Requerimiento
X1 X2 X3
gr de gruta 150 250 200 ≥ Mínimo 20000
gr crema 12 30 0 ≤ Máximo 12000
tiempo (m) 10 15 12 ≤ Máximo 14400
Costo $ 500 $ 700 $ 600

Variables
X1 = Ensalada junior
X2= Ensalada súper
X3 = Ensalada tropical

MODELO CANÓNICO MODELO ESTÁNDAR

Función objetivo: Función objetivo:


Maximizar Maximizar
Z = 500X1 + 700X2 + 600X3 Z - 500X1 - 700X2 - 600X3 = 0
Restricciones: Restricciones:
150X1 + 250X2 + 200X3 ≥ 20000 150X1 + 250X2 + 200X3 - 1S1 = 20000
12X1 + 30X2 ≤ 12000 12X1 + 30X2 + 1S2 = 12000
10X1 + 15X2 + 12X3 ≤ 14400 10X1 + 15X2 + 12X3 +1S3 = 14400
X1, X2, X3 ≥ 0

Matriz del modelo


X1 X2 X3 S1 S2 S3
Z -500 -700 -600 0 0 0
S1 150 250 200 -1 0 0
S2 12 30 0 0 1 0
S3 10 15 12 0 0 1
Iteración #1
1 Identificar columna pivote En la fila Z, observar el valor menor o mas negativo,
Columna X2 la ubicación será la columna pivote

X1 X2 X3 S1 S2 S3
Z -500 -700 -600 0 0 0
S1 150 250 200 -1 0 0
S2 12 30 0 0 1 0
S3 10 15 12 0 0 1
2 Identificar fila pivote Dividir valores de la columna resultado por la columna pivote (excepto fila Z)
El numero menor positivo indica la fila pivote

(−20000)/(−250)=80 , 12000/30=400 , 14400/15=960

Fila S1
Matriz de columna y fila pivote Numero pivote
X1 X2 X3 S1 S2 S3
Z -500 -700 -600 0 0 0
S1 150 250 200 -1 0 0
S2 12 30 0 0 1 0
S3 10 15 12 0 0 1

3 Hallar la nueva fila pivote Convertir el numero pivote en 1


Dividir fila pivote en numero pivote

X1 X2 X3 S1 S2 S3
Z -500 -700 -600 0 0 0
X2 150 250 200 -1 0 0
S2 12 30 0 0 1 0
S3 10 15 12 0 0 1

Matriz con numero pivote = 1


X1 X2 X3 S1 S2 S3
Z -500 -700 -600 0 0 0
X2 0.6 1 0.8 -0.004 0 0
S2 12 30 0 0 1 0
S3 10 15 12 0 0 1

4 Convertir en cero la columna pivote (menos el 1) Operación=


Para fila Z
X1 X2 X3
Actual Z -500.0 -700.0 -600.0
Operación 420.0 700.0 560.0
Nueva Z -80.0 0.0 -40.0
Para fila S2
X1 X2 X3
Actual S2 12.0 30.0 0.0
Operación -18.0 -30.0 -24.0
Nuevo S2 -6.0 0.0 -24.0
Para fila S3
X1 X2 X3
Actual S3 10.0 15.0 12.0
Operación -9.0 -15.0 -12.0
Nuevo S3 1.0 0.0 0.0

Ordenando nueva matriz


X1 X2 X3 S1 S2 S3
Z -80.000 0.000 -40.000 -2.800 0.000 0.000
X2 0.600 1.000 0.800 -0.004 0.000 0.000
S2 -6.000 0.000 -24.000 0.120 1.000 0.000
S3 1.000 0.000 0.000 0.060 0.000 1.000

Todos los valores de la fila Z son ceros o positivos NO


(Excepto el resultado) Si hay un NO, se debe iterar
nuevamente

Iteración #2
1 Identificar columna pivote En la fila Z, observar el valor menor o mas negativo,
Columna X1 la ubicación será la columna pivote

X1 X2 X3 S1 S2 S3
Z -80.000 0.000 -40.000 -2.800 0.000 0.000
X2 0.600 1.000 0.800 -0.004 0.000 0.000
S2 -6.000 0.000 -24.000 0.120 1.000 0.000
S3 1.000 0.000 0.000 0.060 0.000 1.000

2 Identificar fila pivote Dividir valores de la columna resultado por la columna pivote (excepto fila Z)
El numero menor positivo indica la fila pivote

80/0,60=133,3 , 9600/(−6)=−1600 , 13200/1=13200

Fila X2
Matriz de columna y fila pivote Numero pivote
X1 X2 X3 S1 S2 S3
Z -80 0 -40 -2.8 0 0
X1 0.6 1 0.8 -0.004 0 0
S2 -6 0 -24 0.12 1 0
S3 1 0 0 0.06 0 1

3 Hallar la nueva fila pivote Convertir el numero pivote en 1


Dividir fila pivote en numero pivote

X1 X2 X3 S1 S2 S3
Z -80 0 -40 -2.8 0 0
X1 0.6 1 0.8 -0.004 0 0
S2 -6 0 -24 0.12 1 0
S3 1 0 0 0.06 0 1

Matriz con numero pivote = 1


X1 X2 X3 S1 S2 S3
Z -80.0000 0.0000 -40.0000 -2.8000 0.0000 0.0000
X1 1.0000 1.6667 1.3333 -0.0067 0.0000 0.0000
S2 -6.0000 0.0000 -24.0000 0.1200 1.0000 0.0000
S3 1.0000 0.0000 0.0000 0.0600 0.0000 1.0000

4 Convertir en cero la columna pivote (menos el 1) Operación=


Para fila Z
X1 X2 X3
Actual Z -80.0 0.0 -40.0
Operación 80.0 133.3 106.7
Nueva Z 0.0 133.3 66.7

Para fila S2
X1 X2 X3
Actual S2 -6.0 0.0 -24.0
Operación 6.0 10.0 8.0
Nuevo S2 0.0 10.0 -16.0

Para fila S3
X1 X2 X3
Actual S3 1.0 0.0 0.0
Operación -1.0 -1.7 -1.3
Nuevo S3 0.0 -1.7 -1.3

Ordenando nueva matriz


X1 X2 X3 S1 S2 S3
Z 0.0000 133.3333 66.6667 -3.3333 0.0000 0.0000
X1 1.0000 1.6667 1.3333 -0.0067 0.0000 0.0000
S2 0.0000 10.0000 -16.0000 0.0800 1.0000 0.0000
S3 0.0000 -1.6667 -1.3333 0.0667 0.0000 1.0000

Todos los valores de la fila Z son ceros o positivos NO


(Excepto el resultado) Si hay un NO, se debe iterar
nuevamente
Iteración #3
1 Identificar columna pivote En la fila Z, observar el valor menor o mas negativo,
Columna S1 la ubicación será la columna pivote

X1 X2 X3 S1 S2 S3
Z 0.000 133.333 66.667 -3.333 0.000 0.000
X1 1.000 1.667 1.333 -0.007 0.000 0.000
S2 0.000 10.000 -16.000 0.080 1.000 0.000
S3 0.000 -1.667 -1.333 0.067 0.000 1.000

2 Identificar fila pivote Dividir valores de la columna resultado por la columna pivote (excepto fila Z)
El numero menor positivo indica la fila pivote

133,33/(−0,007)=−20000 , 10400/0,08=130000 ,
13066,67/0,067=196000

Fila S2
Matriz de columna y fila pivote Numero pivote
X1 X2 X3 S1 S2 S3
Z 0.0000 133.3333 66.6667 -3.3333 0.0000 0.0000
X1 1.0000 1.6667 1.3333 -0.0067 0.0000 0.0000
S2 0.0000 10.0000 -16.0000 0.0800 1.0000 0.0000
S3 0.0000 -1.6667 -1.3333 0.0667 0.0000 1.0000

3 Hallar la nueva fila pivote Convertir el numero pivote en 1


Dividir fila pivote en numero pivote

X1 X2 X3 S1 S2 S3
Z 0.0000 133.3333 66.6667 -3.3333 0.0000 0.0000
X1 1.0000 1.6667 1.3333 -0.0067 0.0000 0.0000
S2 0.0000 10.0000 -16.0000 0.0800 1.0000 0.0000
S3 0.0000 -1.6667 -1.3333 0.0667 0.0000 1.0000

Matriz con numero pivote = 1


X1 X2 X3 S1 S2 S3
Z 0.0000 133.3333 66.6667 -3.3333 0.0000 0.0000
X1 1.0000 1.6667 1.3333 -0.0067 0.0000 0.0000
S2 0.0000 125.0000 -200.0000 1.0000 12.5000 0.0000
S3 0.0000 -1.6667 -1.3333 0.0667 0.0000 1.0000

4 Convertir en cero la columna pivote (menos el 1) Operación=


Para fila Z
X1 X2 X3
Actual Z 0.0 133.3 66.7
Operación 0.0 416.7 -666.7
Nueva Z 0.0 550.0 -600.0
Para fila X1
X1 X2 X3
Actual X1 1.0 1.7 1.3
Operación 0.0 0.8 -1.3
Nuevo X1 1.0 2.5 0.0

Para fila S3
X1 X2 X3
Actual S3 0.0 -1.7 -1.3
Operación 0.0 -8.3 13.3
Nuevo S3 0.0 -10.0 12.0

Ordenando nueva matriz


X1 X2 X3 S1 S2 S3
Z 0.0000 550.0000 -600.0000 0.0000 41.6667 0.0000
X1 1.0000 2.5000 0.0000 0.0000 0.0833 0.0000
S2 0.0000 125.0000 -200.0000 1.0000 12.5000 0.0000
S3 0.0000 -10.0000 12.0000 0.0000 -0.8333 1.0000

Todos los valores de la fila Z son ceros o positivos NO


(Excepto el resultado) Si hay un NO, se debe iterar
nuevamente

Iteración #4
1 Identificar columna pivote En la fila Z, observar el valor menor o mas negativo,
Columna X3 la ubicación será la columna pivote

X1 X2 X3 S1 S2 S3
Z 0.000 550.000 -600.000 0.000 41.667 0.000
X1 1.000 2.500 0.000 0.000 0.083 0.000
S2 0.000 125.000 -200.000 1.000 12.500 0.000
S3 0.000 -10.000 12.000 0.000 -0.833 1.000

2 Identificar fila pivote Dividir valores de la columna resultado por la columna pivote (excepto fila Z)
El numero menor positivo indica la fila pivote

1000/0=0 , 130000/(−200)=−650 , 4400/12=366,67

Fila S3
Matriz de columna y fila pivote Numero pivote
X1 X2 X3 S1 S2 S3
Z 0.0000 550.0000 -600.0000 0.0000 41.6667 0.0000
X1 1.0000 2.5000 0.0000 0.0000 0.0833 0.0000
S2 0.0000 125.0000 -200.0000 1.0000 12.5000 0.0000
S3 0.0000 -10.0000 12.0000 0.0000 -0.8333 1.0000

3 Hallar la nueva fila pivote Convertir el numero pivote en 1


Dividir fila pivote en numero pivote

X1 X2 X3 S1 S2 S3
Z 0.0000 550.0000 -600.0000 0.0000 41.6667 0.0000
X1 1.0000 2.5000 0.0000 0.0000 0.0833 0.0000
S2 0.0000 125.0000 -200.0000 1.0000 12.5000 0.0000
S3 0.0000 -10.0000 12.0000 0.0000 -0.8333 1.0000

Matriz con numero pivote = 1


X1 X2 X3 S1 S2 S3
Z 0.0000 550.0000 -600.0000 0.0000 41.6667 0.0000
X1 1.0000 2.5000 0.0000 0.0000 0.0833 0.0000
S2 0.0000 125.0000 -200.0000 1.0000 12.5000 0.0000
S3 0.0000 -0.8333 1.0000 0.0000 -0.0694 0.0833

4 Convertir en cero la columna pivote (menos el 1) Operación=


Para fila Z
X1 X2 X3
Actual Z 0.0 550.0 -600.0
Operación 0.0 -500.0 600.0
Nueva Z 0.0 50.0 0.0

Para fila X1
X1 X2 X3
Actual X1 1.0 2.5 0.0
Operación 0.0 0.0 0.0
Nuevo X1 1.0 2.5 0.0

Para fila S2
X1 X2 X3
Actual S2 0.0 125.0 -200.0
Operación 0.0 -166.7 200.0
Nuevo S2 0.0 -41.7 0.0

Ordenando nueva matriz


X1 X2 X3 S1 S2 S3
Z 0.0000 50.0000 0.0000 0.0000 0.0000 50.0000
X1 1.0000 2.5000 0.0000 0.0000 0.0833 0.0000
S2 0.0000 -41.6667 0.0000 1.0000 -1.3889 16.6667
S3 0.0000 -0.8333 1.0000 0.0000 -0.0694 0.0833

Todos los valores de la fila Z son ceros o positivos SI


Si hay un NO, se debe iterar
nuevamente
(Excepto el resultado) Si hay un NO, se debe iterar
nuevamente

X1 X2 X3 S1 S2 S3
Z 0.00 50.00 0.00 0.00 0.00 50.00
X1 1.00 2.50 0.00 0.00 0.08 0.00
S2 0.00 -41.67 0.00 1.00 -1.39 16.67
S3 0.00 -0.83 1.00 0.00 -0.07 0.08

Variables
X1 = Ensalada junior X1= 1000
X2= Ensalada súper X2= 0
X3 = Ensalada tropical X3= 366.667

Función objetivo:
Maximizar
Z = 500X1 + 700X2 + 600X3 Z= 720000.2

Restricciones:
150X1 + 250X2 + 200X3 ≥ 20000 r1= 223333.4
12X1 + 30X2 ≤ 12000 r2= 12000
10X1 + 15X2 + 12X3 ≤ 14400 r3= 14400.004
X1, X2, X3 ≥ 0

La mayor utilidad posible, con los recursos dados, esta dada por
1000 ensaladas junior
0 ensaladas súper
367 ensaladas tropical
Para una utilidad de $720000 pesos
uesta de 150 gramos de
ompuesta de 250 gramos
está compuesta de 200
ar como mínimo 20000
ta y no hay espacio de
0 horas para elaborar los
e. ¿Cuántas ensaladas de
mayor utilidad posible?

Resultado
0
20000
12000
14400
#1

Resultado
0
20000 80
12000 400
14400 960
mna pivote (excepto fila Z)

Resultado
0
20000
12000
14400

Resultado
0
20000 X2 0.6000 1.0000 0.8000 -0.0040 0.0000
12000
14400

Resultado
0
80
12000
14400

numero operación*fila pivote

S1 S2 S3 Resultado numero operación


0.0 0.0 0.0 0.0 700.00
-2.8 0.0 0.0 56000.0
-2.8 0.0 0.0 56000.0
S1 S2 S3 Resultado numero operación
0.0 1.0 0.0 12000.0 -30.00
0.1 0.0 0.0 -2400.0
0.1 1.0 0.0 9600.0

S1 S2 S3 Resultado numero operación


0.0 0.0 1.0 14400.0 -15.00
0.1 0.0 0.0 -1200.0
0.1 0.0 1.0 13200.0

Resultado
56000.000
80.000
9600.000
13200.000

hay un NO, se debe iterar


nuevamente

#2

Resultado
56000.000
80.000 133.333
9600.000 -1600.000
13200.000 13200.000

mna pivote (excepto fila Z)

Resultado
56000
80
9600
13200
Resultado
56000
80 X2 1.0000 1.6667 1.3333 -0.0067 0.0000
9600
13200

Resultado
56000.0000
133.3333
9600.0000
13200.0000

numero operación*fila pivote

S1 S2 S3 Resultado numero operación


-2.8 0.0 0.0 56000.0 80.00
-0.5 0.0 0.0 10666.7
-3.3 0.0 0.0 66666.7

S1 S2 S3 Resultado numero operación


0.1 1.0 0.0 9600.0 6.00
0.0 0.0 0.0 800.0
0.1 1.0 0.0 10400.0

S1 S2 S3 Resultado numero operación


0.1 0.0 1.0 13200.0 -1.00
0.0 0.0 0.0 -133.3
0.1 0.0 1.0 13066.7

Resultado
66666.6667
133.3333
10400.0000
13066.6667

hay un NO, se debe iterar


nuevamente
#3

Resultado
66666.667
133.333 -20000.000
10400.000 130000.000
13066.667 196000.000

mna pivote (excepto fila Z)

Resultado
66666.6667
133.3333
10400.0000
13066.6667

Resultado
66666.6667
133.3333 S2 0.0000 125.0000 -200.0000 1.0000 12.5000
10400.0000
13066.6667

Resultado
66666.6667
133.3333
130000.0000
13066.6667

numero operación*fila pivote

S1 S2 S3 Resultado numero operación


-3.3 0.0 0.0 66666.7 3.33
3.3 41.7 0.0 433333.3
0.0 41.7 0.0 500000.0
S1 S2 S3 Resultado numero operación
0.0 0.0 0.0 133.3 0.01
0.0 0.1 0.0 866.7
0.0 0.1 0.0 1000.0

S1 S2 S3 Resultado numero operación


0.1 0.0 1.0 13066.7 -0.07
-0.1 -0.8 0.0 -8666.7
0.0 -0.8 1.0 4400.0

Resultado
500000.0000
1000.0000
130000.0000
4400.0000

hay un NO, se debe iterar


nuevamente

#4

Resultado
500000.000
1000.000 #DIV/0!
130000.000 -650.000
4400.000 366.667

mna pivote (excepto fila Z)

Resultado
500000.0000
1000.0000
130000.0000
4400.0000

Resultado
500000.0000
1000.0000 S3 0.0000 -0.8333 1.0000 0.0000 -0.0694
130000.0000
4400.0000

Resultado
500000.0000
1000.0000
130000.0000
366.6667

numero operación*fila pivote

S1 S2 S3 Resultado numero operación


0.0 41.7 0.0 500000.0 600.00
0.0 -41.7 50.0 220000.0
0.0 0.0 50.0 720000.0

S1 S2 S3 Resultado numero operación


0.0 0.1 0.0 1000.0 0.00
0.0 0.0 0.0 0.0
0.0 0.1 0.0 1000.0

S1 S2 S3 Resultado numero operación


1.0 12.5 0.0 130000.0 200.00
0.0 -13.9 16.7 73333.3
1.0 -1.4 16.7 203333.3

Resultado
720000.0000
1000.0000
203333.3333
366.6667

hay un NO, se debe iterar


nuevamente
hay un NO, se debe iterar
nuevamente

Resultado
720000.00
1000.00
203333.33 Debe ser cero para que la optimización Z=720000, con x1=1000 y x3=367
366.67

APROXIMADO 367
Uso de software PHPSimplex
0.0000 80.0000
0.0000 133.3333
0.0000 ###
0.0833 366.6667
Referencias bibibliográficas

Valle, S. (2012) Álgebra lineal para estudiantes de ingeniería y ciencias (pp. 24-34),
España: Editorial McGraw-Hill. Recuperado de:
https://bibliotecavirtual.unad.edu.co:2538/lib/unadsp/detail.action?docID=4585362

Martínez, S. (2014). Investigación de operaciones. (1a. ed.) (pp. 44-67), México: Grupo Editorial Patria. Recupera

Goberna, T. (2004). Optimización lineal: teoría, métodos y modelos (pp. 277-298), Alicante, España: Editorial Mc

También podría gustarte