Práctica de Ordenador con Lingo

26
Desarrollar un modelo Lingo Para desarrollar un modelo de optimizaci´ on en Lingo hay que especificar: Funci´ on Objetivo Max(Min)= COSTO1 * V ARIABLE 1 + COSTO2 * V ARIABLE 2; Variables: Los nombres de las variables en Lingo deben empezar con un car´ acter alfab´ etico, seguido de alfab´ eti- cos, num´ ericos o , hasta un m´ aximo de 32 caracteres. Restricciones COEF 11 * V AR1 <= DISPONIBILIDAD1; COEF 21 * V AR1+ COEF 22 * V AR2 <= DISP 2; o bien COEF 11 * V AR1 >= RECURSO1; COEF 21 * V AR1+ COEF 22 * V AR2 >= REC 2; Comentarios: Comenzar´ an con el signo ad- miraci´ on “!” y terminar´ an con el signo de pun- tuaci´ on “;” Lingo no distingue entre letras en mayuscula o en minuscula.

description

Práctica de Ordenador con Lingo PL.

Transcript of Práctica de Ordenador con Lingo

Desarrollar un modelo Lingo

Para desarrollar un modelo de optimizacion en

Lingo hay que especificar:

• Funcion Objetivo

Max(Min) = COSTO1 ∗ V ARIABLE1

+ COSTO2 ∗ V ARIABLE2;

Variables: Los nombres de las variables en Lingo deben

empezar con un caracter alfabetico, seguido de alfabeti-

cos, numericos o , hasta un maximo de 32 caracteres.

• Restricciones

COEF11 ∗ V AR1 <= DISPONIBILIDAD1;COEF21 ∗ V AR1 + COEF22 ∗ V AR2 <= DISP2;o bienCOEF11 ∗ V AR1 >= RECURSO1;COEF21 ∗ V AR1 + COEF22 ∗ V AR2 >= REC2;

• Comentarios: Comenzaran con el signo ad-

miracion “!” y terminaran con el signo de pun-

tuacion “;”

Lingo no distingue entre letras en mayuscula o

en minuscula.

Resolucion del modelo

Para resolver el modelo, seleccionar SOLVE delcomando Lingo.

Lingo comenzara a compilar el modelo. Si elmodelo no pasa la compilacion, aparecera unmensaje error.

Ejemplo

Max = 2 ∗ x + y;x <= 3;

3x + 2 ∗ y <= 5;

Aparecera:

Ventana: LINGO Error Message

Error Code: 11 Help OK

Error Tex:

Invalid input. A syntax has occurred.

3] 3x + 2 ∗ y <= 5;

Si no ha habido ningun error aparecera en pan-talla LINGO Solver Status.

Max 2x + ys. a.

x ≤ 3

3x + 2y ≤ 5

x, y ≥ 0

que introduciendo variables de holgura, queda

x + s1 = 3

3x + 2y + s2 = 5

x, y, s1, s2 ≥ 0

x y s1 s2s1 1 0 1 0 3

s2 3 2 0 1 5zj 0 0 0 0 0

zj − cj −2 −1 0 0

s1 0 −2/3 1 −1/3 4/3

x 1 2/3 0 1/3 5/3zj 2 4/3 0 2/3 10/3

zj − cj 0 1/3 0 2/3

LINGO solver Status

SOLVER STATUS

Model Class Muestra el tipo de modelo (LP:Programacion Lineal; ILP: Programacion LinealEntera,...)

State Muestra la situacion actual de la solu-cion (Global Opt: Optimo global; Infeasible: Nofactible; Unbounded: No acotada;...)

Objective Valor de la funcion objetivo.

Infeasibility Cantidad por la que no se verificanlas restricciones.

Iterations Numero de iteraciones necesarias pa-ra su resolucion.

VARIABLES Muestra el numero total de va-riables del modelo. Enteras y no Lineales.

CONSTRAINTS Muestra el numero total derestricciones del modelo y cuales de ellas son nolineales.

NONZEROS Muestra el numero de coeficien-tes no nulos en el modelo y cuales de ellos apa-recen en variables no lineales.

GENERATOR MEMORY USED(K) Listala cantidad de memoria.

ELAPSED RUNTIME (hh:mm:ss) Muestrael tiempo total usado para generar y resolver elmodelo.

Solution Report

Esta pantalla contiene los detalles de la solucion

del problema.

Global optimal solution found

Objective value: 3.333333

Total solver iterations: 2

Variable Value Reduced CostX 1,666667 0,0000000Y 0,0000000 0,3333334

Row Slack or Surplus Dual Price1 3,333333 1,0000002 1,333333 0,00000003 0,0000000 0,6666667

Interpretar la Solucion

