Subido por diego valencia

Programación Entera Binaria GIN-BIN

Anuncio
INVESTIGACION DE OPERACIONES I
PROGRAMACIÓN ENTERA&BINARIA
Modelos
• Modelos de costo fijo
• Modelos de lote mínimo
• Restricciones excluyentes (K de N)
• Funciones con N valores posibles
• Variables que toman un conjunto de
valores
• Ejercicios diversos [revisar
y completar]
3
MODELO DE COSTO FIJO
Cuando la actividad económica incurre en dos tipos de costos: un costo fijo necesario para
iniciar la actividad y un costo variable proporcional al nivel de la actividad; y el costo fijo
sólo existe si la actividad se inicia (si se produce, si se contrata, si se alquila, etc). Dado
que F es el costo fijo, c es el costo unitario variable y X es el nivel de producción, la
función de costo se expresa como:
F + cX , si X > 0
C(X) =
0, en caso contrario
La función C(X) es analíticamente insoluble porque implica una discontinuidad en X=0.
Las variables binarias nos ayudarán a convertir el modelo en analíticamente soluble.
Se formula un modelo general para n actividades, cada una con la estructura de costos
indicada, Si se define:
1 si Xi > 0 (se realiza la actividad i)
Yi =
0 si Xi = 0
La función objetivo estaría representada por los costos totales (fijo + variable) y el
problema se puede expresar, para m variables:
m
Min Z = ෍ Fi ∗ Yi + cj ∗ Xi
i=1
Y la restricción que relaciona Xcon Y: (donde Mi es una cota superior para Xi)
Xi ≤ M ∗ Yi
i
SELECCIÓN DE OPERADORES [COSTO FIJO]
Tres compañías telefónicas (operadores) me ofrecen suscribirme a su servicio de larga
distancia. Movistar cobra una cuota fija de $16 por mes más $0.25 por minuto. Claro
cobra $25 por mes, pero reduce el costo por minuto a $0.21. Por otro lado en Entel, la
cuota fija mensual es de $18 y el costo por minuto es de $0.22.
Usualmente utilizo un promedio de 200 minutos de llamada de larga distancia al mes.
Suponiendo que no tenga que pagar la cuota fija mensual a menos que realice llamadas
y que pueda repartirlas entre los tres operadores como me plazca.
Formule el programa matemático que represente el problema y presente el reporte
administrativo, es decir: ¿Cómo debería utilizar las tres compañías para minimizar mi
recibo telefónico mensual?
Costo Fijo Costo Variable
($)
($/minuto)
Operadores
de telefonía
Movistar
16
0.25
Claro
25
0.21
Entel
18
0.22
Yi
Xi
Variables Binarias:
Y1 = Seleccionar a Movistar
Y2 = Seleccionar a Claro
Y3 = Seleccionar a Entel
→
→
→
200 minutos → (tiempos)
Variables Continuas
X1 = Minutos a contratar en Movistar
X2 = Minutos a contratar en Claro
X3 = Minutos a contratar en Entel
Es decir, solo si se selecciona al operador i, podré consumir Xi minutos”
Índice:
SETS:
i: operador (1..3) [i=1 movistar; i=2 claro; i=3 entel] OPERADOR/1..3/:X,Y,CUOTAFIJA,COSTOMINUTO;
ENDSETS
Variables de decisión
X(i) = Cantidad de minutos a contratar al operador i
Y(i) = Opción de selección del operador i
[1 se selecciona al operador o 0 no se selecciona]
Estructura de datos
Cuotafijai = [16 23 24]
Costominutoi = [0.25 0.21 0.22]
DATA:
CUOTAFIJA= 16 23 24;
COSTOMINUTO= 0.25 0.21 0.22;
ENDDATA
Min Z = ෍ Cuotafijai ∗ Yi + Costominutoi ∗ Xi
MIN=@SUM(OPERADOR:CUOTAFIJA*Y+COSTOMINUTO*X);
3
i=1
Sujeto a
∀i: Xi ≤ 200 ∗ Yi
3
෍ Xi = 200
i=1
∀i: Xi ≥ 0 y Yi = 𝟏 𝐨 𝟎
@FOR(OPERADOR:X<=200*Y);
@SUM(OPERADOR:X)=200;
@FOR(OPERADOR:@BIN(Y));
SETS:
OPERADOR/1..3/:X,Y,CUOTAFIJA,COSTOMINUTO;
ENDSETS
DATA:
CUOTAFIJA= 16 23 24;
COSTOMINUTO= 0.25 0.21 0.22;
ENDDATA
MIN=@SUM(OPERADOR:CUOTAFIJA*Y+COSTOMINUTO*X);
@FOR(OPERADOR:X<=200*Y);
@SUM(OPERADOR:X)=200;
@FOR(OPERADOR:@BIN(Y));
END
MODEL:
[_1] MIN= 0.25 * X_1 + 16 * Y_1 + 0.21 * X_2 + 23 * Y_2 + 0.22 * X_3 + 24 * Y_3;
[_2] X_1 - 200 * Y_1 <= 0;
[_3] X_2 - 200 * Y_2 <= 0;
[_4] X_3 - 200 * Y_3 <= 0;
[_5] X_1 + X_2 + X_3 = 200;
@BIN( Y_1); @BIN( Y_2); @BIN( Y_3);
END
Variable
X( 1)
X( 2)
X( 3)
Y( 1)
Y( 2)
Y( 3)
CUOTAFIJA( 1)
CUOTAFIJA( 2)
CUOTAFIJA( 3)
COSTOMINUTO( 1)
COSTOMINUTO( 2)
COSTOMINUTO( 3)
Row
1
2
3
4
5
Value
0.000000
200.0000
0.000000
0.000000
1.000000
0.000000
16.00000
23.00000
24.00000
0.2500000
0.2100000
0.2200000
Slack or Surplus
65.00000
0.000000
0.000000
0.000000
0.000000
Reduced Cost
0.4000000E-01
0.000000
0.1000000E-01
16.00000
23.00000
24.00000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
Dual Price
-1.000000
0.000000
0.000000
0.000000
-0.2100000
Reporte administrativo
Contratar los 200 minutos solo con el servicio
del operador Claro, con un costo mínimo de $65
ALQUILER DE ALMACENES (costo fijo)
Un distribuidor decide alquilar un máximo de dos lugares para establecer almacenes en
algunas regiones. En la tabla adjunta se muestran los tres almacenes candidatos que
puede rentar, sus costos mensuales de alquiler, el número máximo de camiones que
pueden cargar y despachar en un mes, la demanda mensual de cargas de camión para
cada uno de los cuatro distritos que desea atender y el costo promedio de enviar un
camión de cada almacén a cada distrito.
Distrito [costo de ventas por camión ($)
Almacén
A
B
C
Demanda
1
170
150
150
100
2
90
165
240
90
3
120
100
140
110
4
160
140
120
60
Capacidad mensual
(camiones)
200
250
300
Costo de
alquiler ($)
7750
4000
5500
Formule el programa matemático en lingo compacto y presente el reporte
administrativo, es decir, determinar que almacenes alquilar y cuál es el plan de
distribución para minimizar los costos totales.
ALMACÉN
DISTRITO
(i)
(j)
170
1
100
2
90
150
200
CostoAlquiler = $7750
A
90
120
160
CAPACIDAD
(camiones)
CONTRATAR
SOLO UN
MÁXIMO DE DOS
ALMACENES
250
CostoAlquiler = $4000
350
CostoAlquiler = $5500
165
DEMANDA
(camiones)|
B
100
150
240
C
140
60
costo de envío
($/camión)
3
110
4
60
140
Datos, información y modelamiento
i: almacén (1..3) i= 1 (A) , i= 2 (B); i=3 (C)
j: distrito (1..4) j= 1 (distrito 1) , j= 2 (distrito 2),
j= 3 (distrito 3) , j= 4 (distrito 4)
Sets:
ALMACEN/A B C/:CAPACIDAD, ALQUILER, Y;
DISTRITO/1..4/:DEMANDA;
CAMIONES(ALMACEN,DISTRITO): COSTO, X;
End Sets
Xij = Cantidad en camiones a enviar del almacén i
al distrito j
Yi = Opción de alquiler de almacén i
[Yi = 1 se alquila o Yi = 0 no se alquila]
Capacidadi = 200 250 300
Alquileri = 7750 4000 5500
Demandaj = 100 90 110 60
Costoij
= 170 90 120 160 150 165 100 140 150 240 140 120
Data:
CAPACIDAD = 200 250 300;
ALQUILER = 7750 4000 5500;
DEMANDA = 100 90 110 60;
COSTO = 170 90 120 160 150 165 100 140
150 240 140 120;
End Data
Datos, información y modelamiento
3
4
3
Min Z = ෍ ෍ Costoij ∗ Xij + ෍ Alquileri ∗ Yi
i=1 j=1
i=1
Sujeto a:
3
∀j:
෍ Xij ≥ Demandaj
i=1
4
∀i:
෍ Xij ≤ Capacidadi ∗ Yi
j=1
3
Min = @Sum(CAMIONES(i,j):COSTO(i,j)*X(i,j))+
@Sum(ALMACEN(i):ALQUILER(i)*Y(i));
@For(DISTRITO(j):
@Sum(ALMACEN(i):X(i,j))>= DEMANDA(j));
@For(ALMACEN(i):
@Sum(DISTRITO(j):X(i,j))<= CAPACIDAD(i)*Y(i));
@Sum(ALMACEN(i): Y(i))<= 2;
෍ Yi ≤ 2
i=1
Xij ≥ 0, entero
Yi = 0 o 1 ∀ i
∀ i, ∀j;
@For(CAMIONES(i,j):@Gin(X(i,j)));
@For(ALMACEN(i):@Bin(Y(i)));
Sets:
ALMACEN/A B C/:CAPACIDAD, ALQUILER, Y;
DISTRITO/1..4/:DEMANDA;
CAMIONES(ALMACEN,DISTRITO): COSTO, X;
End Sets
Data:
CAPACIDAD = 200 250 300;
ALQUILER = 7750 4000 5500;
DEMANDA = 100 90 110 60;
COSTO = 170 90 120 160 150 165 100 140 150 240 140 120;
End Data
Min = @Sum(CAMIONES(i,j): COSTO(i,j)*X(i,j))+@Sum(ALMACEN(i):ALQUILER(i)*Y(i));
@For(DISTRITO(j): @Sum(ALMACEN(i):X(i,j))>= DEMANDA(j));
@For(ALMACEN(i): @Sum(DISTRITO(j):X(i,j))<= CAPACIDAD(i)*Y(i));
@Sum(ALMACEN(i): Y(i))<= 2;
@For(CAMIONES(i,j):@Gin(X(i,j)));
@For(ALMACEN(i):@Bin(Y(i)));
End
Variable
CAPACIDAD( A)
CAPACIDAD( B)
CAPACIDAD( C)
ALQUILER( A)
ALQUILER( B)
ALQUILER( C)
Y( A)
Y( B)
Y( C)
DEMANDA( 1)
DEMANDA( 2)
DEMANDA( 3)
DEMANDA( 4)
X( A, 1)
X( A, 2)
X( A, 3)
X( A, 4)
X( B, 1)
X( B, 2)
X( B, 3)
X( B, 4)
X( C, 1)
X( C, 2)
X( C, 3)
X( C, 4)
COSTO( A, 1)
COSTO( A, 2)
COSTO( A, 3)
COSTO( A, 4)
COSTO( B, 1)
COSTO( B, 2)
COSTO( B, 3)
COSTO( B, 4)
COSTO( C, 1)
COSTO( C, 2)
COSTO( C, 3)
COSTO( C, 4)
Value
200.0000
250.0000
300.0000
7750.000
4000.000
5500.000
1.000000
1.000000
0.000000
100.0000
90.00000
110.0000
60.00000
0.000000
90.00000
0.000000
20.00000
100.0000
0.000000
110.0000
40.00000
0.000000
0.000000
0.000000
0.000000
170.0000
90.00000
120.0000
160.0000
150.0000
165.0000
100.0000
140.0000
150.0000
240.0000
140.0000
120.0000
Reduced Cost
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
7750.000
4000.000
5500.000
0.000000
0.000000
0.000000
0.000000
170.0000
90.00000
120.0000
160.0000
150.0000
165.0000
100.0000
140.0000
150.0000
240.0000
140.0000
120.0000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
Row
1
2
3
4
5
6
7
8
9
Slack or Surplus
54650.00
0.000000
0.000000
0.000000
0.000000
90.00000
0.000000
0.000000
0.000000
Dual Price
-1.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
MODEL:
[_1] MIN= 170 * X_A_1 + 90 * X_A_2 + 120 * X_A_3 + 160 * X_A_4 + 150 * X_B_1 + 165 * X_B_2 +
100 * X_B_3 + 140 * X_B_4 + 150 * X_C_1 + 240 * X_C_2 + 140 * X_C_3 + 120 * X_C_4 +
7750 * Y_A + 4000 * Y_B + 5500 * Y_C;
[_2] X_A_1 + X_B_1 + X_C_1 >= 100;
[_3] X_A_2 + X_B_2 + X_C_2 >= 90;
[_4] X_A_3 + X_B_3 + X_C_3 >= 110;
[_5] X_A_4 + X_B_4 + X_C_4 >= 60;
[_6] X_A_1 + X_A_2 + X_A_3 + X_A_4 - 200 * Y_A <= 0;
[_7] X_B_1 + X_B_2 + X_B_3 + X_B_4 - 250 * Y_B <= 0;
[_8] X_C_1 + X_C_2 + X_C_3 + X_C_4 - 300 * Y_C <= 0;
[_9] Y_A + Y_B + Y_C <= 2;
@GIN( X_A_1); @GIN( X_A_2); @GIN( X_A_3); @GIN( X_A_4); @GIN( X_B_1);
@GIN( X_B_2); @GIN( X_B_3); @GIN( X_B_4); @GIN( X_C_1); @GIN( X_C_2);
@GIN( X_C_3); @GIN( X_C_4); @BIN( Y_A); @BIN( Y_B); @BIN( Y_C);
END
Reporte administrativo:
Alquilar solamente los almacenes A y B y desde el almacén A, atender la demanda de los
distritos 2 y 4 con 90 y 20 camiones, respectivamente y desde el almacén B, atender la
demanda de los distritos 1, 3 y 4, con 100, 110 y 40 camiones, respectivamente. El mínimo
costo de distribución y alquiler de los dos almacenes con las que se trabajará, asciende a
$54,650.
MODELOS DE LOTE MÍNIMO
En la fabricación de un determinado producto, se puede presentar la condición “deben
producirse al menos m unidades y como máximo M unidades”. Dado que Xi es la cantidad a
fabricar del producto i, se añadirán las siguientes restricciones:
Xi <= M*Yi
Xi >= m*Yi
La variable Yi es entera binaria (0 o 1). La variable M es un número cuyo valor es
sustancialmente mayor al resto de los valores del modelo o una cota superior para el valor de Xi.
El valor m es la cantidad mínima a fabricar de Xi cuando se produce alguna unidad de Xi. Es
decir que Xi puede ser: Xi = 0 o m ≤ Xi ≤M
Cuando Yi =0 las restricciones se reducen a: Xi≤0 y Xi≥0 con lo que Xi = 0
Cuando Yi =1 las restricciones se reducen a: Xi ≤ M y Xi ≥m
LOTE MÍNIMO DE PRODUCCIÓN
CARSA planea producir al menos 2000
artefactos con tres máquinas. El tamaño
mínimo del lote es de 500 artefactos. La
siguientes tabla ofrece los datos pertinentes
de la situación.
Máquina
1
2
3
Costo de
preparación
($)
300
100
200
Costo de
producción
unitario ($)
2
10
5
Capacidad
(unidades)
600
800
1200
Formule el problema como un programa
entero binario en lingo compacto y
determine la solución y el valor óptimo y
presente el reporte administrativo.
Índice
i: máquina (1..3)
Variables de decisión
X(i) = Número de artefactos a producir en la máquina i
Y(i) = 1 si la máquina i produce artículos o 0 no produce
Datos estructurados:
CostoPrepara(i) = [300, 100, 200]
CostoProduce(i) = [2, 10, 5]
Capacidad(i) = [600, 800, 1200]
3
3
Min Z = ෍ CostoPreparai ∗ Yi + ෍ CostoProducei ∗ Xi
i=1
i=1
Sujeto a:
∀i: Xi ≤ Capacidadi ∗ Yi
∀i: Xi ≥ 500 ∗ Yi
3
෍ Xi ≥ 2000
i=1
∀i: Xi ≥ 0, entero; ∀i: Yi = 0 o 1
Datos, información y modelamiento
Índice
i: máquina (1..3)
Variables de decisión
X(i) = Número de artefactos a producir en la máquina i
Y(i) = 1 si la máquina i produce artículos o 0 no produce
Datos estructurados:
CostoPrepara(i) = [300 100 200]
CostoProduce(i) = [2 10 5]
Capacidad(i) = [600 800 1200]
3
3
Min Z = ෍ CostoPreparai ∗ Yi + ෍ CostoProducei ∗ Xi
i=1
i=1
Sujeto a:
∀i: Xi ≤ Capacidadi ∗ Yi
∀i: Xi ≥ 500 ∗ Yi
Sets:
MAQUINA/1..3/:X, Y, COSTOPREPARA,
COSTOPRODUCE, CAPACIDAD;
End Sets
Data:
COSTOPREPARA = 300 100 200;
COSTOPRODUCE = 2 10 5;
CAPACIDAD = 600 800 1200;
End Data
Min = @Sum(MAQUINA:
COSTOPREPARA*Y+COSTOPRODUCE*X);
@For(MAQUINA: X <= CAPACIDAD*Y);
@For(MAQUINA: X >= 500*Y);
3
෍ Xi ≥ 2000
i=1
∀i: Xi ≥ 0, entero; ∀i: Yi = 0 o 1
@Sum(MAQUINA: X)>= 2000;
@For(MAQUINA: @Gin(X); @Bin(Y));
Sets:
MAQUINA/1..3/:X,Y,COSTOPREPARA,COSTOPRODUCE,CAPACIDAD;
End Sets
Data:
COSTOPREPARA = 300 100 200;
COSTOPRODUCE = 2 10 5;
CAPACIDAD = 600 800 1200;
End Data
Min = @Sum(MAQUINA: COSTOPREPARA*Y + COSTOPRODUCE*X);
@For(MAQUINA: X <= CAPACIDAD*Y);
@For(MAQUINA: X >= 500*Y);
@Sum(MAQUINA: X)>= 2000;
@For(MAQUINA: @Gin(X); @Bin(Y));
End
MODEL:
[_1] MIN= 2 * X_1 + 300 * Y_1 + 10 * X_2 + 100 * Y_2 + 5 * X_3 + 200 * Y_3;
[_2] X_1 - 600 * Y_1 <= 0;
[_3] X_2 - 800 * Y_2 <= 0;
[_4] X_3 - 1200 * Y_3 <= 0;
[_5] X_1 - 500 * Y_1 >= 0;
[_6] X_2 - 500 * Y_2 >= 0;
[_7] X_3 - 500 * Y_3 >= 0;
[_8] X_1 + X_2 + X_3 >= 2000;
@GIN( X_1); @BIN( Y_1); @GIN( X_2); @BIN( Y_2); @GIN( X_3); @BIN( Y_3);
END
Variable
X( 1)
X( 2)
X( 3)
Y( 1)
Y( 2)
Y( 3)
COSTOPREPARA( 1)
COSTOPREPARA( 2)
COSTOPREPARA( 3)
COSTOPRODUCE( 1)
COSTOPRODUCE( 2)
COSTOPRODUCE( 3)
CAPACIDAD( 1)
CAPACIDAD( 2)
CAPACIDAD( 3)
Row
1
2
3
4
5
6
7
8
Value
600.0000
500.0000
900.0000
1.000000
1.000000
1.000000
300.0000
100.0000
200.0000
2.000000
10.00000
5.000000
600.0000
800.0000
1200.000
Slack or Surplus
11300.00
0.000000
300.0000
300.0000
100.0000
0.000000
400.0000
0.000000
Reduced Cost
2.000000
10.00000
5.000000
300.0000
100.0000
200.0000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
Dual Price
-1.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
Reporte administrativo:
Trabajar con las 3 máquinas y producir 600 unidades en la máquina 1,
500 unidades en la máquina 2 y 900 unidades en la máquina 3, con un
costo mínimo de $11,300.
RESTRICCIONES EXCLUYENTES (K de N)
Si el modelo completo incluye un conjunto de N restricciones posibles, entre las que solo
deben cumplir K de ellos (K<N). La lógica de optimización será elegir la combinación de K
restricciones que permita alcanzar el mejor objetivo. Este caso se considera:
f1(X1, X2, … Xn) <= d1
f2(X1, X2, … Xn) <= d2
…
fN(X1, X2, … Xn) <= dN
Entonces, se debe plantear una formulación equivalente, para que se deban cumplir K
restricciones:
f1(X1, X2, … Xn) <= d1 + M*Y1
f2(X1, X2, … Xn) <= d2 + M*Y2
N
…
෍ Yi = N − K
fN(X1, X2, … Xn) <= dN + M*YN
i=1
PRODUCCIÓN ALTERNATIVA
Una empresa ha diseñado tres nuevos productos y dispone de dos plantas que los pueden producir. Sin
embargo, para evitar una diversificación excesiva de la línea de productos de la empresa, la administración
ha dispuesto en primer lugar que deben producirse como máximo dos de estos tres nuevos productos
posibles. Y, en segundo lugar, que solo una de las plantas debe asignarse para la fabricación de los nuevos
productos.
Se considera que el costo unitario de fabricación de cada producto sería el mismo en las dos plantas, pero
por diferencia de instalaciones, el número de horas de producción por unidad de cada producto puede diferir
entre ellas. Estos datos se dan en la tabla adjunta junto con la información del departamento de
mercadotecnia del número de unidades de cada producto que se pueden vender a la semana si se producen.
El objetivo es seleccionar los productos, la planta y las tasas de producción de los nuevos productos de
manera que se maximice la ganancia total. Hay que considerar que las tasas de producción no pueden
adoptar valores decimales
Tiempo de producción utilizado por cada unidad producida (horas)
Producto 1
Producto 2
Producto 3
Planta 1
Planta 2
3
4
5
6
2
2
Ganancia unitaria
Ventas potenciales
5
7
7
5
3
9
Horas disponibles
por semana
30
40
(miles de $)
(unid/sem)
Datos, información y modelamiento
Índice
i: producto (1..3)
j: planta (1..2)
Sets:
PRODUCTO/1..3/:X, Y, GANANCIA, VENTA;
PLANTA /1..2/: W, CAPACIDAD;
PXP (PRODUCTO,PLANTA):TIEMPO;
End Sets
Variables de decisión
X(i) = Número de unidades de productos i a fabricar
Y(i) = 1 si se elaborar el producto i o 0 si no se elabora
W(j) = 1 NO se considera la planta j o 0 SI se considera
Datos estructurados:
Ganancia(i) = [5 7 3]
Ventas(i) = [7 5 9]
Capacidad(j) = [30 40]
Tiempo(i,j) = [3 4 5 6 2 2]
Data:
GANANCIA = 5 7 3;
VENTA = 7 5 9;
CAPACIDAD = 30 40;
TIEMPO = 3 4 5 6 2 2;
End Data
Datos, información y modelamiento
3
Max Z = ෍ Gananciai ∗ Xi
Max = @Sum(PRODUCTO: GANANCIA*X);
i=1
Sujeto a:
∀i: Xi ≤ Ventasi ∗ Yi
@For(PRODUCTO: X <= VENTA*Y);
3
@Sum(PRODUCTO: Y)<= 2;
෍ Yi ≤ 2
i=1
3
∀j: ෍ Tiempoij ∗ Xi ≤ Capacidadj + 10000 ∗ Wj
i=1
2
෍ Wj = 2 − 1
j=1
∀i: Xi ≥ 0, entero y Yi = 0 o 1;
∀j: Wj = 1 o 0
N= 2; K=1 → N-K = 2-1
@For(PLANTA(j):
@Sum(PRODUCTO(i):
TIEMPO(i,j)*X(i))<=CAPACIDAD(j)+10000*W(j));
@Sum(PLANTA: W)= 2-1;
@For(PRODUCTO: @Gin(X); @Bin(Y));
@For(PLANTA: @Bin(W));
Sets:
PRODUCTO/1..3/:X, Y, GANANCIA, VENTA;
PLANTA /1..2/: W, CAPACIDAD;
PXP (PRODUCTO,PLANTA):TIEMPO;
End Sets
Data:
GANANCIA = 5 7 3;
VENTA = 7 5 9;
CAPACIDAD = 30 40;
TIEMPO = 3 4 5 6 2 2;
End Data
Max = @Sum(PRODUCTO: GANANCIA*X);
@For(PRODUCTO: X <= VENTA*Y);
@Sum(PRODUCTO: Y)<= 2;
@For(PLANTA(j):@Sum(PRODUCTO(i):TIEMPO(i,j)*X(i))<=CAPACIDAD(j)+10000*W(j));
@Sum(PLANTA: W)= 2-1;
@For(PRODUCTO: @Gin(X); @Bin(Y));
@For(PLANTA: @Bin(W));
End
Variable
X( 1)
X( 2)
X( 3)
Y( 1)
Y( 2)
Y( 3)
GANANCIA( 1)
GANANCIA( 2)
GANANCIA( 3)
VENTA( 1)
VENTA( 2)
VENTA( 3)
CAPACIDAD( 1)
CAPACIDAD( 2)
W( 1)
W( 2)
TIEMPO( 1, 1)
TIEMPO( 1, 2)
TIEMPO( 2, 1)
TIEMPO( 2, 2)
TIEMPO( 3, 1)
TIEMPO( 3, 2)
Row
1
2
3
4
5
6
7
8
Value
6.000000
0.000000
8.000000
1.000000
0.000000
1.000000
5.000000
7.000000
3.000000
7.000000
5.000000
9.000000
30.00000
40.00000
1.000000
0.000000
3.000000
4.000000
5.000000
6.000000
2.000000
2.000000
Slack or Surplus
54.00000
1.000000
0.000000
1.000000
0.000000
9996.000
0.000000
0.000000
Reduced Cost
-5.000000
-7.000000
-3.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
Dual Price
1.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
MODEL:
[_1] MAX= 5 * X_1 + 7 * X_2 + 3 * X_3;
[_2] X_1 - 7 * Y_1 <= 0;
[_3] X_2 - 5 * Y_2 <= 0;
[_4] X_3 - 9 * Y_3 <= 0;
[_5] Y_1 + Y_2 + Y_3 <= 2;
[_6] - 10000 * W_1 + 3 * X_1 + 5 * X_2 + 2 * X_3 <= 30;
[_7] - 10000 * W_2 + 4 * X_1 + 6 * X_2 + 2 * X_3 <= 40;
[_8] W_1 + W_2 = 1;
@BIN( W_1); @BIN( W_2); @GIN( X_1); @BIN( Y_1); @GIN( X_2); @BIN( Y_2);
@GIN( X_3); @BIN( Y_3);
END
Reporte administrativo:
Producir 6 unidades del producto 1 y 8 unidades del producto 3 y
trabajar solo en la planta 2, obteniendo un beneficio de $ 54 mil.
PRODUCCIÓN SIDERURGICA
Una siderúrgica produce unas planchas de metal a partir de aleaciones, cada una de las
cuales tienen un porcentaje de agentes contaminantes A, B y C. Los porcentajes
máximos aceptables para cada contaminante es de 2.3% de A, 1.7% de B y 3.1 % de C.
El costo y las propiedades de cada aleación aparecen en la siguiente tabla:
Costo por tonelada(mil$)
% de A
% de B
% de C
Aleación 1
190
2.2%
1.8%
3.2%
Aleación 2
200
2.5%
1.5%
4.1%
Aleación 3
185
2.4%
1.9%
2.9%
Si fuese aceptable con que se cumplan con dos de las restricciones de los agentes
contaminantes, entonces, determinar cómo minimizar los costos para cinco toneladas
de producción. Formular el modelo matemático en lingo compacto y presentar el
reporte administrativo
Datos, información y modelamiento
Índice
i: aleación (1..3)
j: agente contaminante (1..3)
Variables de decisión
X(i) = Número tonelada de aleación i a producir
Y(j) = 1 aceptar el contaminante i o 0 no aceptar
Datos estructurados:
Costo(i) = [190 200 185]
Tolerancia(j) = [0.023 0.017 0.031]
Contaminante(i,j) = [0.022 0018 0.032 0.025
0.015 0.041 0.024 0.019 0.029]
Sets:
ALEACION/1..3/:X,COSTO;
AGENTE/1..3/: Y, TOLERANCIA;
AXA (ALEACION,AGENTE):CONTAMINANTE;
End Sets
Data:
COSTO = 190 200 185;
TOLERANCIA = 0.023 0.017 0.031;
CONTAMINANTE = 0.022 0018 0.032 0.025
0.015 0.041 0.024 0.019 0.029;
End Data
Datos, información y modelamiento
3
Min Z = ෍ Costoi ∗ Xi
Min = @Sum(ALEACION: COSTO*X);
i=1
Sujeto a:
3
∀j: ෍ Contaminanteij ∗ Xi ≤ Toleranciaj ∗ 5 + 10000 ∗ Yj
i=1
3
෍ Yj = 3 − 2
j=1
3
෍ Xi = 5
i=1
∀i: Xi ≥ 0
∀j: Yj = 0 o 1
N= 3; K=2 → N-K = 3-2
@For(AGENTE(j):
@Sum(ALEACION(i):
CONTAMINANTE(i,j)*X(i))<=TOLERANCIA(j)*5+10000*Y(j));
@Sum(AGENTE: Y)<= 3-2;
@Sum(ALEACION: X)= 5;
@For(AGENTE:@Bin(Y));
Sets:
ALEACION/1..3/:X,COSTO;
AGENTE/1..3/: Y, TOLERANCIA;
AXA (ALEACION,AGENTE):CONTAMINANTE;
End Sets
Data:
COSTO = 190 200 185;
TOLERANCIA = 0.023 0.017 0.031;
CONTAMINANTE = 0.022 0.018 0.032 0.025 0.015 0.041 0.024 0.019 0.029;
End Data
Min = @Sum(ALEACION: COSTO*X);
@For(AGENTE(j):@Sum(ALEACION(i):
CONTAMINANTE(i,j)*X(i))<=TOLERANCIA(j)*5+10000*Y(j));
@Sum(AGENTE: Y)<= 3-2;
@Sum(ALEACION: X)= 5;
@For(AGENTE:@Bin(Y));
End
Variable
X( 1)
X( 2)
X( 3)
COSTO( 1)
COSTO( 2)
COSTO( 3)
Y( 1)
Y( 2)
Y( 3)
TOLERANCIA( 1)
TOLERANCIA( 2)
TOLERANCIA( 3)
CONTAMINANTE( 1, 1)
CONTAMINANTE( 1, 2)
CONTAMINANTE( 1, 3)
CONTAMINANTE( 2, 1)
CONTAMINANTE( 2, 2)
CONTAMINANTE( 2, 3)
CONTAMINANTE( 3, 1)
CONTAMINANTE( 3, 2)
CONTAMINANTE( 3, 3)
Value
2.500000
0.000000
2.500000
190.0000
200.0000
185.0000
0.000000
1.000000
0.000000
0.2300000E-01
0.1700000E-01
0.3100000E-01
0.2200000E-01
0.1800000E-01
0.3200000E-01
0.2500000E-01
0.1500000E-01
0.4100000E-01
0.2400000E-01
0.1900000E-01
0.2900000E-01
Row
1
2
3
4
5
6
Slack or Surplus
937.5000
0.000000
9999.992
0.2500000E-02
0.000000
0.000000
Reduced Cost
0.000000
17.50000
0.000000
0.000000
0.000000
0.000000
-0.2500000E+08
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
Reporte administrativo:
Mezclar 2.5 toneladas de las aleación 1 y 3 con un costo mínimo
de $937.5 mil.
Dual Price
-1.000000
2500.000
0.000000
0.000000
0.000000
-245.0000
MODEL:
[_1] MIN= 190 * X_1 + 200 * X_2 + 185 * X_3;
[_2] - 10000 * Y_1 + 0.022 * X_1 + 0.025 * X_2 + 0.024 * X_3 <= 0.115;
[_3] - 10000 * Y_2 + 0.018 * X_1 + 0.015 * X_2 + 0.019 * X_3 <= 0.08500000000000001 ;
[_4] - 10000 * Y_3 + 0.032 * X_1 + 0.041 * X_2 + 0.029 * X_3 <= 0.155;
[_5] Y_1 + Y_2 + Y_3 = 1;
[_6] X_1 + X_2 + X_3 = 5;
@BIN( Y_1); @BIN( Y_2); @BIN( Y_3);
END
VARIABLES QUE TOMAN UN CONJUNTO DE VALORES
Existen situaciones en las que una variable Xj sólo puede tomar ciertos valores bien definidos: Xj
  a1, a2, … an. Este caso se puede trabajar con variables binarias:
1 si Xj = ai
Yij =
0 si Xj ≠ ai
Como Xj solo puede tomar un valor en el conjunto, entonces se tiene la siguiente restricción:
n
෍ Yij = 1
j
i=1
Además, Xj vendrá dado por:
n
Xj = ෍ ai ∗ Yij
i=1
FABRICACIÓN DE MUEBLES
Un microempresario ofrece al público 3 modelos novedosos de muebles, para elaborar cada uno de éstos
necesita de 3 tipos de material. Él se encuentra indeciso puesto que le visitaron representantes de 3
distribuidoras de insumos que ofrecen abastecerle de los materiales que necesita bajo los mismos costos,
aunque en cantidades limitadas puesto que tienen también otros clientes. De estos 3 proveedores debe
trabajar solamente con uno.
El microempresario quiere fabricar la misma cantidad de muebles para sus 3 modelos. El beneficio
obtenido por cada mueble de los modelos 1, 2 y 3 es de $750, $900 y $800 respectivamente. En la tabla
adjunta se muestra la cantidad de cada material que necesita por unidad de cada modelo de mueble, así
como la cantidad de cada material de la que cada proveedor dispone mensualmente.
Material 1
Material 2
Material 3
Material necesario (unidades)
Modelo 1
Modelo 2
Modelo 3
25
10
33
17
15
18
8
7
12
Disponibilidad de materiales (unidades)
Proveedor A Proveedor B Proveedor C
1200
1500
1750
950
1200
800
600
820
750
Según lo expuesto, sugiera un plan de producción una vez decidido con cuál de los proveedores es con
quien trabajará.
Datos, información y modelamiento
Índice
i: muebles (1..3)
[Modelo 1 Modelo 2 Modelo 3]
j: proveedores (1..3) [A B C]
k: material (1..3) [MP1 MP2 MP3]
Variables de decisión
X(i) = Cantidad de productos i a producir
Y(j) = 1 seleccionar proveedor j o 0 no seleccionar
Datos estructurados:
Ganancia(i) = [750 900 800]
Material-nece(ik) = [25 17 8 10 15 7 33 18 12]
Materuial-dispo(jk) = [1200 1500 1750 950 1200
800 600 820 750]
SETS:
MUEBLES/1..3/:GANANCIA,X;
PROVEEDORES/1..3/:Y;
MATERIAL/A B C/:;
MXM(MUEBLES,MATERIAL):MATERIAL_NECE;
PXM(PROVEEDORES,MATERIAL):MATERIAL_DISPO;
ENDSETS
DATA:
GANANCIA=750 900 800;
MATERIAL_NECE= 25 17 8 10 15 7 33 18 12;
MATERIAL_DISPO=1200 950 600 1500 1200 820
1750 800 750;
ENDATA:
3
Max Z = ෍ Gananciai ∗ Xi
MAX=@SUM(MUEBLES(I):GANANCIA(I)*X(I));
i=1
Sujeto a:
3
3
∀k: ෍ Material_neceik ∗ Xi ≤ ෍ Material_dispojk ∗ Yj
i=1
3
෍ Yj = 1
j=1
X1=X2=X3
∀i: Xi ≥ 0, entero
∀j: Yj = 0 o 1
j=1
@FOR(MATERIAL(K):
@SUM(MUEBLES(I):MATERIAL_NECE(I,K)*X(I))<=
@SUM(PROVEEDORES(J):MATERIAL_DISPO(J,K)*Y(J)));
@SUM(PROVEEDORES(J):Y(J))=1;
X(1)=X(2); X(1)=X(3);
@FOR(MUEBLES(I):@GIN(X(I)));
@FOR(PROVEEDORES(J):@BIN(Y(J)));
End
SETS:
MUEBLES/1..3/:GANANCIA,X;
PROVEEDORES/1..3/:Y;
MATERIAL/A B C/:;
MXM(MUEBLES,MATERIAL):MATERIAL_NECE;
PXM(PROVEEDORES,MATERIAL):MATERIAL_DISPO;
ENDSETS
DATA:
GANANCIA=750 900 800;
MATERIAL_NECE= 25 17 8 10 15 7 33 18 12;
MATERIAL_DISPO=1200 950 600 1500 1200 820 1750 800 750;
ENDDATA
MAX=@SUM(MUEBLES(I):GANANCIA(I)*X(I));
@FOR(MATERIAL(K):
@SUM(MUEBLES(I):MATERIAL_NECE(I,K)*X(I))<=@SUM(PROVEEDORES(J):MATERIAL_DISPO
(J,K)*Y(J)));
@SUM(PROVEEDORES(J):Y(J))=1;
X(1)=X(2); X(1)=X(3);
@FOR(MUEBLES(I):@GIN(X(I))); @FOR(PROVEEDORES(J):@BIN(Y(J)));
End
Variable
GANANCIA( 1)
GANANCIA( 2)
GANANCIA( 3)
X( 1)
X( 2)
X( 3)
Y( 1)
Y( 2)
Y( 3)
MATERIAL_NECE( 1, A)
MATERIAL_NECE( 1, B)
MATERIAL_NECE( 1, C)
MATERIAL_NECE( 2, A)
MATERIAL_NECE( 2, B)
MATERIAL_NECE( 2, C)
MATERIAL_NECE( 3, A)
MATERIAL_NECE( 3, B)
MATERIAL_NECE( 3, C)
MATERIAL_DISPO( 1, A)
MATERIAL_DISPO( 1, B)
MATERIAL_DISPO( 1, C)
MATERIAL_DISPO( 2, A)
MATERIAL_DISPO( 2, B)
MATERIAL_DISPO( 2, C)
MATERIAL_DISPO( 3, A)
MATERIAL_DISPO( 3, B)
MATERIAL_DISPO( 3, C)
Value
750.0000
900.0000
800.0000
22.00000
22.00000
22.00000
0.000000
1.000000
0.000000
25.00000
17.00000
8.000000
10.00000
15.00000
7.000000
33.00000
18.00000
12.00000
1200.000
950.0000
600.0000
1500.000
1200.000
820.0000
1750.000
800.0000
750.0000
Reduced Cost
0.000000
0.000000
0.000000
-750.0000
-900.0000
-800.0000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
Row
1
2
3
4
5
6
7
Slack or Surplus
53900.00
4.000000
100.0000
226.0000
0.000000
0.000000
0.000000
Dual Price
1.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
Reporte administrativo:
Producir 22 unidades de cada producto y trabajar
con el proveedor B, obteniendo un beneficio de
$53.9 mil.
MODEL:
[_1] MAX= 750 * X_1 + 900 * X_2 + 800 * X_3;
[_2] - 1200 * Y_1 - 1500 * Y_2 - 1750 * Y_3 + 25 * X_1 + 10 * X_2
[_3] - 950 * Y_1 - 1200 * Y_2 - 800 * Y_3 + 17 * X_1 + 15 * X_2 +
[_4] - 600 * Y_1 - 820 * Y_2 - 750 * Y_3 + 8 * X_1 + 7 * X_2 + 12
[_5] Y_1 + Y_2 + Y_3 = 1;
[_6] X_1 - X_2 = 0;
[_7] X_1 - X_3 = 0;
@BIN( Y_1); @BIN( Y_2); @BIN( Y_3); @GIN( X_1); @GIN( X_2); @GIN(
END
+ 33 * X_3 <= 0;
18 * X_3 <= 0;
* X_3 <= 0;
X_3);
EJERCICIOS DIVERSOS [revisar y completar]
TRANSPORTE DE PLANTAS A ALMACÉN
Una empresa desea programar el transporte de su producto principal que se elabora en 4 plantas con destino a
3 almacenes. Se conoce la demanda de los almacenes, la capacidad de producción de las plantas y el costo de
transporte por unidad de transporte de una planta a un almacén.
Plantas
1
2
3
4
Demanda (unidades)
Almacenes ($ / Unid)
1
2
3
3
2
4
2
4
3
3
5
3
4
3
2
1200
900
500
Capacidad
(unidades)
950
1150
1000
900
Se estima un costo fijo de operación para cada planta.
Planta
Costo fijo de operación ($)
1
600
2
900
3
200
4
800
Asimismo, se debe tener en cuenta que si trabaja la planta 1, no debe trabajar la planta 2; y si trabaja la planta
3, entonces debe trabajar la planta 4.
Formule el modelo de programación entera-binaria que permita determinar desde que plantas realizar los
envíos, así como el número de unidades a enviar desde cada una de las plantas seleccionadas hacia cada uno
de los almacenes y presente el reporte administrativo.
SETS:
PLANTA/1..4/: CAPACIDAD, COSTOFIJO, Y;
ALMACEN/1..3/: DEMANDA;
RUTA (PLANTA, ALMACEN): COSTO, X;
CONDICION (PLANTA)/1,2/:;
SEGCONDICION(PLANTA)/3,4/: NUM;
ENDSETS
DATA:
CAPACIDAD = 950 1150 1000 900;
DEMANDA = 1200 900 500;
COSTO = 3 2 4 2 4 3 3 5 3 4 3 2;
COSTOFIJO = 600 900 200 800;
NUM = -1 1;
ENDDATA
MIN = @SUM(RUTA(I,J):COSTO(I,J)*X(I,J))+@SUM(PLANTA(I):COSTOFIJO(I)*Y(I));
@FOR(PLANTA(I):@SUM(ALMACEN(J): X(I,J))<= CAPACIDAD(I)*Y(I));
@FOR(ALMACEN(J):@SUM(PLANTA(I): X(I,J))>= DEMANDA(J));
@SUM(CONDICION(I):Y(I))<=1;
@SUM(SEGCONDICION(I):Y(I)*NUM(I)<=1;
@FOR(PLANTA(I):@BIN(Y(I)));
END
PRODUCTORA DE ALIMENTOS
Una compañía productora de alimentos está considerando la construcción de cinco nuevas
fábricas durante los próximos 4 años en terrenos de su propiedad. La compañía podría
empezar y terminar la construcción de cualquiera de las plantas en cualquiera de los años,
pero los costos de construcción que supondría esto, variarían de acuerdo con la siguiente
tabla:
Años de construcción
Fábrica
A
B
C
D
E
1
100
150
125
175
140
2
125
125
110
200
105
3
110
175
100
220
155
4
130
140
170
250
135
La compañía está restringida en su plan de construcción por las siguientes condiciones:
• Las fábricas A y B no pueden ser construidas después de la fábrica C
• La compañía no puede gastar más de 500 unidades monetarias en total
• Las fábricas D y E deben ser construidas durante el mismo año
SETS:
CONSTRUCION/1,2,3,4,5/: Y;
FABRICA/1,2,3,4,5/: GASTO;
PERIODO/1,2,3,4/;
PAREJA(FABRICA, PERIODO): COSTO, X;
ENDSETS
DATA:
COSTO=100,125,110,130 150,125,175,140,125,110,100,170,175,200,220,250
140,105,155,135;
GASTO=500,500,500,500,500;
ENDDATA
MIN=@SUM(PAREJA(I,J): COSTO(I,J)*X(I,J));
@FOR(FABRICA(I): @SUM(PAREJA(I,J): COSTO(I,J)*X(I,J))<=GASTO(I));
@SUM(PAREJA(I,J): X(I,J))= 5;
Y(4)-Y(5)<=0;
Y(1)-Y(2)<=Y(3);
@FOR(PAREJA: @BIN(X));
@FOR(CONSTRUCION: @BIN(Y));
END
DISTRIBUCIÓN DE BEBIDAS
Un empresario se dedica a la venta de cerveza y tiene a su disposición 3 depósitos
para alquilar y poder almacenar su producto. Los almacenes están situados en
Trujillo, Arequipa y Chiclayo. El producto se vende en La Libertad, Arequipa y
Lambayeque.
Costo por camión
La Libertad
Arequipa
Lambayeque
Capacidad mensual
(camiones)
Trujillo
35
180
72
180
Arequipa
195
30
200
240
Chiclayo
65
240
45
250
Demanda mensual (camiones)
110
90
70
Almacenes
Se sabe que utilizar un almacén implica pagar un costo de alquiler mensual por ese
derecho. Si es almacén de Trujillo cuesta 1000 soles, el de Arequipa 800 y el de
Chiclayo 650. Formule un modelo matemático de programación lineal entera que
permita determinar cuantos camiones a los puntos de venta
SETS:
ALMACEN/1..3/:CAPACIDADMENSUAL,CF,Y;
TIENDA/1..3/:DEMANDA;
PAREJA1(ALMACEN,TIENDA):COSTO,X;
ENDSETS
DATA:
CAPACIDADMENSUAL=180 240 250;
CF=1000,800,650;
DEMANDA= 110 90 70;
COSTO= 35 180 72 195 30 200 65 240 45;
ENDDATA
!FUNCION OBJETIVA;
MIN=@SUM(PAREJA1(i,j):COSTO(i,j)*X(i,j))+@SUM(ALMACEN(i):CF(i)*Y(i));
!RESRICCIONES;
@FOR(ALMACEN(i):@SUM(TIENDA(j):X(i,j))<=CAPACIDADMENSUAL(i)*Y(i));
@FOR(TIENDA(j):@SUM(ALMACEN(i):X(i,j))>=DEMANDA(j));
@FOR(ALMACEN(i):@BIN(Y(i)));
END
APERTURA DE NUEVAS BODEGAS
Una compañía planea abrir unas bodegas en cuatro ciudades: Nueva York, Los Ángeles, Chicago, Atlanta.
Desde cada bodega se puede embarcar hasta 100 unidades. El costo fijo por semana para mantener en
operación cada bodega es de 400, 500, 300 y 150 dólares respectivamente. La región 1 del país requiere
80 unidades por semana, la región 2 demanda 70 unidades por semana y la región 3 necesita 40 unidades
por semana. Los costos por enviar una unidad desde la planta hasta la región están en la tabla siguiente. Se
desea cumplir con las demandas al costo mínimo, sujeto a la información precedente y al as restricciones
siguientes:
1) Si se abre la bodega de Nueva York, entonces se debe abrir la bodega de Los Ángeles.
2) Es posible abrir a lo más dos bodegas.
3) Se tiene que abrir la bodega de Atlanta o la de Los Ángeles.
Desde
Nueva York
Los Ángeles
Chicago
Atlanta
Región 1
20
48
26
24
Hasta (dólares)
Región 2
40
15
35
50
Región 3
50
26
18
35
SETS:
CIUDAD/C1,C2,C3,C4/:CAPACIDAD;
REGION/1,2,3/:DEMANDA;
RUTA(CIUDAD,REGION):COSTO,X;
CF/1/:COSTO_ELEGIR;
CIUDAD_ELEGIR/Y1,Y2,Y3,Y4/:ASIGNAR;
BINARIA(CF,CIUDAD_ELEGIR):COSTO_FIJO,T;
ENDSETS
DATA:
CAPACIDAD=100,100,100,100;
DEMANDA=80,70,40;
COSTO=20,40,50,48,15,26,26,35,18,24,50,35;
COSTO_FIJO=400,500,300,150;
ENDDATA
!FUNCION OBJETIVO;
Min= @SUM(RUTA(i,j):COSTO(i,j)*X(i,j))+@SUM(BINARIA(i,j):COSTO_FIJO(m,n)*T(m,n));
!RESTRICCION DE DEMANDA;
@FOR(REGION(j):@SUM(CIUDAD(i):X(i,j))>=DEMANDA(j));
!RESTRICCION DE CAPACIDAD; @FOR(CIUDAD(i):@SUM(REGION(j):X(i,j))<=CAPACIDAD(i))*ASIGNAR(n));
!RESTRICCION BINARIA;
@FOR(BINARIA:@BIN(T));
@FOR(CIUDAD_ELEGIR(n):ASIGNAR(n)+ASIGNAR(n+1)=2);
@FOR(CIUDAD_ELEGIR(n):
ASIGNAR(n)+ASIGNAR(n+1)+ASIGNAR(n+2)+ASIGNAR(n+3)<=2);
@FOR(CIUDAD_ELEGIR(n):ASIGNAR(n+1)+ASIGNAR(n+3)=1);
END
PREPARACIÓN DE COMPUTADORAS PARA EL GOBIERNO
La compañía SOFT se especializa en la preparación de programas de computadora para el gobierno y la industria. Estos
programas se escriben en varios lenguajes de programación. La compañía tiene tres programadores que realizan esta
labor y existen cinco trabajos de programación que deben terminarse lo máximo pronto posible. No todos los
programadores trabajan a la misma velocidad en todos los lenguajes y se les paga en forma diferente con base a su
experiencia. Cada uno de los trabajos debe elaborarlo un solo programador. Los costos de realización de cada trabajado
por programador se muestran en la tabla:
Programador
Cesar
Luis
Raúl
Trabajo1
100
80
200
Costos de realización de los trabajos (UM)
Trabajo2
Trabajo3
Trabajo 4
150
200
100
200
100
100
250
250
150
Trabajo5
50
80
100
Considere la siguiente información del tiempo para cada programador para terminar cada trabajo y su tiempo disponible
Tiempo de realización de los trabajos(horas)
Disponibilidad
Programador
Trabajo1
Trabajo2
Trabajo3
Trabajo4
Trabajo5
(horas)
Cesar
10
15
20
10
5
35
Luis
4
10
5
5
4
20
Raúl
20
25
25
15
10
40
Plantee un problema de PE adecuado a esta situación
Muchas gracias
Descargar