Вы находитесь на странице: 1из 27

Desarrollar un modelo Lingo

Para desarrollar un modelo de optimizacion en


Lingo hay que especificar:

Funcion Objetivo

M ax(M in) = COST O1 V ARIABLE1


+ COST O2 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
COEF 11 V AR1 <= DISP ON IBILIDAD1;
COEF 21 V AR1 + COEF 22 V AR2 <= DISP 2;
o bien
COEF 11 V AR1 >= RECU RSO1;
COEF 21 V AR1 + COEF 22 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 del


comando Lingo.

Lingo comenzara a compilar el modelo. Si el


modelo no pasa la compilacion, aparecera un
mensaje 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 + y
s. 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 s2
s1 1 0 1 0 3

s2 3 2 0 1 5
zj 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/3


zj 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 Lineal
Entera,...)
State Muestra la situacion actual de la solu-
cion (Global Opt: Optimo global; Infeasible: No
factible; Unbounded: No acotada;...)
Objective Valor de la funcion objetivo.
Infeasibility Cantidad por la que no se verifican
las 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 de
restricciones del modelo y cuales de ellas son no
lineales.
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) Lista
la cantidad de memoria.
ELAPSED RUNTIME (hh:mm:ss) Muestra
el tiempo total usado para generar y resolver el
modelo.
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 Cost


X 1,666667 0,0000000
Y 0,0000000 0,3333334

Row Slack or Surplus Dual Price


1 3,333333 1,000000
2 1,333333 0,0000000
3 0,0000000 0,6666667
Interpretar la Solucion

Costo reducido: Indican cuanto tendra 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 2
3X1 + 4X2 12

Xi 0

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

s.a. X1 + X2 X3 5
6X1 + 5X2 X4 10

Xi 0
Ejemplo 1

Max 3x1 + 2x2


s. 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 , x 2 , s 1 , s 2 , A1 0
Fase I: Max - A1
x1 x2 s1 s2 A1
s1 2 1 1 0 0 2

A1 3 4 0 1 1 12
zj 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 4
zj 5 0 4 1 1 4
z j cj 5 0 4 1 0
Ejemplo 2

Max 36x1 + 30x2 3x3 4x4

s. a. x1 + x2 x3 5
6x1 + 5x2 x4 10
x1 , x 2 , x 3 , x 4 0
que introduciendo variables de holgura, queda

x 1 + x2 x 3 + s1 =5
6x1 + 5x2 x4 + s2 = 10
x1 , x 2 , x 3 , x 4 , s 1 , s 2 0
x1 x2 x3 x4 s1 s2
s1 1 1 1 0 1 0 5

s2 6 5 0 1 0 1 10
zj 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/6


zj 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 5
zj 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 consumidas
por da,
X3 = Numero de botellas de refresco tomadas
diariamente,
X4 = Porciones de Pastel de queso con pina
por da;
!Funcion objetivo;
M IN = 0.50X1+0.20X2+0.30X3+0.80
X4;

!Restriccion de caloras;
400X1+200X2+150X3+500X4 >= 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;

M in = 0.70 X1 + 1.20 X2 + 0.50 X3;

! Restriccion de caloras;

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

! Restriccion de protenas;

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;
M ax = 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 gasolina


normal;
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 da i;

!Funcion Objetivo;

M in = 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;

M ax = 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;

M ax = 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


agrcolas,

X5 =Millones de euros invertidos en Prestamos


comerciales;

! Funcion Objetivo;

M ax = 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,1X10,07X2
0,03X3 0,05X4 0,02X5);
! Fondos totales;

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

! Prestamos agrcolas 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;

M ax = 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+3X3
200 );

! Capital;

1000X1+1200X2+1400X3+800X4 >=
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.