Costo reducido: Indican cuanto tendrıa que

mejorar cada uno de los coeficientes de la fun-

cion objetivo antes de que la correspondiente

variable de decision pueda tomar valor positivo

en la solucion optima.

Holgura o excedente: Nos dice lo proximo que

estamos de satisfacer una restriccion. Si una

restriccion es violada, como en una solucion in-

factible, el valor de estas variables sera negativo.

Precios duales: Mejora en el valor de la funcion

objetivo por cada incremento unitario en el la-

do derecho de una restriccion. En un problema

de maximizar el precio dual es el mismo que el

precio sombra. En un problema de minimizar el

precio dual es el negativo del precio sombra.

Ejemplos

Max Z = 3X1 + 2X2

s.a. 2X1 + X2 ≤ 23X1 + 4X2 ≥ 12

Xi ≥ 0

Max Z = 36X1 + 30X2 − 3X3 − 4X4

s.a. X1 + X2 −X3 ≤ 56X1 + 5X2 −X4 ≤ 10

Xi ≥ 0

Ejemplo 1

Max 3x1 + 2x2s. a.

2x1 + x2 ≤ 2

3x1 + 4x2 ≥ 12

x, y ≥ 0

que introduciendo variables de holgura y artifi-ciales, queda

2x1 + x2 + s1 = 2

3x1 + 4x2 − s2 + A1 = 12

x1, x2, s1, s2, A1 ≥ 0

Fase I: Max - A1

x1 x2 s1 s2 A1s1 2 1 1 0 0 2

A1 3 4 0 −1 1 12zj −3 −4 0 1 −1 −12

zj − cj −3 −4 0 1 0

x2 2 1 1 0 0 2

A1 −5 0 −4 −1 1 4zj 5 0 4 1 −1 −4

zj − cj 5 0 4 1 0

Ejemplo 2

Max 36x1 + 30x2 − 3x3 − 4x4

s. a. x1 + x2 − x3 ≤ 5

6x1 + 5x2 − x4 ≤ 10

x1, x2, x3, x4 ≥ 0

que introduciendo variables de holgura, queda

x1 + x2 − x3 + s1 = 5

6x1 + 5x2 − x4 + s2 = 10

x1, x2, x3, x4, s1, s2 ≥ 0

x1 x2 x3 x4 s1 s2

s1 1 1 −1 0 1 0 5

s2 6 5 0 −1 0 1 10zj 0 0 0 0 0 0 0

zj − cj −36 −30 3 4 0 0

s1 0 −5/6 −1 1/6 1 −1/6 20/6

x1 1 5/6 0 −1/6 0 1/6 10/6zj 36 30 0 −6 0 6 360/8

zj − cj 0 0 3 −2 0 6

x4 0 −5 −6 1 6 −1 20

x1 1 0 −1 0 1 0 5zj 36 20 −12 −4 12 4 100

zj − cj 0 −10 −9 0 12 4

!PROBLEMA1;

!Variables de decision:

X1 = Bizcochos consumidos diariamente,

X2 = Bolas de helado de chocolate consumidaspor dıa,

X3 = Numero de botellas de refresco tomadasdiariamente,

X4 = Porciones de Pastel de queso con pinapor dıa;

!Funcion objetivo;

MIN = 0.50∗X1+0.20∗X2+0.30∗X3+0.80∗X4;

!Restriccion de calorıas;

400∗X1+200∗X2+150∗X3+500∗X4 >= 500;

!Restriccion de chocolate;

3 ∗X1 + 2 ∗X2 >= 6;

!Restriccion de azucar;

2 ∗X1 + 2 ∗X2 + 4 ∗X3 + 4 ∗X4 >= 10;

!Restriccion de grasa;

2 ∗X1 + 4 ∗X2 + X3 + 5 ∗X4 >= 8;

! Problema 2;

! Variables de decision:

X1 = Kilos de arroz,

X2 = Kilos de pescado,

X3 = Kilos de verdura;

! Funcion Objetivo;

Min = 0.70 ∗X1 + 1.20 ∗X2 + 0.50 ∗X3;

! Restriccion de calorıas;

200 ∗X1 + 300 ∗X2 + 100 ∗X3 <= 4000;

! Restriccion de proteınas;

X1 + 3 ∗X2 + 2 ∗X3 >= 3;

!Problema 3;! Variables de decision:

X1 = No de sesiones de destilacion con Tn,

X2 = No de sesiones de destilacion con Ta;

! Funcion Objetivo;

Max = 103 ∗X1 + 110 ∗X2;

! Restriccion referida a la cantidad de Crudo,C1;

7 ∗X1 + 10 ∗X2 <= 1400;

! Restriccion referida a la cantidad de Crudo,C2;

