CURSO: INVESTIGACION DE OPERACIONES II
TRABAJO ENCARGADO
PRACTICA DE LINGO
PRESENTADO POR: ALVARADO RUIZ, ARNALDO JONATHAN ALVINO VELA, CHAKLS DREANER
Docente: ING. : NILTHON CHUCOS BAQUERIZO Tingo María – Perú 1.- MODELAR CON LINGO 9.0, UN PROBLEMA DE ASIGNACION CON LAS FUNCIONES EN LA PRACTICA. ENUNCIADO:
TIEMPO DE
PRODUCCION
POR
UNIDAD, HORAS
TIEMPO DE PRODUCCION DISPONIBLE(hrs)
PRODUCTO(J)
MAQUINA PO1 Bobinadora() 1.7 Cortadora 1.1 Soldadora 1.6 Ganancia/Unidad 26
PO2 2.1 2.5 1.3 35
PO3 1.4 1.7 1.6 25
PO4 2.4 2.6 0.8 37
28 34 21
Considerese un problema de mezcla de producción, se tiene 4 productos, cada unidad de producto requiere de mezcla de producción en cada una de las 3 maquinas, y cada maquina tiene disponible cierto numero de horas a la semana. Y cada producto proporciona cierta ganancia por unidad producida, en la siguiente tabla se proporciona datos, relacionado con las maquinas, con los productos y los costos de cada maquina y producto.
Solución en LINGO 13.0 Código de LINGO para el siguiente problema:
!FUNCION OBJETIVO; max = 26*x1 + 35*x2 + 25*x3 + 37*x4;
!RESTRICCIONES DE DISPONIBILIDAD HORAS; [BOBINADORA] [CORTADORA] [SOLDADORA]
1.7*x1 + 2.1*x2 + 1.4*x3 + 2.4*x4 <= 28; 1.1*x1 + 2.5*x2 + 1.7*x3 + 2.6*x4 <= 34; 1.6*x1 + 1.3*x2 + 1.6*x3 + 0.8*x4 <= 21;
En el LINGO una vez ejecutada el SOLVE STATUS obtendremos esto resultados:
Y por resultados tendremos lo siguiente: Global optimal solution found. Objective value: Infeasibilities: Total solver iterations:
475.0000 0.000000 3
Model Class:
LP
Total variables: Nonlinear variables: Integer variables:
4 0 0
Total constraints: Nonlinear constraints:
4 0
Total nonzeros: Nonlinear nonzeros: Variable X1 X2 X3 X4 Row 1 BOBINADORA CORTADORA SOLDADORA
Value 0.000000 10.00000 5.000000 0.000000 Slack or Surplus 475.0000 0.000000 0.5000000 0.000000
16 0 Reduced Cost 3.577922 0.000000 0.000000 1.441558 Dual Price 1.000000 15.25974 0.000000 2.272727
PROBLEMAS DE ASIGNACION EJEMPLO Un gabinete de abogados tiene en su nómina cuatro hábiles licenciados en derecho a los cuales quiere utilizar de forma óptima asignando a cada uno el caso que más se ajuste a sus características. El 1 de marzo llegan a la compañía cuatro clientes en busca de asesoramiento, y el director del gabinete decide asignar cada caso a cada uno de sus cuatro empleados según sus especialidades y preferencias. A continuación se muestra una tabla donde se estima la efectividad (valorada en una escala del 1 al 9) de cada trabajador para cada uno de los casos que presentan los clientes:
ABOGADO
DIVORCIO
A1 A2 A3 A4
6 9 4 6
FUSIÓN EMPRESAS 2 3 8 7
ABSORCIÓN EXHIBICIONISMO EMPRESAS 8 5 5 8 3 4 6 4
Para resolver esta situación, consideraremos las variables Xij, donde i = 1, 2, 3, 4 según abogado, y j = 1, 2, 3, 4 según caso. Así, la variable Xij tomará el valor 1 si el abogado i es asignado al caso j, y 0 en caso contrario.
TITLE MAX =
DESPACHO DE ABOGADOS; 6*X11 + 2*X12 + 8*X13 + 5*X14 + 9*X21 + 3*X22 + 5*X23 + 8*X24 + 4*X31 + 8*X32 + 3*X33 + 4*X34 + 6*X41 + 7*X42 + 6*X43 + 4*X44; ! Maximizamos la efectividad total;
!ST;
END
X11 X12 X13 X14
+ + + +
X21 X22 X23 X24
+ + + +
X31 X32 X33 X34
+ + + +
X41 X42 X43 X44
= = = =
1; 1; 1; 1;
! ! ! !
Caso Caso Caso Caso
divorcio; fusión; absorción; exhibicionismo;
X11 X21 X31 X41
+ + + +
X12 X22 X32 X42
+ + + +
X13 X23 X33 X43
+ + + +
X14 X24 X34 X44
= = = =
1; 1; 1; 1;
! ! ! !
Abogado Abogado Abogado Abogado
1; 2; 3; 4;
Global optimal solution found. Objective value: Infeasibilities: Total solver iterations:
30.00000 0.000000 7
Model Class:
LP
Total variables: Nonlinear variables: Integer variables:
16 0 0
Total constraints: Nonlinear constraints:
9 0
Total nonzeros: Nonlinear nonzeros:
48 0
Model Title: DESPACHO DE ABOGADOS Variable X11 X12 X13 X14 X21 X22 X23 X24 X31 X32 X33 X34
Value 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 1.000000 0.000000 0.000000
Reduced Cost 2.000000 7.000000 0.000000 2.000000 0.000000 7.000000 4.000000 0.000000 3.000000 0.000000 4.000000 2.000000
X41 X42 X43 X44 Row 1 2 3 4 5 6 7 8 9
1.000000 0.000000 0.000000 0.000000 Slack or Surplus 30.00000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 0.000000 0.000000 1.000000 Dual Price 1.000000 8.000000 9.000000 8.000000 7.000000 0.000000 1.000000 -1.000000 -2.000000
Queda claro pues que el abogado 1 se ocupará del caso de absorción empresarial, el abogado 2 del caso de exhibicionismo, el abogado 3 del caso de la fusión, y el abogado 4 del divorcio.
2.- MODELAR CON LINGO, UN PROBLEMA DE TRANSPORTE, CON LA FUNCIONES DEL SOFTWARE Ejemplo: EL Problema de Transporte en LINGO 13.0 ENUNCIADO: La compañía Mega Transporte (MT) tiene 6 depósitos que proveen a 8 vendedores. Cada deposito puede proveer una cantidad de materiales que no puede ser excedida, y cada vendedor tiene una demanda que debe ser satisfecha. MT quiere determinar cuánto material enviar de cada depósito a cada vendedor para minimizar el coste. Este es un problema clásico de optimización llamado el problema del transporte. El siguiente diagrama ilustra el problema:
Puesto que cada depósito puede enviar a cada vendedor, hay un total de 48 caminos o arcos de envío posibles, se necesitará 1 variable para cada uno de estos arcos que representen la cantidad enviada. Están disponibles los siguientes datos: Depósito (DP) 1 2 3 4 5 6
Capacidad 60 55 51 43 41 52
VENDEDOR (V) 1 2 3 4 5 6 7 8
DEMANDA 35 37 22 32 41 32 43 38
Coste de envío por unidad (euros):
DP1 DP2 DP3 DP4 DP5 DP6
V1 6 4 5 7 2 5
V2 2 9 2 6 3 5
V3 6 5 1 7 9 2
V4 7 3 9 3 5 2
V5 4 8 7 9 7 8
V6 2 5 4 2 2 1
V7 5 8 3 7 6 4
V8 9 2 3 1 5 3
Solución en LINGO 13.0 Código de LINGO para los problemas de trasporte: MODEL: SETS: DEPOSITOS /DP1 DP2 DP3 DP4 DP5 DP6/ : CAPACIDAD; VENDEDORES /V1 V2 V3 V4 V5 V6 V7 V8/ : DEMANDA; ARCO_ENVIO(DEPOSITOS , VENDEDORES) : COSTE , CANTIDAD; ENDSETS !EL OBJETIVO; [OBJETIVO] MIN = @SUM(ARCO_ENVIO(I,J): COSTE(I,J)*CANTIDAD(I,J)); !RESTRICCION DE DEMANDA; @FOR (VENDEDORES(J) : [R_DEMANDA] @SUM( DEPOSITOS(I) : CANTIDAD(I,J)) = DEMANDA(J)); !RESTRICCION DE LA CAPACIDAD; @FOR (DEPOSITOS(I) : [R_CAPACIDAD] @SUM( VENDEDORES(J) : CANTIDAD(I,J)) <= CAPACIDAD(I)); !LOS DATOS; DATA: CAPACIDAD DEMANDA = COSTE = 6 4 5 7 2 5 ENDDATA END
= 60 55 51 43 41 52; 35 37 22 32 41 32 43 38; 2 6 7 4 2 5 9 9 5 3 8 5 8 2 2 1 9 7 4 3 3 6 7 3 9 2 7 1 3 9 5 7 2 6 5 5 2 2 8 1 4 3;
En el LINGO una vez ejecutada el SOLVE STATUS obtendremos esto resultados:
Y por resultados tendremos lo siguiente:
Global optimal solution found. Objective value: Infeasibilities: Total solver iterations:
664.0000 0.000000 15
Model Class:
LP
Total variables: Nonlinear variables: Integer variables:
48 0 0
Total constraints: Nonlinear constraints:
15 0
Total nonzeros: Nonlinear nonzeros:
144 0
Variable CAPACIDAD( DP1) CAPACIDAD( DP2) CAPACIDAD( DP3) CAPACIDAD( DP4) CAPACIDAD( DP5) CAPACIDAD( DP6) DEMANDA( V1) DEMANDA( V2) DEMANDA( V3) DEMANDA( V4) DEMANDA( V5) DEMANDA( V6) DEMANDA( V7) DEMANDA( V8) COSTE( DP1, V1) COSTE( DP1, V2) COSTE( DP1, V3) COSTE( DP1, V4) COSTE( DP1, V5) COSTE( DP1, V6) COSTE( DP1, V7) COSTE( DP1, V8) COSTE( DP2, V1) COSTE( DP2, V2) COSTE( DP2, V3) COSTE( DP2, V4) COSTE( DP2, V5) COSTE( DP2, V6) COSTE( DP2, V7) COSTE( DP2, V8) COSTE( DP3, V1) COSTE( DP3, V2) COSTE( DP3, V3) COSTE( DP3, V4) COSTE( DP3, V5) COSTE( DP3, V6) COSTE( DP3, V7) COSTE( DP3, V8) COSTE( DP4, V1) COSTE( DP4, V2) COSTE( DP4, V3) COSTE( DP4, V4) COSTE( DP4, V5) COSTE( DP4, V6) COSTE( DP4, V7) COSTE( DP4, V8) COSTE( DP5, V1) COSTE( DP5, V2) COSTE( DP5, V3) COSTE( DP5, V4) COSTE( DP5, V5) COSTE( DP5, V6) COSTE( DP5, V7) COSTE( DP5, V8) COSTE( DP6, V1) COSTE( DP6, V2)
Value 60.00000 55.00000 51.00000 43.00000 41.00000 52.00000 35.00000 37.00000 22.00000 32.00000 41.00000 32.00000 43.00000 38.00000 6.000000 2.000000 6.000000 7.000000 4.000000 2.000000 5.000000 9.000000 4.000000 9.000000 5.000000 3.000000 8.000000 5.000000 8.000000 2.000000 5.000000 2.000000 1.000000 9.000000 7.000000 4.000000 3.000000 3.000000 7.000000 6.000000 7.000000 3.000000 9.000000 2.000000 7.000000 1.000000 2.000000 3.000000 9.000000 5.000000 7.000000 2.000000 6.000000 5.000000 5.000000 5.000000
Reduced Cost 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 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 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
COSTE( DP6, V3) COSTE( DP6, V4) COSTE( DP6, V5) COSTE( DP6, V6) COSTE( DP6, V7) COSTE( DP6, V8) CANTIDAD( DP1, V1) CANTIDAD( DP1, V2) CANTIDAD( DP1, V3) CANTIDAD( DP1, V4) CANTIDAD( DP1, V5) CANTIDAD( DP1, V6) CANTIDAD( DP1, V7) CANTIDAD( DP1, V8) CANTIDAD( DP2, V1) CANTIDAD( DP2, V2) CANTIDAD( DP2, V3) CANTIDAD( DP2, V4) CANTIDAD( DP2, V5) CANTIDAD( DP2, V6) CANTIDAD( DP2, V7) CANTIDAD( DP2, V8) CANTIDAD( DP3, V1) CANTIDAD( DP3, V2) CANTIDAD( DP3, V3) CANTIDAD( DP3, V4) CANTIDAD( DP3, V5) CANTIDAD( DP3, V6) CANTIDAD( DP3, V7) CANTIDAD( DP3, V8) CANTIDAD( DP4, V1) CANTIDAD( DP4, V2) CANTIDAD( DP4, V3) CANTIDAD( DP4, V4) CANTIDAD( DP4, V5) CANTIDAD( DP4, V6) CANTIDAD( DP4, V7) CANTIDAD( DP4, V8) CANTIDAD( DP5, V1) CANTIDAD( DP5, V2) CANTIDAD( DP5, V3) CANTIDAD( DP5, V4) CANTIDAD( DP5, V5) CANTIDAD( DP5, V6) CANTIDAD( DP5, V7) CANTIDAD( DP5, V8) CANTIDAD( DP6, V1) CANTIDAD( DP6, V2) CANTIDAD( DP6, V3) CANTIDAD( DP6, V4) CANTIDAD( DP6, V5) CANTIDAD( DP6, V6) CANTIDAD( DP6, V7) CANTIDAD( DP6, V8)
2.000000 2.000000 8.000000 1.000000 4.000000 3.000000 0.000000 19.00000 0.000000 0.000000 41.00000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 32.00000 0.000000 0.000000 0.000000 0.000000 0.000000 11.00000 0.000000 0.000000 0.000000 0.000000 40.00000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 5.000000 0.000000 38.00000 34.00000 7.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 22.00000 0.000000 0.000000 27.00000 3.000000 0.000000
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 5.000000 0.000000 5.000000 7.000000 0.000000 2.000000 2.000000 10.00000 0.000000 4.000000 1.000000 0.000000 1.000000 2.000000 2.000000 0.000000 4.000000 0.000000 0.000000 9.000000 3.000000 4.000000 0.000000 4.000000 4.000000 2.000000 4.000000 1.000000 3.000000 0.000000 2.000000 0.000000 0.000000 0.000000 7.000000 4.000000 2.000000 1.000000 2.000000 5.000000 3.000000 2.000000 0.000000 1.000000 3.000000 0.000000 0.000000 3.000000
Row OBJETIVO R_DEMANDA( V1) R_DEMANDA( V2) R_DEMANDA( V3) R_DEMANDA( V4) R_DEMANDA( V5) R_DEMANDA( V6) R_DEMANDA( V7) R_DEMANDA( V8) R_CAPACIDAD( DP1) R_CAPACIDAD( DP2) R_CAPACIDAD( DP3) R_CAPACIDAD( DP4) R_CAPACIDAD( DP5) R_CAPACIDAD( DP6)
Slack or Surplus 664.0000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 22.00000 0.000000 0.000000 0.000000 0.000000
Dual Price -1.000000 -4.000000 -5.000000 -4.000000 -3.000000 -7.000000 -3.000000 -6.000000 -2.000000 3.000000 0.000000 3.000000 1.000000 2.000000 2.000000