Está en la página 1de 46

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
3
y completar]
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)

Movistar 16 0.25

Operadores
Claro 25 0.21 200 minutos → (tiempos)
de telefonía

Entel 18 0.22

Yi Xi

Variables Binarias: Variables Continuas


Y1 = Seleccionar a Movistar → X1 = Minutos a contratar en Movistar
Y2 = Seleccionar a Claro → X2 = Minutos a contratar en Claro
Y3 = Seleccionar a Entel → 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 DATA:


CUOTAFIJA= 16 23 24;
Cuotafijai = [16 23 24]
COSTOMINUTO= 0.25 0.21 0.22;
Costominutoi = [0.25 0.21 0.22] ENDDATA
3

Min Z = ෍ Cuotafijai ∗ Yi + Costominutoi ∗ Xi MIN=@SUM(OPERADOR:CUOTAFIJA*Y+COSTOMINUTO*X);


i=1
Sujeto a
∀i: Xi ≤ 200 ∗ Yi @FOR(OPERADOR:X<=200*Y);
3

෍ Xi = 200 @SUM(OPERADOR:X)=200;
i=1
∀i: Xi ≥ 0 y Yi = 𝟏 𝐨 𝟎 @FOR(OPERADOR:@BIN(Y));
SETS:
Variable Value Reduced Cost
OPERADOR/1..3/:X,Y,CUOTAFIJA,COSTOMINUTO; X( 1) 0.000000 0.4000000E-01
ENDSETS X( 2)
X( 3)
200.0000
0.000000
0.000000
0.1000000E-01
DATA: Y( 1) 0.000000 16.00000
Y( 2) 1.000000 23.00000
CUOTAFIJA= 16 23 24; Y( 3) 0.000000 24.00000
CUOTAFIJA( 1) 16.00000 0.000000
COSTOMINUTO= 0.25 0.21 0.22; CUOTAFIJA( 2) 23.00000 0.000000
CUOTAFIJA( 3) 24.00000 0.000000
ENDDATA COSTOMINUTO( 1) 0.2500000 0.000000
MIN=@SUM(OPERADOR:CUOTAFIJA*Y+COSTOMINUTO*X); COSTOMINUTO( 2)
COSTOMINUTO( 3)
0.2100000
0.2200000
0.000000
0.000000
@FOR(OPERADOR:X<=200*Y);
Row Slack or Surplus Dual Price
@SUM(OPERADOR:X)=200; 1 65.00000 -1.000000
2 0.000000 0.000000
@FOR(OPERADOR:@BIN(Y)); 3 0.000000 0.000000
4 0.000000 0.000000
END 5 0.000000 -0.2100000

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);
Reporte administrativo
END

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 ($) Capacidad mensual Costo de
Almacén 1 2 3 4 (camiones) alquiler ($)
A 170 90 120 160 200 7750
B 150 165 100 140 250 4000
C 150 240 140 120 300 5500
Demanda 100 90 110 60
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

150
200 A 90
CostoAlquiler = $7750 120
160 165
2 90

CAPACIDAD DEMANDA
(camiones) 250 B (camiones)|
CostoAlquiler = $4000 100
CONTRATAR 150 240
3 110
SOLO UN
MÁXIMO DE DOS 350 C 140 140
ALMACENES CostoAlquiler = $5500
60
4 60

costo de envío
($/camión)
Datos, información y modelamiento
Sets:
i: almacén (1..3) i= 1 (A) , i= 2 (B); i=3 (C) ALMACEN/A B C/:CAPACIDAD, ALQUILER, Y;
j: distrito (1..4) j= 1 (distrito 1) , j= 2 (distrito 2), DISTRITO/1..4/:DEMANDA;
CAMIONES(ALMACEN,DISTRITO): COSTO, X;
j= 3 (distrito 3) , j= 4 (distrito 4)
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]
Data:
Capacidadi = 200 250 300 CAPACIDAD = 200 250 300;
ALQUILER = 7750 4000 5500;
Alquileri = 7750 4000 5500
DEMANDA = 100 90 110 60;
Demandaj = 100 90 110 60 COSTO = 170 90 120 160 150 165 100 140
Costoij 150 240 140 120;
= 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
Min = @Sum(CAMIONES(i,j):COSTO(i,j)*X(i,j))+
Sujeto a: @Sum(ALMACEN(i):ALQUILER(i)*Y(i));
3

∀j: ෍ Xij ≥ Demandaj @For(DISTRITO(j):


i=1 @Sum(ALMACEN(i):X(i,j))>= DEMANDA(j));
4