12 ∗X1 + 8 ∗X2 <= 2000;

! Restriccion referida a la demanda de gasoleo;

8 ∗X1 + 10 ∗X2 >= 900;

! Restriccion referida a la demanda de gasolinanormal;

6 ∗X1 + 7 ∗X2 >= 300;

! Restricciones referidas a la demanda de gaso-lina super;

5 ∗X1 + 4 ∗X2 <= 1700;

5 ∗X1 + 4 ∗X2 >= 800;

!Problema 4;

! Variables de decision:

Xi = Numero de empleados que empiezan a

trabajar el dıa i;

!Funcion Objetivo;

Min = X1 + X2 + X3 + X4 + X5 + X6 + X7;

! Numero de empleados requeridos para el Lu-

nes;

X1 + X4 + X5 + X6 + X7 >= 17;

! Numero de empleados requeridos para el Mar-

tes;

X1 + X2 + X5 + X6 + X7 >= 13;

! Numero de empleados requeridos para el Mierco-

les;

X1 + X2 + X3 + X6 + X7 >= 15;

! Numero de empleados requeridos para el Jue-

ves;

X1 + X2 + X3 + X4 + X7 >= 19;

! Numero de empleados requeridos para el Vier-

nes;

X1 + X2 + X3 + X4 + X5 >= 14;

! Numero de empleados requeridos para el Saba-

do;

X2 + X3 + X4 + X5 + X6 >= 16;

! Numero de empleados requeridos para el Do-

mingo;

X3 + X4 + X5 + X6 + X7 >= 11;

!Problema 5;

! Variables de decision:

X1 = Onzas de Brutte Regular vendidas anua-

lmente, (no las producidas inicialmente)

X2 = Onzas de Brutte Luxery vendidas anual-

mente,(producidas)

X3 = Onzas de Chanelle Regular vendidas anua-

lmente, (no las producidas inicialmente)

X4 = Onzas de Chanelle Luxery vendidas anua-

lmente, (producidas)

X5 = Libras de materia prima compradas;

! Funcion Objetivo;

Max = 7 ∗X1 + (18− 4) ∗X2 + 6 ∗X3 + (14−4) ∗X4− 3 ∗X5;

! Horas de laboratorio disponibles;

3 ∗X2 + 2 ∗X4 + X5 <= 6000;

! Restricciones referentes a la cantidad de pro-

ductos disponibles para la venta;

X1 + X2− 3 ∗X5 = 0;

!(X1 + X2 = 3X5);

X3 + X4− 4 ∗X5 = 0;

!(X3 + X4 = 4X5);

! Limitacion de materia prima;

X5 <= 4000;

!Problema 6;

! Variables de decision:

X1 = Euros invertidos en Atlantic Oil,

X2 = Euros invertidos en Pacific Oil,

X3 = Euros invertidos en Midwest Steel,

X4 = Euros invertidos en Huber Steel,

X5 = Euros invertidos en Bonos gubernamen-

tales;

! Funcion Objetivo;

Max = 0,073 ∗X1 + 0,103 ∗X2 + 0,064 ∗X3 +

0,075 ∗X4 + 0,045 ∗X5;

!Especificamos la inversion de los 100.000 eu-

ros;

X1 + X2 + X3 + X4 + X5 <= 100000;

!No recibir mas del 50 %;

X1 + X2 <= 50000;

X3 + X4 <= 50000;

!Los Bonos deben ser al menos 25 %;

−0,25 ∗X3− 0,25 ∗X4 + X5 >= 0;

!(X5 ≥ 0,25(X3 + X4));

!Inversion en Pacific Oil no puede ser mas del

60%;

−0,6 ∗X1 + 0,4 ∗X2 <= 0;

!(X2 ≤ 0,6(X1 + X2));

!Problema 7;

! Variables de decision:

X1 =Millones de euros invertidos en Prestamos

personales ,

X2 = Millones de euros invertidos en Prestamos

para automovil,

X3 =Millones de euros invertidos en Prestamos

para vivienda,

X4 =Millones de euros invertidos en Prestamos

agrıcolas,

X5 =Millones de euros invertidos en Prestamos

comerciales;

! Funcion Objetivo;

Max = 0,026 ∗X1 +0,0509 ∗X2 +0,0864 ∗X3 +

0,06875 ∗X4 + 0,078 ∗X5;

!(0,14(0,9X1)+0,13(0,93X2)+0,12(0,97X3)+

0,125(0,95X4)+0,1(0,98X5)−0,1X1−0,07X2−0,03X3− 0,05X4− 0,02X5);

! Fondos totales;

X1 + X2 + X3 + X4 + X5 <= 12;

! Prestamos agrıcolas y comerciales;

X4 + X5 >= 4,8;

