Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modelos de Distribución en
lingo compacto
ALMACENES CLIENTES
C1 15
6
30 A1
2
7 6
4
C2 17
CAPACIDAD 9 DEMANDA
25 A2
(toneladas) 5 (toneladas)
3
8 8
C3 22
1
21 A3
A2
5
C4 12
Costo de envío
($/tonelada)
2.- ENTORNO DEL LINGO COMPACTO
30 A1
2
ALMACEN/A1,A2,A3/: CAPACIDAD; 7 6
C2 17
4
9
25 A2
5
Ejemplo: definido por comprensión 3
C3 22
8 8
1
21 A3
A2
CLIENTE/ 1 . . 4 /: DEMANDA; 5
C4 12
3.- DEFINICIÓN DE CONJUNTOS
SETS DERIVADOS : Son conjuntos de set primitivos.
Sintaxis:
Nombre_conjunto(Nomb_conj_1, Nomb_conj_2,…Nomb_conj_n): Atributos;
CLIENTE
ALMACENES CLIENTES
ALMACÉN C1 C2 C3 C4
C1 15
Matriz de A1 6 2 6 7 6
costos 30 A1
A2 4 9 5 3 2
7 6
C2 17
A3 8 8 1 5 4
9
25 A2
5
CLIENTE 3
C3 22
8 8
ALMACÉN C1 C2 C3 C4 1
21 A3
A2
5
Matriz de A1 X11 X12 X13 X14
C4 12
variables A2 X21 X22 X23 X24
C1 15
6
30 A1
2
7 6
C2 17
4
9
25 A2
5
3
C3 22
8 8
1
21 A3
A2
5
C4 12
CLIENTE
ALMACÉN C1 C2 C3 C4
A1 6 2 6 7
A2 4 9 5 3
A3 8 8 1 5
Matriz de costos
5 .- MODELO DE DISTRIBUCIÓN
Xij : Cantidad enviada del almacén i al cliente j
CAPACIDAD: DEMANDA:
X11 + X12 + X13 + X14 <= 30 X11 + X21 + X31 >= 15
X21 + X22 + X23 + X24 <= 25 X12 + X22 + X32 >= 17
X31 + X32 + X33 + X34 <= 21 X13 + X23 + X33 >= 22
X14 + X24 + X34 >= 12
ALMACENES CLIENTES
C1 15
6
30 A1
2
7 6
C2 17
4
9
25 A2
5
3
C3 22
8 8
1
21 A3
A2
5
C4 12
FUNCIÓN OBJETIVO:
MIN = 6*X11 + 2*X12 + 6*X13 + 7*X14 +
4*X21 + 9*X22 + 5*X23 + 3*X24 +
8*X31 + 8*X32 + 1*X33 + 5*X34 ;
6 .- USO DE SENTENCIAS @FOR Y @SUM
@FOR (Set_index_list) | Conditional_qualifier : Expression);
@SUM (Set_index_list) | Conditional_qualifier : Expression);
@SUM( CLIENTE( j )
!Restricción de capacidad;
@FOR(ALMACEN(I):
@SUM(CLIENTE(J):
X(I,J))<= CAPACIDAD(I));
6 .- USO DE SENTENCIAS @FOR Y @SUM
@FOR (Set_index_list) | Conditional_qualifier : Expression);
@SUM (Set_index_list) | Conditional_qualifier : Expression);
@SUM( ALMACEN ( i )
!Restricción de demanda;
@FOR(CLIENTE(J):
@SUM(ALMACEN(I):
X(I,J))>= DEMANDA(J));
7.- CONSTRUCCIÓN DE LA FUNCIÓN OBJETIVO
Ejemplo: RUTA(ALMACEN,CLIENTE) : COSTO , X ;
Xij: Cantidad enviada del
almacén i al cliente j
CLIENTE CLIENTE
ALMACÉN C1 C2 C3 C4 ALMACÉN C1 C2 C3 C4
A1 6 2 6 7 A1 X11 X12 X13 X14
A2 4 9 5 3 A2 X21 X22 X23 X24
Matriz de
costos A3 8 8 1 5 A3 X31 X32 X33 X34
Matriz de
variables
Min = @SUM(RUTA(I,J):COSTO(I,J)*X(I,J));
8.- MODELO FINAL EN LINGO COMPACTO
SETS:
ALMACEN/A1,A2,A3/:CAPACIDAD;
CLIENTE/1..4/:DEMANDA;
RUTA(ALMACEN,CLIENTE):COSTO,X;
ENDSETS
Min = @SUM(RUTA(I,J):COSTO(I,J)*X(I,J));
@FOR(ALMACEN(I): @SUM(CLIENTE(J):X(I,J))<= CAPACIDAD(I));
@FOR(CLIENTE(J): @SUM(ALMACEN(I):X(I,J))>= DEMANDA(J));
DATA:
CAPACIDAD = 30,25,21;
DEMANDA = 15,17,22,12;
COSTO = 6,2,6,7,4,9,5,3,8,8,1,5;
ENDDATA
8.- MODELO FINAL EN LINGO COMPACTO
SETS:
ALMACEN/A1,A2,A3/:CAPACIDAD;
CLIENTE/1..4/:DEMANDA;
RUTA(ALMACEN,CLIENTE):COSTO,X;
ENDSETS
Min = @SUM(RUTA(I,J):COSTO(I,J)*X(I,J));
@FOR(ALMACEN(I): @SUM(CLIENTE(J):X(I,J))<= CAPACIDAD(I));
@FOR(CLIENTE(J): @SUM(ALMACEN(I):X(I,J))>= DEMANDA(J));
DATA:
CAPACIDAD = 30,25,21;
DEMANDA = 15,17,22,12;
COSTO = 6,2,6,7,4,9,5,3,8,8,1,5;
ENDDATA
9.- SOLUCIÓN DEL LINGO COMPACTO
Variable Value Reduced Cost
CAPACIDAD( A1) 30.00000 0.000000
CAPACIDAD( A2) 25.00000 0.000000
CAPACIDAD( A3) 21.00000 0.000000
DEMANDA( 1) 15.00000 0.000000
DEMANDA( 2) 17.00000 0.000000
DEMANDA( 3) 22.00000 0.000000
DEMANDA( 4) 12.00000 0.000000
COSTO( A1, 1) 6.000000 0.000000
COSTO( A1, 2) 2.000000 0.000000
COSTO( A1, 3) 6.000000 0.000000 Row Slack or Surplus Dual Price
COSTO( A1, 4) 7.000000 0.000000 1 161.0000 -1.000000
COSTO( A2, 1) 4.000000 0.000000 2 10.00000 0.000000
COSTO( A2, 2) 9.000000 0.000000 3 0.000000 2.000000
COSTO( A2, 3) 5.000000 0.000000 4 0.000000 5.000000
COSTO( A2, 4) 3.000000 0.000000 5 0.000000 -6.000000
COSTO( A3, 1) 8.000000 0.000000 6 0.000000 -2.000000
COSTO( A3, 2) 8.000000 0.000000 7 0.000000 -6.000000
COSTO( A3, 3) 1.000000 0.000000 8 0.000000 -5.000000
COSTO( A3, 4) 5.000000 0.000000
X( A1, 1) 2.000000 0.000000
X( A1, 2) 17.00000 0.000000
X( A1, 3) 1.000000 0.000000
X( A1, 4) 0.000000 2.000000
X( A2, 1) 13.00000 0.000000
X( A2, 2) 0.000000 9.000000
X( A2, 3) 0.000000 1.000000
X( A2, 4) 12.00000 0.000000
X( A3, 1) 0.000000 7.000000
X( A3, 2) 0.000000 11.00000
X( A3, 3) 21.00000 0.000000
X( A3, 4) 0.000000 5.000000
9.- SOLUCIÓN DEL LINGO COMPACTO
Variable Value Reduced Cost
CAPACIDAD( A1) 30.00000 0.000000
CAPACIDAD( A2) 25.00000 0.000000
CAPACIDAD( A3) 21.00000 0.000000
DEMANDA( 1) 15.00000 0.000000
DEMANDA( 2) 17.00000 0.000000
DEMANDA( 3) 22.00000 0.000000
DEMANDA( 4) 12.00000 0.000000
COSTO( A1, 1) 6.000000 0.000000
COSTO( A1, 2) 2.000000 0.000000
COSTO( A1, 3) 6.000000 0.000000 Row Slack or Surplus Dual Price
COSTO( A1, 4) 7.000000 0.000000 1 161.0000 -1.000000
COSTO( A2, 1) 4.000000 0.000000 2 10.00000 0.000000
COSTO( A2, 2) 9.000000 0.000000 3 0.000000 2.000000
COSTO( A2, 3) 5.000000 0.000000 4 0.000000 5.000000
COSTO( A2, 4) 3.000000 0.000000 5 0.000000 -6.000000
COSTO( A3, 1) 8.000000 0.000000 6 0.000000 -2.000000
COSTO( A3, 2) 8.000000 0.000000 7 0.000000 -6.000000
COSTO( A3, 3) 1.000000 0.000000 8 0.000000 -5.000000
COSTO( A3, 4) 5.000000 0.000000
X( A1, 1) 2.000000 0.000000
X( A1, 2) 17.00000 0.000000
X( A1, 3) 1.000000 0.000000
X( A1, 4) 0.000000 2.000000 Reporte administrativo:
X( A2, 1) 13.00000 0.000000 Desde el almacén A1, enviar 2, 17 y 1 unidades
X( A2, 2) 0.000000 9.000000 a los clientes 1,2 y 3 respectivamente, desde el
X( A2, 3) 0.000000 1.000000 almacén A2 enviar 13 y 12 unidades a los
X( A2, 4) 12.00000 0.000000 clientes 1 y 4 respectivamente y desde el
X( A3, 1) 0.000000 7.000000
X( A3, 2) 0.000000 11.00000
almacén A3 enviar 21 unidades al cliente 3 con
X( A3, 3) 21.00000 0.000000 un costo óptimo de envío de $161
X( A3, 4) 0.000000 5.000000
ALMACENES CLIENTES
2
6
1 15
13
30 20 A1
2
17
2 17
4
CAPACIDAD DEMANDA
(toneladas)
25 A2
(toneladas)
1
3
3 22
21
1
21 A3
A2
12
4 12 Z*= 161
Reporte administrativo:
Solución gráfica del modelo: Desde el almacén A1, enviar 2, 17 y 1 unidades
a los clientes 1,2 y 3 respectivamente, desde el
almacén A2 enviar 13 y 12 unidades a los
clientes 1 y 4 respectivamente y desde el
almacén A3 enviar 21 unidades al cliente 3 con
un costo óptimo de envío de $161
10.- MODELO EXTENDIDO DEL DISPLAY MODEL
MODEL:
[_1] MIN= 6 * X_A1_1 + 2 * X_A1_2 + 6 * X_A1_3 + 7 * X_A1_4 +
4 * X_A2_1 + 9 * X_A2_2 + 5 * X_A2_3 + 3 * X_A2_4 + 8 * X_A3_1
+ 8 * X_A3_2 + X_A3_3 + 5 * X_A3_4;
[_2] X_A1_1 + X_A1_2 + X_A1_3 + X_A1_4 <= 30;
[_3] X_A2_1 + X_A2_2 + X_A2_3 + X_A2_4 <= 25;
[_4] X_A3_1 + X_A3_2 + X_A3_3 + X_A3_4 <= 21;
[_5] X_A1_1 + X_A2_1 + X_A3_1 >= 15;
[_6] X_A1_2 + X_A2_2 + X_A3_2 >= 17;
[_7] X_A1_3 + X_A2_3 + X_A3_3 >= 22;
[_8] X_A1_4 + X_A2_4 + X_A3_4 >= 12;
END
11.- EJERCICIOS
La empresa donde Ud. trabaja, lo ha nombrado asistente de logística. Su primer trabajo en
el nuevo puesto será elaborar el programa de envíos de productos terminados a los tres
almacenes que la empresa posee en el territorio nacional.
La empresa posee cuatro plantas de producción en diferentes lugares del país (P1, P2, P3,
P4). Las capacidades de producción de las diferentes plantas son: 400, 250, 250 y 300
unidades mensuales respectivamente. Las demandas en los tres almacenes (A1, A2, A3)
son: 250, 350 y 600 unidades mensuales respectivamente.
Los costos de transporte se presentan en la siguiente tabla:
1 2 3
P1 5.7 4.4 6.2
P2 1.2 5.9 6.7
P3 9.9 6.6 5.4
P4 4 2.7 6.5
Se pide lo siguiente:
a) Presente el modelo de programa lineal en notación extendida y compacta.
b) Encuentre el costo óptimo del envío en Lingo compacto
c) Según las últimas noticias, la carretera que une el origen 1 con el destino 3 ha sufrido
un gran daño por un derrumbe. Con esta información adicional, ¿cuál sería el nuevo
programa de envíos?, ¿cuánto aumentaría el costo de la empresa? Resuelva siempre
en lingo compacto.
d) ¿Que pasa ahora si en lugar de prohibir se obliga a enviar desde la planta 2 hacia el
almacén 2?
Modelo de PL en notación del lingo compacto
SETS:
PLANTA/P1,P2,P3,P4/:CAPACIDAD;
ALMACEN/1..3/:DEMANDA;
RUTA(PLANTA,ALMACEN):COSTO,X;
ENDSETS
Min = @SUM(RUTA(I,J):COSTO(I,J)*X(I,J));
@FOR(PLANTA(I): @SUM(ALMACEN(J):X(I,J))<= CAPACIDAD(I));
@FOR(ALMACEN(J): @SUM(PLANTA(I):X(I,J))>= DEMANDA(J));
DATA:
CAPACIDAD = 400, 250, 250, 300;
DEMANDA = 250, 350, 600;
COSTO = 5.7, 4.4, 6.2, 1.2, 5.9, 6.7, 9.9, 6.6, 5.4, 4, 2.7, 6.5;
ENDDATA
Modelo de PL en notación del lingo compacto [RUTA PROHIBIDA]
Prohibir el envío desde la planta 1 hasta el cliente 3
SETS:
PLANTA/P1,P2,P3,P4/:CAPACIDAD;
ALMACEN/1..3/:DEMANDA;
RUTA(PLANTA,ALMACEN):COSTO,X;
ENDSETS
Min = @SUM(RUTA(I,J):COSTO(I,J)*X(I,J));
@FOR(PLANTA(I): @SUM(ALMACEN(J):X(I,J))<= CAPACIDAD(I));
@FOR(ALMACEN(J): @SUM(PLANTA(I):X(I,J))>= DEMANDA(J));
DATA:
CAPACIDAD = 400, 250, 250, 300;
DEMANDA = 250, 350, 600;
COSTO = 5.7, 4.4, 100, 1.2, 5.9, 6.7, 9.9, 6.6, 5.4, 4, 2.7, 6.5;
ENDDATA
Min = @SUM(RUTA(I,J):COSTO(I,J)*X(I,J));
@FOR(PLANTA(I): @SUM(ALMACEN(J):X(I,J))<= CAPACIDAD(I));
@FOR(ALMACEN(J): @SUM(PLANTA(I):X(I,J))>= DEMANDA(J));
DATA:
CAPACIDAD = 400, 250, 250, 300;
DEMANDA = 250, 350, 600;
COSTO = 5.7, 4.4, 6.2, 1.2, -100, 6.7, 9.9, 6.6, 5.4, 4, 2.7, 6.5;
ENDDATA
1 200
Capacidad (j) 500 13
6
320 A 1 17
22 19
8 2 240 Demanda (k)
Oferta (i) 20
7 18
22
B
10
450 2
11
500
3 330
(i) (j)
(k)
Etapa (ij)
Etapa (jk)
PROBLEMA DE DISTRIBUCIÓN DE PRODUCTOS MINEROS
Datos e información para el modelamiento
Xij ≤ Ofertai ; i
j=1
2
Xij ≤ Capacidadj ; j
i=1
2
Yjk ≥ Demandak ; k
j=1
2 3
Xij = Yjk ; j
i=1 k=1
SETS:
i= 1, 2 (mina) MINA/1,2/: OFERTA;
j= 1, 2 (planta de procesamiento) PLANTA/1,2/: CAPACIDAD,CP ;
k= 1, 2, 3 (tienda) TIENDA/1,2,3/: DEMANDA;
MXP(MINA,PLANTA):X,CMP;
𝐗 𝐢𝐣 = Cantidad en toneladas de i a j PXT(PLANTA,TIENDA):Y, CPT;
𝐘𝐣𝐤 = Cantidad en toneladas de j a k ENDSETS
DATA:
Ofertai = 320 450 OFERTA=320 450;
Capacidadj = 500 500 CAPACIDAD= 500 500;
Demandak = 200 240 330 DEMANDA= 200 240 330;
CMPij = 6 8 7 10 CMP= 6 8 7 10;
CPj = 22 18 CP= 22 18;
CPTjk = 13 17 20 19 22 21 CPT= 13 17 20 19 22 21;
PROBLEMA DE DISTRIBUCIÓN DE PRODUCTOS MINEROS
Construcción de MODELO – Función Objetivo
Costo de Mina a Planta: Costo de Procesamiento:
2 2 2 2
𝑋𝑖𝑗 ∗ 𝐶𝑀𝑃𝑖𝑗 𝑋𝑖𝑗 ∗ 𝐶𝑃𝑗
𝑖=1 𝑗=1 𝑖=1 𝑗=1
@SUM(MXP(I,J): X(I,J)*CMP(I,J)) @SUM(MXP(I,J): X(I,J)*CP(J))
Costo de Planta a Tienda:
2 3
𝑌𝑗𝑘 ∗ 𝐶𝑃𝑇𝑗𝑘
𝑗=1 𝑘=1
@SUM(PXT(J,K):Y(J,K)*CPT(J,K))
2 2 2 2 2 3
6
320 A 1 17
440
22 19
8 240 2 240
320 20
7 18
22
10
450 B 2 Z*=34,970
10 11
500
h=170 3 330
330 Reporte administrativo:
Enviar 320 toneladas desde a mina 1 al centro de
procesamiento 2 y desde la mina 2 enviar 440 y 10
toneladas a los centros de procesamiento 1 y 2,
Decisión óptima respectivamente y, desde el centro de procesamiento
1 enviar 200 y 240 toneladas a las tiendas 1 y 2
respectivamente y desde el centro de procesamiento
[representación gráfica] 2 enviar 330 tonelada a la tienda 3; con esta
distribución el costo mínimo de distribución será de
$34,970.
PROBLEMA DE DISTRIBUCIÓN DE PRODUCTOS MINEROS
MODEL:
[_1] MIN= 13 * Y_1_1 + 17 * Y_1_2 + 20 * Y_1_3 + 19 * Y_2_1 + 22 * Y_2_2 + 21 *
Y_2_3 + 28 * X_1_1 + 26 * X_1_2 + 29 * X_2_1 + 28 * X_2_2;
[_2] X_1_1 + X_1_2 <= 320;
[_3] X_2_1 + X_2_2 <= 450;
[_4] X_1_1 + X_2_1 <= 500;
[_5] X_1_2 + X_2_2 <= 500;
[_6] Y_1_1 + Y_2_1 >= 200;
[_7] Y_1_2 + Y_2_2 >= 240;
[_8] Y_1_3 + Y_2_3 >= 330;
[_9] - Y_1_1 - Y_1_2 - Y_1_3 + X_1_1 + X_2_1 = 0;
[_10] - Y_2_1 - Y_2_2 - Y_2_3 + X_1_2 + X_2_2 = 0;
END
PROBLEMA DE DISTRIBUCIÓN DE GLP EN CHOSICA-CHACLACAYO
Una planta envasadora de GLP en Huachipa necesita determinar su programa de compromisos de suministros de GLP en
balones de 45 kilos (para restaurantes campestres) para el fin de la segunda semana de mayo (celebración del día de la
madre) cuyas demandas son de 45 balones para la localidad de Santa Eulalia y 25 balones para la localidad de Ricardo
Palma y en consecuencia, necesita conocer cómo atender estos compromisos, siempre y cuando sus costos sean los
menores posibles.
La planta puede enviar 40 balones directamente desde su producción y se está apoyando del stock mínimo de 20 balones
que tiene en un local de venta autorizado de GLP de su propiedad en Chosica y además, con la finalidad de estudiar la
venta futura en Chaclacayo está considerando apoyarse por esta vez, de un nuevo local que recién ha sido autorizado para
el almacenamiento y venta de GLP y como tal, sólo lo puede usar como local alternativo de suministro de 10 balones
para ese fin de semana, dada la coyuntura.
Los costos de envío de cada balón (en soles) y la posibilidad de envíos directos o a través de local temporal o local de
venta autorizado o entre puntos de destino, son como sigue: el envío desde Huachipa a Chaclacayo cuesta S/3, a Chosica
S/5 y a Santa Eulalia S/8; el envío desde Chaclacayo a Chosica cuesta S/4 y a Ricardo Palma S/3.0; el envío desde
Chosica a Santa Eulalia o a Ricardo Palma tienen el mismo costo de S/2 y el envío desde Santa Eulalia a Ricardo Palma
es de S/4; todos estos costos son por unidad de balón enviado.
Se le solicita lo siguiente en forma compacta:
1. Presente su módulo de datos y definición de) variables.
2. Presente su módulo de función objetivo.
3. Presente su módulo de restricciones.
PROBLEMA DE DISTRIBUCIÓN DE GLP EN CHOSICA-CHACLACAYO
!Módulo de variables;
Sets:
ORIGEN/1,2,3,4/: CAPACIDAD;
DESTINO/2,3,4,5/: DEMANDA;
RUTA (ORIGEN, DESTINO): COSTO, X;
Endsets
!Módulo de datos (se adiciona un valor alto a los nodos de trasbordo para que
fluya las cantidades en toda dirección; 2,3 y 4);
Data:
CAPACIDAD=40,110,120,100;
DEMANDA=100,100,145,25;
COSTO=3,5,8,100,0,4,100,3,100,0,2,2,100,100,0,4;
Enddata
!Módulo de Función objetivo; Min = @Sum (RUTA: COSTO*X);
!Módulo de Restricciones;
!1) Origen; @For(ORIGEN(I): @Sum(DESTINO(J): X (I, J))<=CAPACIDAD(I));
!2) Destino; @For(DESTINO(J): @Sum(ORIGEN(I): X (I, J))>=DEMANDA(J));
End
PROBLEMA DE DISTRIBUCIÓN DE GLP EN CHOSICA-CHACLACAYO
MODEL:
[_1] MIN= 3*X_1_2 + 5*X_1_3 + 8*X_1_4 + 100*X_1_5 + 4*X_2_3 + 100*X_2_4 + 3*X_2_5
+ 100*X_3_2 + 2*X_3_4 + 2 X_3_5 + 100 * X_4_2 + 100 * X_4_3 + 4 * X_4_5;
[_2] X_1_2 + X_1_3 + X_1_4 + X_1_5 <= 40;
[_3] X_2_2 + X_2_3 + X_2_4 + X_2_5 <= 110;
[_4] X_3_2 + X_3_3 + X_3_4 + X_3_5 <= 120;
[_5] X_4_2 + X_4_3 + X_4_4 + X_4_5 <= 100;
[_6] X_1_2 + X_2_2 + X_3_2 + X_4_2 >= 100;
[_7] X_1_3 + X_2_3 + X_3_3 + X_4_3 >= 100;
[_8] X_1_4 + X_2_4 + X_3_4 + X_4_4 >= 145;
[_9] X_1_5 + X_2_5 + X_3_5 + X_4_5 >= 25;
END
Gracias
Sailco Corporation tiene que determinar cuántos veleros hay que producir en cada uno de
los cuatro trimestres. La demanda durante cada uno de los siguientes cuatro trimestres es:
primer trimestre, 40 veleros; segundo trimestre, 60 veleros; tercer trimestre, 75 veleros;
cuarto trimestre, 25 veleros. Sailco tiene que cumplir a tiempo con las demandas.Al
principio del primer trimestre, Sailco tiene un inventario de 10 veleros. Durante cada
trimestre, Sailco pude producir hasta 40 veleros, en el tiempo regular de trabajo, a un
costo total de 400 dólares por velero. Sailco puede producir más veleros, al hacer que
trabajen tiempo extra los empleados durante un trimestre, a un costo total de 450 dólares
por velero. El costo de inventario por cada velero es de $ 20. Utilice la programación
lineal para determinar un programa de producción e inventario para Sailco.
Representación gráfica del problema:
Producción Demanda Almacén
PRODUCCIÓN [X] X(i) , Y(i) D(i) S(i)
Ingreso
So = 10 unid
C a pa c ida d de pro duc c ió n
SF = SI + X - D
CpE = $450/unid Sf = 0 ton
SF(i) = SI(i) + X(i) - D(i) INVENTARIO INICIAL (i) = INVENTARIO FINAL (i-1)
SI (i) = SF(i-1)
SF (i) = SF(i-1) + X(i) - D(I) X(i) <= Capacidad de producción (i)
SF(i) = Inventario del período i S (i) = S(i-1) + X(i) - D(I) S(i) <= Capacidad de almacenamiento (i)
S(i) = S(i-1) + X(i) - D(i)
PRODUCCIÓN DE VELEROS
Índices:
𝐢: período [1, 2, 3, 4]
Variables
𝐗 𝐢 = Cantidad (en unidades) de veleros a producir en tiempo normal en el trimestre i
𝐘𝐢 = Cantidad (en unidades) de veleros a producir en tiempo extra en el trimestre i
𝐒𝐢 = Cantidad (en unidades) de veleros a almacenar en el trimestre i
𝐃𝐢 = [ 40 60 75 25]
Programa Lineal
4 4 4
SETS:
𝐢: período [1, 2, 3, 4] PERIODO/1..4/:X,Y,S,DEMANDA;
ENDSETS
𝐗 𝐢 = Cantidad en unidades en TN período i
𝐘𝐢 = Cantidad en unidades en ST período i
𝐒𝐢 = Cantidad en unidades en Stock período i
DATA:
𝐃𝐢 = [ 40 60 75 25] DEMANDA= 40 60 75 25;
S0=10;
ENDDATA
PRODUCCIÓN DE VELEROS
Construcción de Función Objetivo:
4 4 4
MIN=@SUM(PERIODO(I): 400*X(I)+450*Y(I)+20*S(I));
Construcción de Restricciones:
Xi ≤ 40 ∀i = 1. . 4
Si = Si−1 + Xi + Yi − Di ; ∀i = 1. . 4
X(1)<=40;
S(1)=S0+ X(1)+Y(1)- DEMANDA(1);
@FOR(PERIODO(I)|I#GT#1: S(I)= S(I-1)+ X(I)+Y(I)- DEMANDA(I); X(I)<=40);
SETS:
PERIODO/1..4/:X,Y,S,DEMANDA;
ENDSETS
DATA:
S0=10;
DEMANDA= 40 60 75 25;
ENDDATA
MIN=@SUM(PERIODO(I): 400*X(I)+450*Y(I)+20*S(I));
S(1)=S0+ X(1)+Y(1)- DEMANDA(1);
X(1)<=40;
@FOR(PERIODO(I)|I#GT#1: S(I)= S(I-1)+ X(I)+Y(I)- DEMANDA(I); X(I)<=40);
END
PRODUCCIÓN DE VELEROS
MODEL:
[_1] MIN= 400 * X_1 + 450 * Y_1 + 20 * S_1 + 400 * X_2 + 450 * Y_2 + 20 * S_2 +
400 * X_3 + 450 * Y_3 + 20 * S_3 + 400 * X_4 + 450 * Y_4 + 20 * S_4;
[_2] - X_1 - Y_1 + S_1 = - 30;
[_3] X_1 <= 40;
[_4] - S_1 - X_2 - Y_2 + S_2 = - 60;
[_5] X_2 <= 40;
[_6] - S_2 - X_3 - Y_3 + S_3 = - 75;
[_7] X_3 <= 40;
[_8] - S_3 - X_4 - Y_4 + S_4 = - 25;
[_9] X_4 <= 40;
END
PRODUCCIÓN DE VELEROS
Variable Value Reduced Cost
S0 10.00000 0.000000
X( 1) 40.00000 0.000000
X( 2) 40.00000 0.000000
X( 3) 40.00000 0.000000
X( 4) 25.00000 0.000000
Y( 1) 0.000000 20.00000
Y( 2) 10.00000 0.000000
Y( 3) 35.00000 0.000000
Y( 4) 0.000000 50.00000
S( 1) 10.00000 0.000000
S( 2) 0.000000 20.00000
S( 3) 0.000000 70.00000
S( 4) 0.000000 420.0000
DEMANDA( 1) 40.00000 0.000000
DEMANDA( 2) 60.00000 0.000000
DEMANDA( 3) 75.00000 0.000000 Reporte de Lingo
DEMANDA( 4) 25.00000 0.000000
Sets:
TRIMESTRE/1..4/: X, Y, S, INVINICIAL, DEMANDA, PRODUCCION;
End sets
Data:
INVINICIAL = 10 0 0 0;
DEMANDA = 40 60 75 25;
PRODUCCION = 40 40 40 40;
End data
Variables:
Estructura de datos:
2 3 2 3 2 3 2 3
Xij ≤ Produccion_Normalj ; j = 1. . 3
i=1
Sij = Inventario_Inicialij + Xij + Yij − Demandaij ; i = 1, 2 ; j = 1
Sij = Si,j−1 + Xij + Yij − Demandaij ; i = 1, 2 ; j = 2, 3
2
Sets:
i= 1, 2 (producto) Producto/1,2/: Requerimiento;
j= 1, 2, 3 (mes) Mes/1..3/: Costo, Maxima_Compra, Produccion_Normal;
PXM(Producto,Mes): Inventario_Inicial, Demanda, X, Y, S;
Endsets
𝐌𝐢𝐧 𝐙 = Min =
2 3
Xij ≤ Produccion_Normalj ; j = 1. . 3
i=1
@For(PXM(I,J): @For(Mes(J)|J#EQ#1:
S(I,J)=Inventario_Inicial(I,J)+(X(I,J)+Y(I,J))- Demanda(I,J)));
Min=@Sum(PXM(I,J):
4*X(I,J)+8*Y(I,J)+3*S(I,J)+Requerimiento(I)*(X(I,J)+Y(I,J))*Costo(J));
@For(Mes(J): @Sum(Producto(I): X(I,J))<= Produccion_Normal(J));
@For(PXM(I,J): @For(Mes(J)|J#EQ#1:
S(I,J)=Inventario_Inicial(I,J)+(X(I,J)+Y(I,J))- Demanda(I,J)));
@For(PXM(I,J): @For(Mes(J)|J#GT#1:S(I,J)= S(I,J-1)+(X(I,J)+Y(I,J))- Demanda(I,J)));
@For(Mes(J): @Sum(Producto(I):Requerimiento(I)*(X(I,J)+Y(I,J)))<=Maxima_Compra(J));
End
Variable Value Reduced Cost Row Slack or Surplus Dual Price
REQUERIMIENTO( 1) 2.000000 0.000000 1 645.6000 -1.000000
REQUERIMIENTO( 2) 3.000000 0.000000 2 3.000000 0.000000
COSTO( 1) 2.000000 0.000000 3 0.000000 4.000000
COSTO( 2) 1.500000 0.000000 4 0.000000 4.000000
COSTO( 3) 1.800000 0.000000 5 43.00000 0.000000
MAXIMA_COMPRA( 1) 100.0000 0.000000 6 24.00000 0.000000
MAXIMA_COMPRA( 2) 90.00000 0.000000 7 13.00000 0.000000
MAXIMA_COMPRA( 3) 80.00000 0.000000 8 0.000000 8.000000
PRODUCCION_NORMAL( 1) 25.00000 0.000000 9 0.000000 10.00000
PRODUCCION_NORMAL( 2) 25.00000 0.000000 10 0.000000 11.00000
PRODUCCION_NORMAL( 3) 25.00000 0.000000 11 0.000000 11.60000
X( 1, 1) 9.000000 0.000000 12 0.000000 12.50000
X( 1, 2) 11.00000 0.000000 13 0.000000 13.40000
X( 1, 3) 14.00000 0.000000
X( 2, 1) 13.00000 0.000000
X( 2, 2) 14.00000 0.000000
X( 2, 3) 11.00000 0.000000
Y( 1, 1) 0.000000 4.000000
Y( 1, 2) 1.000000 0.000000
Y( 1, 3) 0.000000 0.000000
Reporte de lingo
Y( 2, 1) 0.000000 4.000000
Y( 2, 2) 0.000000 0.000000
Y( 2, 3) 2.000000 0.000000
S( 1, 1) 0.000000 0.000000
S( 1, 2) 0.000000 2.400000
S( 1, 3) 0.000000 14.60000
S( 2, 1) 0.000000 0.5000000
S( 2, 2) 0.000000 2.100000
S( 2, 3) 0.000000 16.40000
INVENTARIO_INICIAL( 1, 1) 1.000000 0.000000
INVEMTARIO_INICIAL( 1, 2) 0.000000 0.000000
INVENTARIO_INICIAL( 1, 3) 0.000000 0.000000
INVENTARIO_INICIAL( 2, 1) 2.000000 0.000000
INVENTARIO_INICIAL( 2, 2) 0.000000 0.000000
INVENTARIO_INICIAL( 2, 3) 0.000000 0.000000
DEMANDA( 1, 1) 10.00000 0.000000
DEMANDA( 1, 2) 12.00000 0.000000
DEMANDA( 1, 3) 14.00000 0.000000
DEMANDA( 2, 1) 15.00000 0.000000
DEMANDA( 2, 2) 14.00000 0.000000
DEMANDA( 2, 3) 13.00000 0.000000
Variable Value Reduced Cost Row Slack or Surplus Dual Price
REQUERIMIENTO( 1) 2.000000 0.000000 1 645.6000 -1.000000
REQUERIMIENTO( 2) 3.000000 0.000000 2 3.000000 0.000000
COSTO( 1) 2.000000 0.000000 3 0.000000 4.000000
COSTO( 2) 1.500000 0.000000 4 0.000000 4.000000
COSTO( 3) 1.800000 0.000000 5 43.00000 0.000000
MAXIMA_COMPRA( 1) 100.0000 0.000000 6 24.00000 0.000000
MAXIMA_COMPRA( 2) 90.00000 0.000000 7 13.00000 0.000000
MAXIMA_COMPRA( 3) 80.00000 0.000000 8 0.000000 8.000000
PRODUCCION_NORMAL( 1) 25.00000 0.000000 9 0.000000 10.00000
PRODUCCION_NORMAL( 2) 25.00000 0.000000 10 0.000000 11.00000
PRODUCCION_NORMAL( 3) 25.00000 0.000000 11 0.000000 11.60000
X( 1, 1) 9.000000 0.000000 12 0.000000 12.50000
X( 1, 2) 11.00000 0.000000 13 0.000000 13.40000
X( 1, 3) 14.00000 0.000000 Trimestre 1 (unidad) Costos ($)
Plan de Producción
X( 2, 1) 13.00000 0.000000 [camisas] 1 2 3
Total
X( 2, 2) 14.00000 0.000000 (unidad) Unitario Total
Demanda (D1) 10 12 14
X( 2, 3) 11.00000 0.000000 Normal 9 11 14 34 4 136.00
Producción
Y( 1, 1) 0.000000 4.000000 Sobretiempo 0 1 0 1 8 8.00
(X)
Y( 1, 2) 1.000000 0.000000 Total 9 12 14 35 144.00
Y( 1, 3) 0.000000 0.000000
Reporte Inventario Inicial 1 0 0
Y( 2, 1) 0.000000 4.000000 administrativo (S) Final 0 0 0 0 3 0.00
Y( 2, 2) 0.000000 0.000000 Total 144.00
Y( 2, 3) 2.000000 0.000000 Plan de Producción Trimestre 1 (unidad)
Total
Costos ($)
S( 1, 1) 0.000000 0.000000 [pantalones] 1 2 3
(unidad) Unitario Total
S( 1, 2) 0.000000 2.400000 Demanda (D2) 15 14 13
S( 1, 3) 0.000000 14.60000 Normal 13 14 11 38 4 152.00
Producción
Sobretiempo 0 0 2 2 8 16.00
S( 2, 1) 0.000000 0.5000000 (X)
Total 13 14 13 40 168.00
S( 2, 2) 0.000000 2.100000
Inventario Inicial 2 0 0
S( 2, 3) 0.000000 16.40000 (S) Final 0 0 0 0 3 0.00
INVENTARIO_INICIAL( 1, 1) 1.000000 0.000000 Total 168.00
INVEMTARIO_INICIAL( 1, 2) 0.000000 0.000000
Materia prima (tela)
INVENTARIO_INICIAL( 1, 3) 0.000000 0.000000
Cantidad 9 12 14 35
INVENTARIO_INICIAL( 2, 1) 2.000000 0.000000 Camisa Req Unit 2 2 2 2
INVENTARIO_INICIAL( 2, 2) 0.000000 0.000000 Total Requ 18 24 28 70
INVENTARIO_INICIAL( 2, 3) 0.000000 0.000000 Cantidad 13 14 13 40
DEMANDA( 1, 1) 10.00000 0.000000 Pantalón Req Unit 3 3 3 3
DEMANDA( 1, 2) 12.00000 0.000000 Total Requ 39 42 39 120
DEMANDA( 1, 3) 14.00000 0.000000 Total Tela (yardas2) 57 66 67 190
DEMANDA( 2, 1) 15.00000 0.000000 Costo Tela ($/yardas2) 2 1.5 1.8 ---
DEMANDA( 2, 2) 14.00000 0.000000 Total Costo ($) 114.00 99.00 120.60 333.60 333.60
DEMANDA( 2, 3) 13.00000 0.000000 Costo total ($) 645.60
Modelo en lingo compacto 2
Sets:
Producto/1,2/: Requer;
Mes/1..3/: Costo, Maxima_Compra, Produccion_Normal;
Produccion_Mes(Producto,Mes): SIni, D, X, Y, S;
Endsets
Data:
Requer = 2 3;
Costo = 2.0 1.5 1.8;
Maxima_Compra = 100 90 80;
Produccion_Normal = 25 25 25;
SIni = 1 0 0 2 0 0;
D = 10 12 14 15 14 13;
Enddata
Min=@Sum(Produccion_Mes(I,J):
4*X(I,J)+8*Y(I,J)+3*S(I,J)+(X(I,J)+Y(I,J))*Requer(I)*Costo(J));
@For(Mes(J): @Sum(Producto(I): X(I,J))<= Produccion_Normal(J));
@For(Mes(J): @Sum(Producto(I): (X(I,J)+Y(I,J))*Requer(I)) <= Maxima_Compra(J));
@For(Produccion_Mes(I,J):@For(Mes(J)|J#EQ#1:S(I,J)=SIni(I,J)+X(I,J)+Y(I,J)-D(I,J)));
@For(Produccion_Mes(I,J):@For(Mes(J)|J#GT#1:S(I,J)=S(I,J-1)+X(I,J)+Y(I,J)-D(I,J)));
End
MODEL:
[_1] MIN= 8 * X_1_1 + 12 * Y_1_1 + 3 * S_1_1 + 7 * X_1_2 + 11 * Y_1_2 + 3 * S_1_2 +
7.6 * X_1_3 + 11.6 * Y_1_3 + 3 * S_1_3 + 10 * X_2_1 + 14 * Y_2_1 + 3 * S_2_1 + 8.5
* X_2_2 + 12.5 * Y_2_2 + 3 * S_2_2 + 9.4 * X_2_3 + 13.4 * Y_2_3 + 3 * S_2_3;
[_2] X_1_1 + X_2_1 <= 25;
[_3] X_1_2 + X_2_2 <= 25;
[_4] X_1_3 + X_2_3 <= 25;
[_5] 2 * X_1_1 + 2 * Y_1_1 + 3 * X_2_1 + 3 * Y_2_1 <= 100;
[_6] 2 * X_1_2 + 2 * Y_1_2 + 3 * X_2_2 + 3 * Y_2_2 <= 90;
[_7] 2 * X_1_3 + 2 * Y_1_3 + 3 * X_2_3 + 3 * Y_2_3 <= 80;
[_8] - X_1_1 - Y_1_1 + S_1_1 = - 9;
[_9] - X_2_1 - Y_2_1 + S_2_1 = - 13;
[_10] - S_1_1 - X_1_2 - Y_1_2 + S_1_2 = - 12;
[_11] - S_1_2 - X_1_3 - Y_1_3 + S_1_3 = - 14;
[_12] - S_2_1 - X_2_2 - Y_2_2 + S_2_2 = - 14;
[_13] - S_2_2 - X_2_3 - Y_2_3 + S_2_3 = - 13;
END
PRODUCCIÓN DE BICICLETAS
La empresa Body Cycling se dedica a la fabricación y ensamblaje de bicicletas para la exportación; posee 3 líneas de
bicicletas: MTB, ATB y BMX, las cuales poseen tiempos de producción diferentes y demanda de cada tipo de bicicletas
para los próximos tres meses, en unidades, tal y como se indican en las siguientes tablas.
Línea Tiempo de producción (horas) Mes Enero Febrero Marzo
MTB 6 MTB 1000 500 250
ATB 5 ATB 500 200 150
BMX 4 BMX 250 120 50
La planta cuenta con 30 operarios, los cuales deben permanecer en forma constante trabajando 8 horas diarias, 4 semanas
al mes y 5 días por semana; sin embargo, es posible trabajar horas extras hasta un límite de 40% de las horas normales. El
almacén tiene capacidad para 1000 bicicletas, indistintamente del modelo o tamaño y se ha establecido los siguientes
costos: mano de obra regular de $3200 al mes para un total de 160 horas mensuales, mano de obra extra de $25 por hora
adicional y mantenimiento de stock a $5 por unidad almacenada.
El inventario inicial de cada tipo de bicicletas para el mes de
Enero aparece en la siguiente tabla:
Línea Stock Formule un modelo de programación lineal para el
MTB 400 programa de producción de la empresa que tome en
ATB 150 cuenta satisfacer la demanda mensual (no se aceptan
BMX 50 ventas pendientes).
Índices:
Variables:
Estructura de datos:
Sij ≤ CAj ; j = 1, 2 , 3
i=1
Sij = Siniij + Xij + Yij − Dij ; i = 1, 2, 3 ; j = 1
Sij = Si,j−1 + Xij + Yij − Dij ; i = 1, 2, 3 ; j = 2, 3
MIN=@SUM(LXM(I,J):20*X(I,J)*TP(I)+25*Y(I,J)*TP(I)+5*S(I,J));
@FOR(MES(J):@SUM(BICICLETA(I):X(I,J)*TP(I))<=CPN(J));
@FOR(MES(J):@SUM(BICICLETA(I):Y(I,J)*TP(I))<=CPE(J));
@FOR(MES(J):@SUM(BICICLETA(I):S(I,J))<= CA(J));
@FOR(LXM(I,J):@FOR(MES(J)|J#EQ#1:S(I,J)=SINI(I,J)+(X(I,J)+Y(I,J))-D(I,J)));
@FOR(LXM(I,J):@FOR(MES(J)|J#GT#1:S(I,J)=S(I,J-1)+(X(I,J)+Y(I,J))-D(I,J)));
MODEL:
[_1] MIN= 120 * X_1_1 + 150 * Y_1_1 + 5 * S_1_1 + 120 * X_1_2 + 150 * Y_1_2 + 5 *
S_1_2 + 120 * X_1_3 + 150 * Y_1_3 + 5 * S_1_3 + 100 * X_2_1 + 125 * Y_2_1 + 5 *
S_2_1 + 100 * X_2_2 + 125 * Y_2_2 + 5 * S_2_2 + 100 * X_2_3 + 125 * Y_2_3 + 5 *
S_2_3 + 80 * X_3_1 + 100 * Y_3_1 + 5 * S_3_1 + 80 * X_3_2 + 100 * Y_3_2 + 5 *
S_3_2 + 80 * X_3_3 + 100 * Y_3_3 + 5 * S_3_3;
[_2] 6 * X_1_1 + 5 * X_2_1 + 4 * X_3_1 <= 4800;
[_3] 6 * X_1_2 + 5 * X_2_2 + 4 * X_3_2 <= 4800;
[_4] 6 * X_1_3 + 5 * X_2_3 + 4 * X_3_3 <= 4800;
[_5] 6 * Y_1_1 + 5 * Y_2_1 + 4 * Y_3_1 <= 1920;
[_6] 6 * Y_1_2 + 5 * Y_2_2 + 4 * Y_3_2 <= 1920;
[_7] 6 * Y_1_3 + 5 * Y_2_3 + 4 * Y_3_3 <= 1920;
[_8] S_1_1 + S_2_1 + S_3_1 <= 1000;
[_9] S_1_2 + S_2_2 + S_3_2 <= 1000;
[_10] S_1_3 + S_2_3 + S_3_3 <= 1000;
[_11] - X_1_1 - Y_1_1 + S_1_1 = - 600;
[_12] - X_2_1 - Y_2_1 + S_2_1 = - 350;
[_13] - X_3_1 - Y_3_1 + S_3_1 = - 200;
[_14] - S_1_1 - X_1_2 - Y_1_2 + S_1_2 = - 500;
[_15] - S_1_2 - X_1_3 - Y_1_3 + S_1_3 = - 250;
[_16] - S_2_1 - X_2_2 - Y_2_2 + S_2_2 = - 200;
[_17] - S_2_2 - X_2_3 - Y_2_3 + S_2_3 = - 150;
[_18] - S_3_1 - X_3_2 - Y_3_2 + S_3_2 = - 120;
[_19] - S_3_2 - X_3_3 - Y_3_3 + S_3_3 = - 50;
END
Variable Value Reduced Cost Variable Value Reduced Cost
TP( 1) 6.000000 0.000000 SINI( 1, 1) 400.0000 0.000000
TP( 2) 5.000000 0.000000 SINI( 1, 2) 0.000000 0.000000
TP( 3) 4.000000 0.000000 SINI( 1, 3) 0.000000 0.000000
CPN( 1) 4800.000 0.000000 SINI( 2, 1) 150.0000 0.000000
CPN( 2) 4800.000 0.000000 SINI( 2, 2) 0.000000 0.000000
CPN( 3) 4800.000 0.000000 SINI( 2, 3) 0.000000 0.000000
CPE( 1) 1920.000 0.000000 SINI( 3, 1) 50.00000 0.000000
CPE( 2) 1920.000 0.000000 SINI( 3, 2) 0.000000 0.000000
CPE( 3) 1920.000 0.000000 SINI( 3, 3) 0.000000 0.000000
CA( 1) 1000.000 0.000000 D( 1, 1) 1000.000 0.000000
CA( 2) 1000.000 0.000000 D( 1, 2) 500.0000 0.000000
CA( 3) 1000.000 0.000000 D( 1, 3) 250.0000 0.000000
X( 1, 1) 375.0000 0.000000 D( 2, 1) 500.0000 0.000000
X( 1, 2) 500.0000 0.000000 D( 2, 2) 200.0000 0.000000
X( 1, 3) 250.0000 0.000000 D( 2, 3) 150.0000 0.000000
X( 2, 1) 350.0000 0.000000 D( 3, 1) 250.0000 0.000000
X( 2, 2) 200.0000 0.000000 D( 3, 2) 120.0000 0.000000
X( 2, 3) 150.0000 0.000000 D( 3, 3) 50.00000 0.000000
X( 3, 1) 200.0000 0.000000 Row Slack or Surplus Dual Price
X( 3, 2) 120.0000 0.000000 1 268350.0 -1.000000
X( 3, 3) 50.00000 0.000000
Reporte del lingo 2 0.000000 5.000000
Y( 1, 1) 225.0000 0.000000 3 320.0000 0.000000
Y( 1, 2) 0.000000 30.00000 4 2350.000 0.000000
Y( 1, 3) 0.000000 30.00000 5 570.0000 0.000000
Y( 2, 1) 0.000000 0.000000 6 1920.000 0.000000
Y( 2, 2) 0.000000 25.00000 7 1920.000 0.000000
Y( 2, 3) 0.000000 25.00000 8 1000.000 0.000000
Y( 3, 1) 0.000000 0.000000 9 1000.000 0.000000
Y( 3, 2) 0.000000 20.00000 10 1000.000 0.000000
Y( 3, 3) 0.000000 20.00000 11 0.000000 150.0000
S( 1, 1) 0.000000 35.00000 12 0.000000 125.0000
S( 1, 2) 0.000000 5.000000 13 0.000000 100.0000
S( 1, 3) 0.000000 125.0000 14 0.000000 120.0000
S( 2, 1) 0.000000 30.00000 15 0.000000 120.0000
S( 2, 2) 0.000000 5.000000 16 0.000000 100.0000
S( 2, 3) 0.000000 105.0000 17 0.000000 100.0000
S( 3, 1) 0.000000 25.00000 18 0.000000 80.00000
S( 3, 2) 0.000000 5.000000 19 0.000000 80.00000
S( 3, 3) 0.000000 85.00000
Variable Value Reduced Cost Variable Value Reduced Cost
TP( 1) 6.000000 0.000000 SINI( 1, 1) 400.0000 0.000000
TP( 2) 5.000000 0.000000 SINI( 1, 2) 0.000000 0.000000
TP( 3) 4.000000 0.000000 SINI( 1, 3) 0.000000 0.000000
CPN( 1) 4800.000 0.000000 SINI( 2, 1) 150.0000 0.000000
CPN( 2) 4800.000 0.000000 SINI( 2, 2) 0.000000 0.000000
CPN( 3) 4800.000 0.000000 SINI( 2, 3) 0.000000 0.000000
CPE( 1) 1920.000 0.000000 SINI( 3, 1) 50.00000 0.000000
CPE( 2) 1920.000 0.000000 SINI( 3, 2) 0.000000 0.000000
CPE( 3) 1920.000 0.000000 SINI( 3, 3) 0.000000 0.000000
CA( 1) 1000.000 0.000000 D( 1, 1) 1000.000 0.000000
CA( 2) 1000.000 0.000000 D( 1, 2) 500.0000 0.000000
CA( 3) 1000.000 0.000000 D( 1, 3) 250.0000 0.000000
X( 1, 1) 375.0000 0.000000 D( 2, 1) 500.0000 0.000000
X( 1, 2) 500.0000 0.000000 D( 2, 2) 200.0000 0.000000
X( 1, 3) 250.0000 0.000000 D( 2, 3) 150.0000 0.000000
X( 2, 1) 350.0000 0.000000 D( 3, 1) 250.0000 0.000000
X( 2, 2) 200.0000 0.000000 D( 3, 2) 120.0000 0.000000
X( 2, 3) 150.0000 0.000000 D( 3, 3) 50.00000 0.000000
X( 3, 1) 200.0000 0.000000 Row Slack or Surplus Dual Price
X( 3, 2) 120.0000 0.000000 1 268350.0 -1.000000
X( 3, 3) 50.00000 0.000000
Reporte del lingo 2 0.000000 5.000000
Y( 1, 1) 225.0000 0.000000 3 320.0000 0.000000
Y( 1, 2) 0.000000 30.00000 4 2350.000 0.000000
Y( 1, 3) 0.000000 30.00000 5 570.0000 0.000000
Y( 2, 1) 0.000000 0.000000 6 1920.000 0.000000
Y( 2, 2) 0.000000 25.00000 7 1920.000 0.000000
Y( 2, 3) 0.000000 25.00000 8 1000.000 0.000000
Y( 3, 1) 0.000000 0.000000 9 1000.000 0.000000
Y( 3, 2) 0.000000 20.00000 10 1000.000 0.000000
Y( 3, 3) 0.000000 20.00000 11 0.000000 150.0000
S( 1, 1) 0.000000 35.00000 12 0.000000 125.0000
S( 1, 2) 0.000000 5.000000 13 0.000000 100.0000
S( 1, 3) 0.000000 125.0000 14 0.000000 120.0000
S( 2, 1) 0.000000 30.00000 15 0.000000 120.0000
S( 2, 2) 0.000000 5.000000 16 0.000000 100.0000
S( 2, 3) 0.000000 105.0000 17 0.000000 100.0000
S( 3, 1) 0.000000 25.00000 18 0.000000 80.00000
S( 3, 2) 0.000000 5.000000 19 0.000000 80.00000
S( 3, 3) 0.000000 85.00000
Reporte Plan de Producción Mes (unidad)
Total
Tiempo de Total de Costos ($)
[Bicicleta MTB] 1 2 3 producción tiempo Unitario
administrativo Demanda (D1) 1000 500 250
(unidad)
Unit (hr) empleado (hr) ($/hr)
Total
i j
costo,
tiempo,
distancia,
Peso de arco =
riesgo,
capacidad
etc
Ejemplo de redes
Consideraciones para modelar PL en redes
nodo i
bi Capacidad de arco:
j i j
Xij
i j
Cantidad de flujo que ingresa Cantidad de flujo que sale [Uij]
Xji Xij
Xij ≤ Uij
Principio de conservación de energía = Ley de
Kirchoff
c15 c56 bi
2 7 -b7 i
+b2
c25 c57
Nodo de 5 Nodo de
i -bi
oferta demanda
Nodo de transbordo
Si bi=0 ➔ Nodo de transbordo
Modelo compacto de PL de flujo a costo mínimo
n n
Variable de decisión:
Min Z = Cij ∗ Xij
Xij = Cantidad de flujo desde un origen i a
cualquier otro destino j (cantidad en arco ij) i=1 j=1
Subject to
Datos:
n n
cij = Costo desde un origen i a cualquier otro
destino j (peso de arco ij)
Xij − Xji = bi ; ∀ i
bi = Cantidad de oferta o demanda del nodo i j=1 j=1
(oferta con signo +, demanda con signo -,
transbordo 0) Xij ≥ 0 ; ∀ i, ∀j
n = número de nodos
Cada nodo es una restricción: i = 1 a n
[El PL encuentra la solución con n-1 restricciones]
Modelo compacto de PL de flujo a costo mínimo
Función objetivo: Conjunto (i,j) [sets derivados]
n n
Xij − Xji = bi ; ∀ i
j=1 j=1
Conjunto (i)
[sets primitivo]
@FOR(NODO(I):
@SUM(RED(I,J):X(I,J))-@SUM(RED(J,I):X(J,I))=B(I));
Distribución de plantas a mercados en redes
Una empresa cuenta con dos plantas con capacidad de producción de 50 y 40 toneladas y desea enviar a sus
dos principales mercados que demandan 30 y 60 toneladas del mismo producto. Tienen distintas opciones
para enviar dichos productos y necesitan saber como hacerlo, toda vez que en sus opciones tienen costos
unitarios por tonelada. Recomiende la distribución óptima. Los datos se muestran en la siguiente figura:
2 3
7
+50 1 1 2 6 6 -30
5
5 4
8
4
+40 2 9 7 -60
6 4
5
Sintaxis compacto de PL de flujo a costo mínimo
-100 -110
1 2
2 3 4 -195
24 26
21 1
+530 1
24
5 -125
Modelo en lingo compacto
SETS:
NODO/1..5/:B;
RED(NODO,NODO)/1,2 1,3 1,4 1,5 2,3 3,4 4,5 /:RIESGO,X;
ENDSETS
DATA:
B = 530,-100,-110,-195,-125;
RIESGO = 24,26,21,24,1,2,1;
ENDDATA
MIN= @SUM(RED:RIESGO*X);
@FOR(NODO(I): @SUM(RED(I,J):X(I,J))-@SUM(RED(J,I):X(J,I))=B(I));
END
Variable Value Reduced Cost Row Slack or Surplus Dual Price
B( 1) 530.0000 0.000000 1 11995.00 -1.000000
B( 2) -100.0000 0.000000 2 0.000000 -21.00000
B( 3) -110.0000 0.000000 3 0.000000 3.000000
B( 4) -195.0000 0.000000 4 0.000000 4.000000
B( 5) -125.0000 0.000000 5 0.000000 0.000000
RIESGO( 1, 2) 24.00000 0.000000 6 0.000000 1.000000
RIESGO( 1, 3) 26.00000 0.000000
RIESGO( 1, 4) 21.00000 0.000000
RIESGO( 1, 5) 24.00000 0.000000
RIESGO( 2, 3) 1.000000 0.000000
RIESGO( 3, 4) 2.000000 0.000000
RIESGO( 4, 5) 1.000000 0.000000
X( 1, 2) 210.0000 0.000000
X( 1, 3) 0.000000 1.000000 Reporte de lingo:
X( 1, 4) 320.0000 0.000000
X( 1, 5) 0.000000 2.000000
X( 2, 3) 110.0000 0.000000
X( 3, 4) 0.000000 6.000000
X( 4, 5) 125.0000 0.000000
MODEL:
[_1] MIN= 24 * X_1_2 + 26 * X_1_3 + 21 * X_1_4 + 24 * X_1_5 + X_2_3 + 2 * X_3_4 + X_4_5;
[_2] X_1_2 + X_1_3 + X_1_4 + X_1_5 = 530;
[_3] - X_1_2 + X_2_3 = - 100;
[_4] - X_1_3 - X_2_3 + X_3_4 = - 110;
[_5] - X_1_4 - X_3_4 + X_4_5 = - 195;
[_6] - X_1_5 - X_4_5 = - 125;
END
Variable Value Reduced Cost Row Slack or Surplus Dual Price
B( 1) 530.0000 0.000000 1 11995.00 -1.000000
B( 2) -100.0000 0.000000 2 0.000000 -21.00000
B( 3) -110.0000 0.000000 3 0.000000 3.000000
B( 4) -195.0000 0.000000 4 0.000000 4.000000
B( 5) -125.0000 0.000000 5 0.000000 0.000000
RIESGO( 1, 2) 24.00000 0.000000 6 0.000000 1.000000
RIESGO( 1, 3) 26.00000 0.000000
RIESGO( 1, 4) 21.00000 0.000000
RIESGO( 1, 5) 24.00000 0.000000
RIESGO( 2, 3) 1.000000 0.000000
RIESGO( 3, 4) 2.000000 0.000000
RIESGO( 4, 5) 1.000000 0.000000
X( 1, 2) 210.0000 0.000000
Distribución de inversiones
X( 1, 3) 0.000000 1.000000 a costo mínimo:
X( 1, 4) 320.0000 0.000000
X( 1, 5) 0.000000 2.000000
X( 2, 3) 110.0000 0.000000
X( 3, 4) 0.000000 6.000000
X( 4, 5) 125.0000 0.000000
Reporte administrativo:
Invertir $210M en el proyecto 1 [nodo 2] y
$320M en el proyecto 3 [nodo 4] con un valor de
riesgo mínimo de 11,995 [unidades de riesgo].
Flujo a Costo Mínimo con restricciones
[con capacidad de flujo]
+20
Una empresa cuenta con dos plantas
con capacidad de producción de 50 y
40 toneladas y desea enviar a sus dos 2 3
7
principales mercados que demandan
[25]
15 y 70 toneladas del mismo +50 1 1 2 6 6 -15
producto; además, cuenta con un
stock de 20 toneladas en otra planta 5
para apoyar en el suministro y una 5 4 [35]
demanda adicional de 25 toneladas. 8
4
Tienen distintas opciones para enviar
9
dichos productos y necesitan saber +40 2 7 -70
como hacerlo, toda vez que en sus
opciones tienen costos unitarios por 6 4
tonelada. Recomiende la distribución 5
óptima. Los datos se muestran en la -25
siguiente figura:
Modelo compacto de PL de flujo a costo mínimo
[con capacidad de flujo]
𝑛 𝑛
Subject to:
𝑛 𝑛
𝑋𝑖𝑗 − 𝑋𝑗𝑖 = 𝑏𝑖 ; ∀𝑖
𝑗=1 𝑗=1
𝑋𝑖𝑗 ≤ 𝑈𝑖𝑗 ; ∀ 𝑖, ∀𝑗
𝑋𝑖𝑗 ≥ 0 ; ∀ 𝑖, ∀𝑗
Sintaxis compacto de PL de FCM con capacidad de flujo
SETS:
NODO/1..7/:B;
RED(NODO,NODO)/1,3 1,4 1,5 2,3 2,4 2,5 3,6 3,7 4,6 4,7 5,6 5,7/:COSTO,X,U;
ENDSETS
DATA:
B = 50,40,20, 0, -25, -15,-70;
COSTO = 2, 1, 5, 2, 4, 6, 7, 6, 5, 8, 9, 4;
U = 1000,1000,1000,25,1000,1000,1000,35,1000,1000,1000,1000;
ENDDATA
MIN= @SUM(RED:COSTO*X); Adicionar
@FOR(NODO(I): @SUM(RED(I,J):X(I,J))-@SUM(RED(J,I):X(J,I))=B(I));
@FOR(RED:X<=U);
END
EL PROBLEMA DE LA RUTA MAS CORTA
Encontrar el valor del camino y el recorrido mas corto entre el nodo 1 y el nodo 6
considerando que el peso de cada arco es distancia en Km
5 6
2 4 6 2
1
2 8
3 8
1 1 2 5
3
4
2 6
3 5 7
1 7
Opciones: ruta mas corta, ruta económica, ruta rápida, ruta de menor riesgo etc
Modelo compacto de PL de ruta mas corta
𝑛 𝑛
Subject to:
𝑛 𝑛 𝑏𝑖 = 1;
𝑋𝑖𝑗 − 𝑋𝑗𝑖 = 𝑏𝑖 ; ∀ 𝑖 𝑏𝑖𝑛𝑡𝑒𝑟𝑚𝑒𝑑𝑖𝑜𝑠 = 0;
𝑗=1 𝑗=1 𝑏𝑛 = −1;
𝑋𝑖𝑗 ≥ 0 ; ∀ 𝑖, ∀𝑗
Nodo n donde termina la medición de recorrido
Modelo de PL ruta mas corta en lingo compacto
-1
+1
SETS:
NODO/1..8/:B;
RED(NODO,NODO)/1,2 1,3 2,3 2,4 2,5 3,4 3,5 3,6 4,5 4,6 4,7 5,6 5,7 6,7 6,8 7,8/:DISTANCIA,X;
ENDSETS
DATA:
B= 1,0,0,0,0,-1,0,0;
DISTANCIA = 1,2,1,5,2,2,1,4,3,6,8,3,7,5,2,6;
ENDDATA
MIN= @SUM(RED:DISTANCIA*X);
@FOR(NODO(I):@SUM(RED(I,J):X(I,J))-@SUM(RED(J,I):X(J,I))=B(I));
END
Variable Value Reduced Cost Variable Value Reduced Cost
B( 1) 1.000000 0.000000 X( 1, 2) 1.000000 0.000000
B( 2) 0.000000 0.000000 X( 1, 3) 0.000000 0.000000
B( 3) 0.000000 0.000000 X( 2, 3) 1.000000 0.000000
B( 4) 0.000000 0.000000 X( 2, 4) 0.000000 2.000000
B( 5) 0.000000 0.000000 X( 2, 5) 0.000000 0.000000
B( 6) -1.000000 0.000000 X( 3, 4) 0.000000 0.000000
B( 7) 0.000000 0.000000 X( 3, 5) 0.000000 0.000000
B( 8) 0.000000 0.000000 X( 3, 6) 1.000000 0.000000
DISTANCIA( 1, 2) 1.000000 0.000000 X( 4, 5) 0.000000 4.000000
DISTANCIA( 1, 3) 2.000000 0.000000 X( 4, 6) 0.000000 4.000000
DISTANCIA( 2, 3) 1.000000 0.000000 X( 4, 7) 0.000000 9.000000
DISTANCIA( 2, 4) 5.000000 0.000000 X( 5, 6) 0.000000 0.000000
DISTANCIA( 2, 5) 2.000000 0.000000 X( 5, 7) 0.000000 7.000000
DISTANCIA( 3, 4) 2.000000 0.000000 X( 6, 7) 0.000000 8.000000
DISTANCIA( 3, 5) 1.000000 0.000000 X( 6, 8) 0.000000 5.000000
DISTANCIA( 3, 6) 4.000000 0.000000 X( 7, 8) 0.000000 6.000000
DISTANCIA( 4, 5) 3.000000 0.000000
DISTANCIA( 4, 6) 6.000000 0.000000 Row Slack or Surplus Dual Price
DISTANCIA( 4, 7) 8.000000 0.000000 1 6.000000 -1.000000
DISTANCIA( 5, 6) 3.000000 0.000000 2 0.000000 -3.000000
DISTANCIA( 5, 7) 7.000000 0.000000 3 0.000000 -2.000000
DISTANCIA( 6, 7) 5.000000 0.000000 4 0.000000 -1.000000
DISTANCIA( 6, 8) 2.000000 0.000000 5 0.000000 1.000000
DISTANCIA( 7, 8) 6.000000 0.000000 6 0.000000 0.000000
7 0.000000 3.000000
8 0.000000 0.000000
9 0.000000 0.000000
MODEL:
[_1] MIN= X_1_2 + 2 * X_1_3 + X_2_3 + 5 * X_2_4 + 2 * X_2_5 + 2 * X_3_4 + X_3_5 + 4 * X_3_6 + 3 * X_4_5 + 6 * X_4_6 +
8 * X_4_7 + 3 * X_5_6 + 7 * X_5_7 + 5 * X_6_7 + 2 * X_6_8 + 6 * X_7_8;
[_2] X_1_2 + X_1_3 = 1;
[_3] - X_1_2 + X_2_3 + X_2_4 + X_2_5 = 0;
[_4] - X_1_3 - X_2_3 + X_3_4 + X_3_5 + X_3_6 = 0;
[_5] - X_2_4 - X_3_4 + X_4_5 + X_4_6 + X_4_7 = 0;
[_6] - X_2_5 - X_3_5 - X_4_5 + X_5_6 + X_5_7 = 0; Reporte del lingo
[_7] - X_3_6 - X_4_6 - X_5_6 + X_6_7 + X_6_8 = - 1;
[_8] - X_4_7 - X_5_7 - X_6_7 + X_7_8 = 0;
[_9] - X_6_8 - X_7_8 = 0;
END
Variable Value Reduced Cost Variable Value Reduced Cost
B( 1) 1.000000 0.000000 X( 1, 2) 1.000000 0.000000
B( 2) 0.000000 0.000000 X( 1, 3) 0.000000 0.000000
B( 3) 0.000000 0.000000 X( 2, 3) 1.000000 0.000000
B( 4) 0.000000 0.000000 X( 2, 4) 0.000000 2.000000
B( 5) 0.000000 0.000000 X( 2, 5) 0.000000 0.000000
B( 6) -1.000000 0.000000 X( 3, 4) 0.000000 0.000000
B( 7) 0.000000 0.000000 X( 3, 5) 0.000000 0.000000
B( 8) 0.000000 0.000000 X( 3, 6) 1.000000 0.000000
DISTANCIA( 1, 2) 1.000000 0.000000 X( 4, 5) 0.000000 4.000000
DISTANCIA( 1, 3) 2.000000 0.000000 X( 4, 6) 0.000000 4.000000
DISTANCIA( 2, 3) 1.000000 0.000000 X( 4, 7) 0.000000 9.000000
DISTANCIA( 2, 4) 5.000000 0.000000 X( 5, 6) 0.000000 0.000000
DISTANCIA( 2, 5) 2.000000 0.000000 X( 5, 7) 0.000000 7.000000
DISTANCIA( 3, 4) 2.000000 0.000000 X( 6, 7) 0.000000 8.000000
DISTANCIA( 3, 5) 1.000000 0.000000 X( 6, 8) 0.000000 5.000000
DISTANCIA( 3, 6) 4.000000 0.000000 X( 7, 8) 0.000000 6.000000
DISTANCIA( 4, 5) 3.000000 0.000000
DISTANCIA( 4, 6) 6.000000 0.000000 Row Slack or Surplus Dual Price
DISTANCIA( 4, 7) 8.000000 0.000000 1 6.000000 -1.000000
DISTANCIA( 5, 6) 3.000000 0.000000 2 0.000000 -3.000000
DISTANCIA( 5, 7) 7.000000 0.000000 3 0.000000 -2.000000
DISTANCIA( 6, 7) 5.000000 0.000000 4 0.000000 -1.000000
DISTANCIA( 6, 8) 2.000000 0.000000 5 0.000000 1.000000
DISTANCIA( 7, 8) 6.000000 0.000000 6 0.000000 0.000000
7 0.000000 3.000000
8 0.000000 0.000000
9 0.000000 0.000000
Reporte administrativo:
La ruta a seguir es: iniciar en la estación 1, seguir
la estación 2, luego la estación 3 y terminar en el
destino estación 6 con un recorrido de 6 km.
Z* = 6
EL PROBLEMA DEL FLUJO MÁXIMO
Considere el siguiente grafo como una representación de líneas de producción de una planta de
transformación de materia prima desde el almacén de material prima 1 hasta el almacén de productos
terminados 10. Se necesita saber cuál será el máximo volumen de producción en toda la planta, si las
líneas de conexión entre cada estación de trabajo indican capacidad de producción máxima entre cada
estación. Indique también la capacidad utilizada entre cada estación de trabajo y los sobrantes
respectivos.
20 10
2 5 8
Capacidad de 10 10 50
arco [flujo]
20
20 20
3 7 60
80 50 30 20
Nodo de inicio 30
4 6 9
15 50
Nodo de término
15
1
10
Modelo compacto de PL de flujo máximo
[capacidad de flujo] Arco de retorno total [ficticio]:
n: nodo final; 1: nodo de inicio
𝑋𝑖𝑗 = 𝑋𝑗𝑖 ; ∀𝑖
𝑗=1 𝑗=1
𝑋𝑖𝑗 ≤ 𝑈𝑖𝑗 ; ∀ 𝑖, ∀𝑗
𝑋𝑖𝑗 ≥ 0 ; ∀ 𝑖, ∀𝑗
El modelo compacto del flujo máximo
SETS:
NODO/1,2,3,4,5,6,7,8,9,10/;
RED(NODO,NODO)/1,2 1,3 1,4 2,5 3,5 3,6 3,7 4,6 5,6 5,7 5,8 6,7 6,9 7,8 7,9 8,10 9,10 10,1/:CAP,X;
ENDSETS
DATA:
CAP = 20 80 15 20 10 50 20 15 20 10 10 30 30 50 20 60 50 10000;
ENDDATA
MAX= X(10,1);
@FOR(NODO(I): @SUM(RED(I,J):X(I,J)) = @SUM(RED(J,I):X(J,I)));
@FOR(RED(I,J): X(I,J) <= CAP(I,J));
END
Variable Value Reduced Cost Row Slack or Surplus Dual Price
CAP( 1, 2) 20.00000 0.000000 1 100.0000 1.000000
CAP( 1, 3) 80.00000 0.000000 2 0.000000 0.000000
CAP( 1, 4) 15.00000 0.000000 3 0.000000 0.000000
CAP( 2, 5) 20.00000 0.000000 4 0.000000 0.000000 Reporte del lingo
CAP( 3, 5) 10.00000 0.000000 5 0.000000 0.000000
CAP( 3, 6) 50.00000 0.000000 6 0.000000 0.000000
CAP( 3, 7) 20.00000 0.000000 7 0.000000 0.000000
CAP( 4, 6) 15.00000 0.000000 8 0.000000 1.000000 MODEL:
CAP( 5, 6) 20.00000 0.000000 9 0.000000 1.000000 [_1] MAX= X_10_1;
CAP( 5, 7) 10.00000 0.000000 10 0.000000 1.000000 [_2] X_1_2 + X_1_3 + X_1_4 - X_10_1 = 0;
CAP( 5, 8) 10.00000 0.000000 11 0.000000 1.000000
[_3] - X_1_2 + X_2_5 = 0;
CAP( 6, 7) 30.00000 0.000000 12 0.000000 0.000000
[_4] - X_1_3 + X_3_5 + X_3_6 + X_3_7 = 0;
CAP( 6, 9) 30.00000 0.000000 13 0.000000 0.000000
[_5] - X_1_4 + X_4_6 = 0;
CAP( 7, 8) 50.00000 0.000000 14 15.00000 0.000000
15 0.000000 0.000000 [_6] - X_2_5 - X_3_5 + X_5_6 + X_5_7 + X_5_8 = 0;
CAP( 7, 9) 20.00000 0.000000
16 0.000000 0.000000 [_7] - X_3_6 - X_4_6 - X_5_6 + X_6_7 + X_6_9 = 0;
CAP( 8, 10) 60.00000 0.000000
CAP( 9, 10) 50.00000 0.000000 17 0.000000 0.000000 [_8] - X_3_7 - X_5_7 - X_6_7 + X_7_8 + X_7_9 = 0;
CAP( 10, 1) 10000.00 0.000000 18 0.000000 1.000000 [_9] - X_5_8 - X_7_8 + X_8_10 = 0;
X( 1, 2) 20.00000 0.000000 19 15.00000 0.000000 [_10] - X_6_9 - X_7_9 + X_9_10 = 0;
X( 1, 3) 80.00000 0.000000 20 10.00000 0.000000 [_11] - X_8_10 - X_9_10 + X_10_1 = 0;
X( 1, 4) 0.000000 0.000000 21 0.000000 1.000000 [_12] X_1_2 <= 20;
X( 2, 5) 20.00000 0.000000 22 0.000000 1.000000 [_13] X_1_3 <= 80;
X( 3, 5) 10.00000 0.000000 23 0.000000 1.000000 [_14] X_1_4 <= 15;
X( 3, 6) 50.00000 0.000000 24 0.000000 1.000000 [_15] X_2_5 <= 20;
X( 3, 7) 20.00000 0.000000 25 0.000000 0.000000 [_16] X_3_5 <= 10;
X( 4, 6) 0.000000 0.000000 26 10.00000 0.000000 [_17] X_3_6 <= 50;
X( 5, 6) 10.00000 0.000000 27 0.000000 0.000000 [_18] X_3_7 <= 20;
X( 5, 7) 10.00000 0.000000 28 10.00000 0.000000 [_19] X_4_6 <= 15;
X( 5, 8) 10.00000 0.000000 29 9900.000 0.000000 [_20] X_5_6 <= 20;
X( 6, 7) 30.00000 0.000000 [_21] X_5_7 <= 10;
X( 6, 9) 30.00000 0.000000 [_22] X_5_8 <= 10;
X( 7, 8) 50.00000 0.000000 [_23] X_6_7 <= 30;
X( 7, 9) 10.00000 0.000000 [_24] X_6_9 <= 30;
X( 8, 10) 60.00000 0.000000
[_25] X_7_8 <= 50;
X( 9, 10) 40.00000 0.000000
[_26] X_7_9 <= 20;
X( 10, 1) 100.0000 0.000000
[_27] X_8_10 <= 60;
[_28] X_9_10 <= 50;
[_29] X_10_1 <= 10000;
END
Variable Value Reduced Cost Row Slack or Surplus Dual Price
CAP( 1, 2) 20.00000 0.000000 1 100.0000 1.000000
CAP( 1, 3) 80.00000 0.000000 2 0.000000 0.000000
CAP( 1, 4) 15.00000 0.000000 3 0.000000 0.000000
CAP( 2, 5) 20.00000 0.000000 4 0.000000 0.000000 Reporte administrativo:
CAP( 3, 5) 10.00000 0.000000 5 0.000000 0.000000
CAP( 3, 6) 50.00000 0.000000 6 0.000000 0.000000 La producción máxima en la planta es de 100
CAP( 3, 7) 20.00000 0.000000 7 0.000000 0.000000
CAP( 4, 6) 15.00000 0.000000 8 0.000000 1.000000 unidades ocupando todas las capacidades
CAP( 5, 6) 20.00000 0.000000 9 0.000000 1.000000
CAP( 5, 7) 10.00000 0.000000 10 0.000000 1.000000
disponibles en la línea de producción, a
CAP( 5, 8) 10.00000 0.000000 11
12
0.000000
0.000000
1.000000
0.000000
excepción de las operaciones entre las
CAP( 6, 7) 30.00000 0.000000
CAP( 6, 9) 30.00000 0.000000 13 0.000000 0.000000 estaciones 5-6 y 7-9 que ocupan solo el 50%
CAP( 7, 8) 50.00000 0.000000 14 15.00000 0.000000
CAP( 7, 9) 20.00000 0.000000 15 0.000000 0.000000 de su capacidad en cada operación y de la
CAP( 8, 10) 60.00000 0.000000 16 0.000000 0.000000
CAP( 9, 10) 50.00000 0.000000 17 0.000000 0.000000 estación 9-10 que ocupan el 80% de su
CAP( 10, 1) 10000.00 0.000000 18 0.000000 1.000000
X( 1, 2) 20.00000 0.000000 19 15.00000 0.000000
capacidad; además de no necesitar de las
X( 1, 3) 80.00000 0.000000 20
21
10.00000
0.000000
0.000000
1.000000
operaciones en las líneas 1-4 y 4-6.
X( 1, 4) 0.000000 0.000000
X( 2, 5) 20.00000 0.000000 22 0.000000 1.000000
X( 3, 5) 10.00000 0.000000 23 0.000000 1.000000
X( 3, 6) 50.00000 0.000000 24 0.000000 1.000000
X( 3, 7) 20.00000 0.000000 25 0.000000 0.000000
X( 4, 6) 0.000000 0.000000 26 10.00000 0.000000
X( 5, 6) 10.00000 0.000000 27 0.000000 0.000000
X( 5, 7) 10.00000 0.000000 28 10.00000 0.000000
X( 5, 8) 10.00000 0.000000 29 9900.000 0.000000
X( 6, 7) 30.00000 0.000000
X( 6, 9) 30.00000 0.000000
X( 7, 8) 50.00000 0.000000
X( 7, 9) 10.00000 0.000000
X( 8, 10) 60.00000 0.000000
X( 9, 10) 40.00000 0.000000
X( 10, 1) 100.0000 0.000000
Balance de distribución de productos
En la ciudad de Lima se necesita realizar la distribución de vacunas desde tres centros de acopio [2, 3 y 4] a dos
regiones del Perú: sur [9] y norte [10]. En el siguiente grafo se muestra las capacidades de envío de vacunas (en
miles de unidades) con posibilidades de desplazamientos por distintos lugares del Perú [5, 6, 7 y 8].
50 70
2 5 9
30
50 60 50 90
70 80
3 6 8
40
60 50 45
30
4 7 10
95 60
Se necesita saber cuál será el máximo volumen de envío de vacunas, si las líneas de conexión entre cada
estación de lugar indican capacidad de envío máxima entre cada lugar.
Balance de distribución de productos
Se recomienda agrupar los orígenes en un nodo [1] y los destinos n otro nodo [11], cada uno con arcos de
conexión con sus respectivos orígenes o destinos, con valores altos de capacidad de conexión y, adicionar
un arco de retorno también con valor infinito [alto].
50 70
2 5 9
1000 30 1000
50 60 50 90
1000 70 80 11
1 3 6 8
40
60 50 45
1000 30
1000
4 7 10
95 60
10000
Los nodos, arcos y valores asociados son ficticios; es solo para aplicar el modelo.
El modelo compacto del flujo máximo
SETS:
NODO/1,2,3,4,5,6,7,8,9,10,11/;
RED(NODO,NODO)/1,2 1,3 1,4 2,5 2,6 3,5 3,6 3,7 4,6 4,7 5,8 5,9 6,5 6,7 6,8 7,8 7,10 8,9
8,10 9,11 10,11 11,1/: CAPACIDAD,X;
ENDSETS
DATA:
CAPACIDAD = 1000 1000 1000 50 50 30 70 60 40 95 50 70 60 30 80 50 60 90 45 1000 1000 10000;
ENDDATA
MAX= X(11,1);
@FOR(NODO(I): @SUM(RED(I,J):X(I,J)) = @SUM(RED(J,I):X(J,I)));
@FOR(RED(I,J): X(I,J) <= CAPACIDAD(I,J));
END
Variable Value Reduced Cost Row Slack or Surplus Dual Price Row Slack or Surplus Dual Price
CAPACIDAD( 1, 2) 1000.000 0.000000 1 265.0000 1.000000 18 0.000000 0.000000
CAPACIDAD( 1, 3) 1000.000 0.000000 2 0.000000 0.000000 19 0.000000 0.000000
CAPACIDAD( 1, 4) 1000.000 0.000000 3 0.000000 0.000000 20 60.00000 0.000000
CAPACIDAD( 2, 5) 50.00000 0.000000 4 0.000000 0.000000 21 40.00000 0.000000
CAPACIDAD( 2, 6) 50.00000 0.000000 5 0.000000 0.000000 22 30.00000 0.000000
CAPACIDAD( 3, 5) 30.00000 0.000000 6 0.000000 0.000000 23 0.000000 0.000000
CAPACIDAD( 3, 6) 70.00000 0.000000 7 0.000000 0.000000 24 0.000000 1.000000
CAPACIDAD( 3, 7) 60.00000 0.000000 8 0.000000 0.000000 25 20.00000 0.000000
CAPACIDAD( 4, 6) 40.00000 0.000000 9 0.000000 0.000000 26 30.00000 0.000000
CAPACIDAD( 4, 7) 95.00000 0.000000 10 0.000000 1.000000 27 0.000000 0.000000
CAPACIDAD( 5, 8) 50.00000 0.000000 11 0.000000 1.000000 28 45.00000 0.000000
CAPACIDAD( 5, 9) 70.00000 0.000000 12 0.000000 1.000000 29 0.000000 1.000000
CAPACIDAD( 6, 5) 60.00000 0.000000 13 900.0000 0.000000 30 0.000000 1.000000
CAPACIDAD( 6, 7) 30.00000 0.000000 14 900.0000 0.000000 31 0.000000 1.000000
CAPACIDAD( 6, 8) 80.00000 0.000000 15 935.0000 0.000000 32 840.0000 0.000000
CAPACIDAD( 7, 8) 50.00000 0.000000 16 0.000000 0.000000 33 895.0000 0.000000
CAPACIDAD( 7, 10) 60.00000 0.000000 17 0.000000 0.000000 34 9735.000 0.000000
CAPACIDAD( 8, 9) 90.00000 0.000000
CAPACIDAD( 8, 10) 45.00000 0.000000
CAPACIDAD( 9, 11) 1000.000 0.000000
CAPACIDAD( 10, 11) 1000.000 0.000000
CAPACIDAD( 11, 1) 10000.00 0.000000
Reporte de lingo
X( 1, 2) 100.0000 0.000000
X( 1, 3) 100.0000 0.000000
X( 1, 4) 65.00000 0.000000
X( 2, 5) 50.00000 0.000000 MODEL:
[_1] MAX= X_11_1; [_18] X_3_5 <= 30;
X( 2, 6) 50.00000 0.000000 [_19] X_3_6 <= 70;
X( 3, 5) 30.00000 0.000000 [_2] X_1_2 + X_1_3 + X_1_4 - X_11_1 = 0;
[_3] - X_1_2 + X_2_5 + X_2_6 = 0; [_20] X_3_7 <= 60;
X( 3, 6) 70.00000 0.000000 [_21] X_4_6 <= 40;
X( 3, 7) 0.000000 0.000000 [_4] - X_1_3 + X_3_5 + X_3_6 + X_3_7 = 0;
[_5] - X_1_4 + X_4_6 + X_4_7 = 0; [_22] X_4_7 <= 95;
X( 4, 6) 0.000000 0.000000 [_23] X_5_8 <= 50;
X( 4, 7) 65.00000 0.000000 [_6] - X_2_5 - X_3_5 + X_5_8 + X_5_9 - X_6_5 = 0;
[_7] - X_2_6 - X_3_6 - X_4_6 + X_6_5 + X_6_7 + X_6_8 = 0; [_24] X_5_9 <= 70;
X( 5, 8) 50.00000 0.000000 [_25] X_6_5 <= 60;
X( 5, 9) 70.00000 0.000000 [_8] - X_3_7 - X_4_7 - X_6_7 + X_7_8 + X_7_10 = 0;
[_9] - X_5_8 - X_6_8 - X_7_8 + X_8_9 + X_8_10 = 0; [_26] X_6_7 <= 30;
X( 6, 5) 40.00000 0.000000 [_27] X_6_8 <= 80;
X( 6, 7) 0.000000 0.000000 [_10] - X_5_9 - X_8_9 + X_9_11 = 0;
[_11] - X_7_10 - X_8_10 + X_10_11 = 0; [_28] X_7_8 <= 50;
X( 6, 8) 80.00000 0.000000 [_29] X_7_10 <= 60;
X( 7, 8) 5.000000 0.000000 [_12] - X_9_11 - X_10_11 + X_11_1 = 0;
[_13] X_1_2 <= 1000; [_30] X_8_9 <= 90;
X( 7, 10) 60.00000 0.000000 [_31] X_8_10 <= 45;
X( 8, 9) 90.00000 0.000000 [_14] X_1_3 <= 1000;
[_15] X_1_4 <= 1000; [_32] X_9_11 <= 1000;
X( 8, 10) 45.00000 0.000000 [_33] X_10_11 <= 1000;
X( 9, 11) 160.0000 0.000000 [_16] X_2_5 <= 50;
[_17] X_2_6 <= 50; [_34] X_11_1 <= 10000;
X( 10, 11) 105.0000 0.000000 END
X( 11, 1) 265.0000 0.000000
Variable Value Reduced Cost Row Slack or Surplus Dual Price Row Slack or Surplus Dual Price
CAPACIDAD( 1, 2) 1000.000 0.000000 1 265.0000 1.000000 18 0.000000 0.000000
CAPACIDAD( 1, 3) 1000.000 0.000000 2 0.000000 0.000000 19 0.000000 0.000000
CAPACIDAD( 1, 4) 1000.000 0.000000 3 0.000000 0.000000 20 60.00000 0.000000
CAPACIDAD( 2, 5) 50.00000 0.000000 4 0.000000 0.000000 21 40.00000 0.000000
CAPACIDAD( 2, 6) 50.00000 0.000000 5 0.000000 0.000000 22 30.00000 0.000000
CAPACIDAD( 3, 5) 30.00000 0.000000 6 0.000000 0.000000 23 0.000000 0.000000
CAPACIDAD( 3, 6) 70.00000 0.000000 7 0.000000 0.000000 24 0.000000 1.000000
CAPACIDAD( 3, 7) 60.00000 0.000000 8 0.000000 0.000000 25 20.00000 0.000000
CAPACIDAD( 4, 6) 40.00000 0.000000 9 0.000000 0.000000 26 30.00000 0.000000
CAPACIDAD( 4, 7) 95.00000 0.000000 10 0.000000 1.000000 27 0.000000 0.000000
CAPACIDAD( 5, 8) 50.00000 0.000000 11 0.000000 1.000000 28 45.00000 0.000000
CAPACIDAD( 5, 9) 70.00000 0.000000 12 0.000000 1.000000 29 0.000000 1.000000
CAPACIDAD( 6, 5) 60.00000 0.000000 13 900.0000 0.000000 30 0.000000 1.000000
CAPACIDAD( 6, 7) 30.00000 0.000000 14 900.0000 0.000000 31 0.000000 1.000000
CAPACIDAD( 6, 8) 80.00000 0.000000 15 935.0000 0.000000 32 840.0000 0.000000
CAPACIDAD( 7, 8) 50.00000 0.000000 16 0.000000 0.000000 33 895.0000 0.000000
CAPACIDAD( 7, 10) 60.00000 0.000000 17 0.000000 0.000000 34 9735.000 0.000000
CAPACIDAD( 8, 9) 90.00000 0.000000
CAPACIDAD( 8, 10) 45.00000 0.000000
CAPACIDAD( 9, 11) 1000.000 0.000000
CAPACIDAD( 10, 11) 1000.000 0.000000
CAPACIDAD( 11, 1) 10000.00 0.000000
X( 1, 2) 100.0000 0.000000
X( 1, 3) 100.0000 0.000000
X( 1, 4) 65.00000 0.000000
X( 2, 5) 50.00000 0.000000
X( 2, 6) 50.00000 0.000000
X( 3, 5) 30.00000 0.000000
X( 3, 6) 70.00000 0.000000
X( 3, 7) 0.000000 0.000000 Máxima Capacidad de envío
X( 4, 6) 0.000000 0.000000
X( 4, 7) 65.00000 0.000000 [Z*] = 265 unidades
X( 5, 8) 50.00000 0.000000
X( 5, 9) 70.00000 0.000000
X( 6, 5) 40.00000 0.000000
X( 6, 7) 0.000000 0.000000
X( 6, 8) 80.00000 0.000000 Reporte administrativo:
X( 7, 8) 5.000000 0.000000
X( 7, 10) 60.00000 0.000000 La capacidad máxima de distribución de manera simultánea es de 265 mil vacunas, utilizando todas las
X( 8, 9) 90.00000 0.000000 capacidades disponibles en la línea de distribución del Perú desde Lima, a excepción de las
X( 8, 10) 45.00000 0.000000
X( 9, 11) 160.0000 0.000000 operaciones entre las localidades 4-7, 6-5 y 7-8 que operarían en 66.7%, 68.4% y 12.5% de su
X( 10, 11) 105.0000 0.000000
X( 11, 1) 265.0000 0.000000
capacidad de envío, respectivamente; además de no necesitar de las operaciones entre las localidades
3-7, 4-6, y 6-7.
Muchas gracias