∀i: ෍ Xij ≤ Capacidadi ∗ Yi @For(ALMACEN(i):


@Sum(DISTRITO(j):X(i,j))<= CAPACIDAD(i)*Y(i));
j=1
3
@Sum(ALMACEN(i): Y(i))<= 2;
෍ Yi ≤ 2
i=1

Xij ≥ 0, entero ∀ i, ∀j; @For(CAMIONES(i,j):@Gin(X(i,j)));


Yi = 0 o 1 ∀ i @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 Value Reduced Cost Row Slack or Surplus Dual Price
CAPACIDAD( A) 200.0000 0.000000 1 54650.00 -1.000000
CAPACIDAD( B) 250.0000 0.000000 2 0.000000 0.000000
CAPACIDAD( C) 300.0000 0.000000 3 0.000000 0.000000
ALQUILER( A) 7750.000 0.000000 4 0.000000 0.000000
ALQUILER( B) 4000.000 0.000000 5 0.000000 0.000000
ALQUILER( C) 5500.000 0.000000 6 90.00000 0.000000
Y( A) 1.000000 7750.000 7 0.000000 0.000000
Y( B) 1.000000 4000.000 8 0.000000 0.000000
Y( C) 0.000000 5500.000 9 0.000000 0.000000
DEMANDA( 1) 100.0000 0.000000
DEMANDA( 2) 90.00000 0.000000 MODEL:
DEMANDA( 3) 110.0000 0.000000 [_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 +
DEMANDA( 4) 60.00000 0.000000 100 * X_B_3 + 140 * X_B_4 + 150 * X_C_1 + 240 * X_C_2 + 140 * X_C_3 + 120 * X_C_4 +
X( A, 1) 0.000000 170.0000 7750 * Y_A + 4000 * Y_B + 5500 * Y_C;
X( A, 2) 90.00000 90.00000 [_2] X_A_1 + X_B_1 + X_C_1 >= 100;
X( A, 3) 0.000000 120.0000 [_3] X_A_2 + X_B_2 + X_C_2 >= 90;
X( A, 4) 20.00000 160.0000 [_4] X_A_3 + X_B_3 + X_C_3 >= 110;
X( B, 1) 100.0000 150.0000 [_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;
X( B, 2) 0.000000 165.0000
[_7] X_B_1 + X_B_2 + X_B_3 + X_B_4 - 250 * Y_B <= 0;
X( B, 3) 110.0000 100.0000 [_8] X_C_1 + X_C_2 + X_C_3 + X_C_4 - 300 * Y_C <= 0;
X( B, 4) 40.00000 140.0000 [_9] Y_A + Y_B + Y_C <= 2;
X( C, 1) 0.000000 150.0000 @GIN( X_A_1); @GIN( X_A_2); @GIN( X_A_3); @GIN( X_A_4); @GIN( X_B_1);
X( C, 2) 0.000000 240.0000 @GIN( X_B_2); @GIN( X_B_3); @GIN( X_B_4); @GIN( X_C_1); @GIN( X_C_2);
X( C, 3) 0.000000 140.0000 @GIN( X_C_3); @GIN( X_C_4); @BIN( Y_A); @BIN( Y_B); @BIN( Y_C);
X( C, 4) 0.000000 120.0000 END
COSTO( A, 1) 170.0000 0.000000
COSTO( A, 2) 90.00000 0.000000
COSTO( A, 3) 120.0000 0.000000
COSTO( A, 4) 160.0000 0.000000 Reporte administrativo:
COSTO( B, 1) 150.0000 0.000000 Alquilar solamente los almacenes A y B y desde el almacén A, atender la demanda de los
COSTO( B, 2) 165.0000 0.000000
COSTO( B, 3) 100.0000 0.000000 distritos 2 y 4 con 90 y 20 camiones, respectivamente y desde el almacén B, atender la
COSTO( B, 4) 140.0000 0.000000 demanda de los distritos 1, 3 y 4, con 100, 110 y 40 camiones, respectivamente. El mínimo
COSTO( C, 1) 150.0000 0.000000 costo de distribución y alquiler de los dos almacenes con las que se trabajará, asciende a
COSTO( C, 2) 240.0000 0.000000
COSTO( C, 3) 140.0000 0.000000
$54,650.
COSTO( C, 4) 120.0000 0.000000
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
Índice
CARSA planea producir al menos 2000 i: máquina (1..3)
artefactos con tres máquinas. El tamaño Variables de decisión
mínimo del lote es de 500 artefactos. La X(i) = Número de artefactos a producir en la máquina i
siguientes tabla ofrece los datos pertinentes Y(i) = 1 si la máquina i produce artículos o 0 no produce
Datos estructurados:
de la situación. CostoPrepara(i) = [300, 100, 200]
CostoProduce(i) = [2, 10, 5]
Costo de Costo de Capacidad(i) = [600, 800, 1200]
Máquina Capacidad
preparación producción 3 3
(unidades)
($) unitario ($)
Min Z = ෍ CostoPreparai ∗ Yi + ෍ CostoProducei ∗ Xi
1 300 2 600
i=1 i=1
2 100 10 800
Sujeto a:
3 200 5 1200
∀i: Xi ≤ Capacidadi ∗ Yi
∀i: Xi ≥ 500 ∗ Yi
Formule el problema como un programa 3
entero binario en lingo compacto y
෍ Xi ≥ 2000
determine la solución y el valor óptimo y
i=1
presente el reporte administrativo. ∀i: Xi ≥ 0, entero; ∀i: Yi = 0 o 1
Datos, información y modelamiento
Índice Sets:
i: máquina (1..3) MAQUINA/1..3/:X, Y, COSTOPREPARA,
Variables de decisión COSTOPRODUCE, CAPACIDAD;
X(i) = Número de artefactos a producir en la máquina i End Sets
Y(i) = 1 si la máquina i produce artículos o 0 no produce
Datos estructurados: Data:
CostoPrepara(i) = [300 100 200] COSTOPREPARA = 300 100 200;
CostoProduce(i) = [2 10 5] COSTOPRODUCE = 2 10 5;
Capacidad(i) = [600 800 1200] CAPACIDAD = 600 800 1200;
3 3 End Data
Min Z = ෍ CostoPreparai ∗ Yi + ෍ CostoProducei ∗ Xi
Min = @Sum(MAQUINA:
i=1 i=1
COSTOPREPARA*Y+COSTOPRODUCE*X);
Sujeto a:
∀i: Xi ≤ Capacidadi ∗ Yi @For(MAQUINA: X <= CAPACIDAD*Y);
∀i: Xi ≥ 500 ∗ Yi @For(MAQUINA: X >= 500*Y);
3

෍ Xi ≥ 2000 @Sum(MAQUINA: X)>= 2000;


i=1
∀i: Xi ≥ 0, entero; ∀i: Yi = 0 o 1 @For(MAQUINA: @Gin(X); @Bin(Y));
Sets: Variable Value Reduced Cost
MAQUINA/1..3/:X,Y,COSTOPREPARA,COSTOPRODUCE,CAPACIDAD; X( 1) 600.0000 2.000000
X( 2) 500.0000 10.00000
End Sets X( 3) 900.0000 5.000000
Data: Y( 1)
Y( 2)
1.000000
1.000000
300.0000
100.0000
COSTOPREPARA = 300 100 200; Y( 3) 1.000000 200.0000
COSTOPREPARA( 1) 300.0000 0.000000
COSTOPRODUCE = 2 10 5; COSTOPREPARA( 2) 100.0000 0.000000
CAPACIDAD = 600 800 1200; COSTOPREPARA( 3) 200.0000 0.000000
COSTOPRODUCE( 1) 2.000000 0.000000
End Data COSTOPRODUCE( 2) 10.00000 0.000000
Min = @Sum(MAQUINA: COSTOPREPARA*Y + COSTOPRODUCE*X); COSTOPRODUCE( 3)
CAPACIDAD( 1)
5.000000
600.0000
0.000000
0.000000
@For(MAQUINA: X <= CAPACIDAD*Y); CAPACIDAD( 2) 800.0000 0.000000
CAPACIDAD( 3) 1200.000 0.000000
@For(MAQUINA: X >= 500*Y);
@Sum(MAQUINA: X)>= 2000; Row Slack or Surplus Dual Price
1 11300.00 -1.000000
@For(MAQUINA: @Gin(X); @Bin(Y)); 2 0.000000 0.000000
End 3
4
300.0000
300.0000
0.000000
0.000000
5 100.0000 0.000000
MODEL: 6 0.000000 0.000000
[_1] MIN= 2 * X_1 + 300 * Y_1 + 10 * X_2 + 100 * Y_2 + 5 * X_3 + 200 * Y_3; 7 400.0000 0.000000
[_2] X_1 - 600 * Y_1 <= 0; 8 0.000000 0.000000
[_3] X_2 - 800 * Y_2 <= 0;
[_4] X_3 - 1200 * Y_3 <= 0;
[_5] X_1 - 500 * Y_1 >= 0;
Reporte administrativo:
[_6] X_2 - 500 * Y_2 >= 0;
[_7] X_3 - 500 * Y_3 >= 0;
[_8] X_1 + X_2 + X_3 >= 2000; Trabajar con las 3 máquinas y producir 600 unidades en la máquina 1,
@GIN( X_1); @BIN( Y_1); @GIN( X_2); @BIN( Y_2); @GIN( X_3); @BIN( Y_3); 500 unidades en la máquina 2 y 900 unidades en la máquina 3, con un
END
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

fN(X1, X2, … Xn) <= dN + M*YN ෍ Yi = N − K
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) Horas disponibles
Producto 1 Producto 2 Producto 3 por semana
Planta 1 3 5 2 30
Planta 2 4 6 2 40
Ganancia unitaria 5 7 3 (miles de $)
Ventas potenciales 7 5 9 (unid/sem)
Datos, información y modelamiento

Índice Sets:
i: producto (1..3) PRODUCTO/1..3/:X, Y, GANANCIA, VENTA;
j: planta (1..2) PLANTA /1..2/: W, CAPACIDAD;
PXP (PRODUCTO,PLANTA):TIEMPO;
Variables de decisión End Sets
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: Data:


Ganancia(i) = [5 7 3] GANANCIA = 5 7 3;
Ventas(i) = [7 5 9] VENTA = 7 5 9;
Capacidad(j) = [30 40] CAPACIDAD = 30 40;
Tiempo(i,j) = [3 4 5 6 2 2] 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

෍ Yi ≤ 2 @Sum(PRODUCTO: Y)<= 2;
i=1
3

∀j: ෍ Tiempoij ∗ Xi ≤ Capacidadj + 10000 ∗ Wj


i=1
2 @For(PLANTA(j):
෍ Wj = 2 − 1 @Sum(PRODUCTO(i):
j=1
TIEMPO(i,j)*X(i))<=CAPACIDAD(j)+10000*W(j));
∀i: Xi ≥ 0, entero y Yi = 0 o 1; @Sum(PLANTA: W)= 2-1;
@For(PRODUCTO: @Gin(X); @Bin(Y));
∀j: Wj = 1 o 0
N= 2; K=1 → N-K = 2-1 @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 Value Reduced Cost MODEL:
X( 1) 6.000000 -5.000000 [_1] MAX= 5 * X_1 + 7 * X_2 + 3 * X_3;
X( 2) 0.000000 -7.000000 [_2] X_1 - 7 * Y_1 <= 0;
X( 3) 8.000000 -3.000000 [_3] X_2 - 5 * Y_2 <= 0;
Y( 1) 1.000000 0.000000 [_4] X_3 - 9 * Y_3 <= 0;
Y( 2) 0.000000 0.000000 [_5] Y_1 + Y_2 + Y_3 <= 2;
Y( 3) 1.000000 0.000000 [_6] - 10000 * W_1 + 3 * X_1 + 5 * X_2 + 2 * X_3 <= 30;
GANANCIA( 1) 5.000000 0.000000 [_7] - 10000 * W_2 + 4 * X_1 + 6 * X_2 + 2 * X_3 <= 40;
GANANCIA( 2) 7.000000 0.000000 [_8] W_1 + W_2 = 1;
GANANCIA( 3) 3.000000 0.000000 @BIN( W_1); @BIN( W_2); @GIN( X_1); @BIN( Y_1); @GIN( X_2); @BIN( Y_2);
VENTA( 1) 7.000000 0.000000 @GIN( X_3); @BIN( Y_3);
VENTA( 2) 5.000000 0.000000 END
VENTA( 3) 9.000000 0.000000
CAPACIDAD( 1) 30.00000 0.000000
CAPACIDAD( 2) 40.00000 0.000000
W( 1) 1.000000 0.000000
W( 2) 0.000000 0.000000 Reporte administrativo:
TIEMPO( 1, 1) 3.000000 0.000000
TIEMPO( 1, 2) 4.000000 0.000000
TIEMPO( 2, 1) 5.000000 0.000000 Producir 6 unidades del producto 1 y 8 unidades del producto 3 y
TIEMPO( 2, 2) 6.000000 0.000000
TIEMPO( 3, 1) 2.000000 0.000000 trabajar solo en la planta 2, obteniendo un beneficio de $ 54 mil.
TIEMPO( 3, 2) 2.000000 0.000000

Row Slack or Surplus Dual Price


1 54.00000 1.000000
2 1.000000 0.000000
3 0.000000 0.000000
4 1.000000 0.000000
5 0.000000 0.000000
6 9996.000 0.000000
7 0.000000 0.000000
8 0.000000 0.000000
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:
Aleación 1 Aleación 2 Aleación 3
Costo por tonelada(mil$) 190 200 185
% de A 2.2% 2.5% 2.4%
% de B 1.8% 1.5% 1.9%
% de C 3.2% 4.1% 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 Sets:
i: aleación (1..3) ALEACION/1..3/:X,COSTO;
j: agente contaminante (1..3) AGENTE/1..3/: Y, TOLERANCIA;
AXA (ALEACION,AGENTE):CONTAMINANTE;
Variables de decisión End Sets
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] Data:
Tolerancia(j) = [0.023 0.017 0.031] COSTO = 190 200 185;
Contaminante(i,j) = [0.022 0018 0.032 0.025 TOLERANCIA = 0.023 0.017 0.031;
0.015 0.041 0.024 0.019 0.029] 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 @For(AGENTE(j):
෍ Yj = 3 − 2 @Sum(ALEACION(i):
j=1 CONTAMINANTE(i,j)*X(i))<=TOLERANCIA(j)*5+10000*Y(j));
3 @Sum(AGENTE: Y)<= 3-2;
෍ Xi = 5
i=1
@Sum(ALEACION: X)= 5;