!(40% de12) );

! Prestamos para viviendas;

−0,5 ∗X1− 0,5 ∗X2 + 0,5 ∗X3 >= 0;

!(X3 ≥ 0,5(X1 + X2 + X3));

! Razon total de los creditos malos;

0,06 ∗X1 + 0,03 ∗X2− 0,01 ∗X3 + 0,01 ∗X4−0,02 ∗X5 <= 0;

!(0,1X1+007X2+0,03X3+0,05X4+0,02X5

X1+X2+X3+X4+X5 ≤ 0,04);

!Problema 8;

! Variables de decision:

X1 = Numero de unidades para una sola familia,

X2 = Numero de unidades para dos familias,

X3 = Numero de unidades para tres familias,

X4 = Numero de areas recreativas;

! Funcion Objetivo;

Max = 10000 ∗X1 + 12000 ∗X2 + 15000 ∗X3;

! Viviendas de una sola familia (Ap. 1);

0,5 ∗X1− 0,5 ∗X2− 0,5 ∗X3 >= 0;

!(X1 ≥ 0,5(X1 + X2 + X3));

! Uso del suelo (Ap 2, parte de 3 y texto despues

de 4);

2 ∗X1 + 3 ∗X2 + 4 ∗X3 + X4 <= 680;

!(680 es 800 menos el 15 %);

! Areas recreativas (parte de Ap. 3);

−X1− 2 ∗X2− 3 ∗X3 + 200 ∗X4 >= 0;

!(X4 ≥ X1+2X2+3X3200 );

! Capital;

1000∗X1+1200∗X2+1400∗X3+800∗X4 >=

100000;

! Consumo de agua;

400 ∗X1 + 600 ∗X2 + 840 ∗X3 + 450 ∗X4 <=

200000;

Analisis de sensibilidad

Despues de resolver el problema, usamos el coman-

do Range del menu LINGO para generar un

informe de rangos para el modelo activo. Tal

informe muestra en que rango se puede:

• Cambiar un coeficiente en la funcion objeti-

vo sin que cambien los valores optimos de las

variables de decision.

• Cambiar el valor de un recurso o disponibilidad

(coeficiente del lado derecho de una restriccion)

sin causar cambios en los valores optimos de

los precios duales o de los costos reducidos (sin

que cambien las variables basicas, es decir la

solucion siga siendo factible, aunque si pueden

cambiar sus valores).

Si aparece el mensaje de error:

Error Code 122: Range reports not possible when range

analysis is disabled

hay que ejecutar previamente el comando Op-

tions del menu LINGO, y en General Solver

seleccionar la opcion Prices and Ranges en la

lista asociada a Dual Computations.

Ejemplo

En los ejemplos en los que vayamos a solicitar

un Range Report conviene nombrar las restric-

ciones, incluyendo delante de ellas un nombre

entre corchetes, para luego poder identificarlas

facilmente.

[FuncionObjetivo] Max = 20 ∗A + 30 ∗ C;[Restriccion1] A <= 60;[Restriccion2] C <= 50;[Restriccion3] A + 2 ∗ C <= 120;

El informe que proporciona es

La primera parte titulada Objective Coeffi-

cient Ranges incluye en su primera columna

titulada Variable la lista de variables del pro-

blema, en la segunda Current Coefficient el

coeficiente actual de cada variable en la funcion

objetivo, en la tercera Allowable Increase, la

cantidad en que se puede incrementar el coefi-

ciente de cada variable en la funcion objetivo sin

que cambien los valores de la solucion optima y

la ultima Allowable Decrease, la cantidad en

que se puede disminuir el coeficiente de cada

variable en la funcion objetivo sin que cambien

los valores optimos de las variables.

En nuestro ejemplo, podemos decir que mien-

tras el coeficiente de la variable A en la funcion

objetivo sea mayor o igual a 15, los valores opti-

mos de las variables no cambian. El coeficiente

de la variable C puede variar entre 0 y 40.

La segunda parte titulada Right-hand Side Ran-

ges incluye en su primera columna titulada Row

la lista de los nombres de las restricciones del

modelo, en la segunda Current RHS los valores

actuales de los recursos o disponibilidades (coe-

ficiente del lado derecho de las restricciones), y

las siguientes Allowable Increase y Allowable

Decrease, en cuanto los podemos incremen-

tar o disminuir, respectivamente, sin causar un

cambio en los valores optimos de los precios

duales o costos reducidos.

En nuestro ejemplo, los precios duales y los cos-

tos reducidos permanecen constantes si el coefi-

ciente del lado derecho de la primera restriccion

esta entre 20 y 120, el de la segunda es mayor

o igual que 30 y el de la tercera esta entre 60

y 160.