∀i: Xi ≥ 0
∀j: Yj = 0 o 1 @For(AGENTE:@Bin(Y));

N= 3; K=2 → N-K = 3-2


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 Value Reduced Cost
X( 1) 2.500000 0.000000
X( 2) 0.000000 17.50000
X( 3) 2.500000 0.000000
COSTO( 1) 190.0000 0.000000
COSTO( 2) 200.0000 0.000000
COSTO( 3) 185.0000 0.000000
Y( 1) 0.000000 -0.2500000E+08
Y( 2) 1.000000 0.000000
Y( 3) 0.000000 0.000000
TOLERANCIA( 1) 0.2300000E-01 0.000000
TOLERANCIA( 2) 0.1700000E-01 0.000000
TOLERANCIA( 3) 0.3100000E-01 0.000000
CONTAMINANTE( 1, 1) 0.2200000E-01 0.000000 Reporte administrativo:
CONTAMINANTE( 1, 2) 0.1800000E-01 0.000000
CONTAMINANTE( 1, 3) 0.3200000E-01 0.000000
CONTAMINANTE( 2, 1) 0.2500000E-01 0.000000
CONTAMINANTE( 2, 2) 0.1500000E-01 0.000000
Mezclar 2.5 toneladas de las aleación 1 y 3 con un costo mínimo
CONTAMINANTE( 2, 3) 0.4100000E-01 0.000000 de $937.5 mil.
CONTAMINANTE( 3, 1) 0.2400000E-01 0.000000
CONTAMINANTE( 3, 2) 0.1900000E-01 0.000000
CONTAMINANTE( 3, 3) 0.2900000E-01 0.000000

Row Slack or Surplus Dual Price


1 937.5000 -1.000000
2 0.000000 2500.000
3 9999.992 0.000000
4 0.2500000E-02 0.000000
5 0.000000 0.000000
6 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 necesario (unidades) Disponibilidad de materiales (unidades)
Modelo 1 Modelo 2 Modelo 3 Proveedor A Proveedor B Proveedor C
Material 1 25 10 33 1200 1500 1750
Material 2 17 15 18 950 1200 800
Material 3 8 7 12 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 SETS:
i: muebles (1..3) [Modelo 1 Modelo 2 Modelo 3] MUEBLES/1..3/:GANANCIA,X;
j: proveedores (1..3) [A B C] PROVEEDORES/1..3/:Y;
k: material (1..3) [MP1 MP2 MP3] MATERIAL/A B C/:;
MXM(MUEBLES,MATERIAL):MATERIAL_NECE;
Variables de decisión PXM(PROVEEDORES,MATERIAL):MATERIAL_DISPO;
X(i) = Cantidad de productos i a producir ENDSETS
Y(j) = 1 seleccionar proveedor j o 0 no seleccionar

Datos estructurados: DATA:


Ganancia(i) = [750 900 800] GANANCIA=750 900 800;
Material-nece(ik) = [25 17 8 10 15 7 33 18 12] MATERIAL_NECE= 25 17 8 10 15 7 33 18 12;
Materuial-dispo(jk) = [1200 1500 1750 950 1200 MATERIAL_DISPO=1200 950 600 1500 1200 820
800 600 820 750] 1750 800 750;
ENDATA:
3

Min 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 j=1
3 @FOR(MATERIAL(K):
෍ Yj = 1 @SUM(MUEBLES(I):MATERIAL_NECE(I,K)*X(I))<=
j=1 @SUM(PROVEEDORES(J):MATERIAL_DISPO(J,K)*Y(J)));
X1=X2=X3 @SUM(PROVEEDORES(J):Y(J))=1;
X(1)=X(2); X(1)=X(3);
∀i: Xi ≥ 0, entero
∀j: Yj = 0 o 1 @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 Value Reduced Cost
GANANCIA( 1) 750.0000 0.000000
Row Slack or Surplus Dual Price
GANANCIA( 2) 900.0000 0.000000 1 53900.00 1.000000
GANANCIA( 3) 800.0000 0.000000 2 4.000000 0.000000
X( 1) 22.00000 -750.0000 3 100.0000 0.000000
X( 2) 22.00000 -900.0000 4 226.0000 0.000000
X( 3) 22.00000 -800.0000 5 0.000000 0.000000
Y( 1) 0.000000 0.000000 6 0.000000 0.000000
Y( 2) 1.000000 0.000000 7 0.000000 0.000000
Y( 3) 0.000000 0.000000
MATERIAL_NECE( 1, A) 25.00000 0.000000
MATERIAL_NECE( 1, B) 17.00000 0.000000
MATERIAL_NECE( 1, C) 8.000000 0.000000
MATERIAL_NECE( 2, A) 10.00000 0.000000
MATERIAL_NECE( 2, B) 15.00000 0.000000
MATERIAL_NECE( 2, C) 7.000000 0.000000
MATERIAL_NECE( 3, A) 33.00000 0.000000 Reporte administrativo:
MATERIAL_NECE( 3, B) 18.00000 0.000000
MATERIAL_NECE( 3, C) 12.00000 0.000000
MATERIAL_DISPO( 1, A) 1200.000 0.000000
MATERIAL_DISPO( 1, B) 950.0000 0.000000
Producir 22 unidades de cada producto y trabajar
MATERIAL_DISPO( 1, C) 600.0000 0.000000 con el proveedor B, obteniendo un beneficio de
MATERIAL_DISPO( 2, A) 1500.000 0.000000
MATERIAL_DISPO( 2, B) 1200.000 0.000000 $53.9 mil.
MATERIAL_DISPO( 2, C) 820.0000 0.000000
MATERIAL_DISPO( 3, A) 1750.000 0.000000
MATERIAL_DISPO( 3, B) 800.0000 0.000000
MATERIAL_DISPO( 3, C) 750.0000 0.000000
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 + 33 * X_3 <= 0;
[_3] - 950 * Y_1 - 1200 * Y_2 - 800 * Y_3 + 17 * X_1 + 15 * X_2 + 18 * X_3 <= 0;
[_4] - 600 * Y_1 - 820 * Y_2 - 750 * Y_3 + 8 * X_1 + 7 * X_2 + 12 * X_3 <= 0;
[_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( X_3);
END
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.
Almacenes ($ / Unid) Capacidad
Plantas
1 2 3 (unidades)
1 3 2 4 950
2 2 4 3 1150
3 3 5 3 1000
4 4 3 2 900
Demanda (unidades) 1200 900 500
Se estima un costo fijo de operación para cada planta.
Planta 1 2 3 4
Costo fijo de operación ($) 600 900 200 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
1 2 3 4
A 100 125 110 130
B 150 125 175 140
C 125 110 100 170
D 175 200 220 250
E 140 105 155 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 Capacidad mensual
Almacenes
La Libertad Arequipa Lambayeque (camiones)
Trujillo 35 180 72 180
Arequipa 195 30 200 240
Chiclayo 65 240 45 250
Demanda mensual (camiones) 110 90 70
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.

Hasta (dólares)
Desde
Región 1 Región 2 Región 3
Nueva York 20 40 50
Los Ángeles 48 15 26
Chicago 26 35 18
Atlanta 24 50 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:
Costos de realización de los trabajos (UM)
Programador
Trabajo1 Trabajo2 Trabajo3 Trabajo 4 Trabajo5
Cesar 100 150 200 100 50
Luis 80 200 100 100 80
Raúl 200 250 250 150 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

También podría gustarte