Professional Documents
Culture Documents
CASOS SIMPLES
DR. JUAN CEVALLOS
Aplicacin inicial (Fuente: Schrage)
La empresa Enginola Television produce sus programas
en dos tipos de Sets de TV, el Astro y el Cosmo. Hay
dos lneas de produccin, una para cada set. La lnea de
produccin Astro tiene una capacidad de 60 sets por
da, y la capacidad de la lnea de produccin Cosmo es
de slo 50 sets por da. La mano de obra requerida para
el set Astro es de 1 persona-hora, y lo requerido por el
set Cosmo es de 2 personas-hora de trabajo. Hay un
mximo de 120 horas-hombre por da que pueden ser
asignados para produccin de los 2 tipos de sets. Si las
ganancias Si las ganancias son de $20 y $30 por cada
set de Astro y Cosmo, respectivamente, cul debe ser
la produccin diaria?
Solucin
Tipear en LINGO:
MAX = 20 * A + 30 * C;
A <= 60;
C <= 50;
A + 2 * C <= 120;
Click en boton Solve/bulls eye, use menu Lingo/Solve, o presione Ctrl+U
o iluminar boton cer y solve; para resolver el modelo. Resultado:
Global optimal solution found.
Objective value: 2100.000
Infeasibilities: 0.000000
Total solver iterations: 1
Model Class: LP
Total variables: 2
Nonlinear variables: 0
Integer variables: 0
Total constraints: 4
Nonlinear constraints: 0
Total nonzeros: 6
Nonlinear nonzeros: 0
Variable Value Reduced Cost
A 60.00000 0.000000
C 30.00000 0.000000
Row Slack or Surplus Dual Price
1 2100.000 1.000000
2 0.000000 5.000000
3 20.00000 0.000000
4 0.000000 15.00000
PROGRAMACIN ENTERA
MAX = 4 * TOM + 3 * DICK + 2 * HARRY;
2.5 * TOM + 3.1 * HARRY <= 5;
.2 * TOM + .7 * DICK + .4 * HARRY <= 1;
@BIN(TOM);
@BIN(DICK);
@BIN(HARRY);
SETS:
SET_A : X;
ENDSETS
DATA:
SET_A = A1 A2 A3 A4 A5;
X = 5 1 3 4 6;
ENDDATA
X_SUM = @SUM( SET_A( J): X( J));
LINGO evala la funcin SUM @, en primer lugar
inicializando un acumulador interno en cero. LINGO
luego comienza el looping sobre los miembros de
SET_A. Usted puede pensar en J como un pronombre.
El ndice variable J fija primero en el primer miembro de
SET_A (es decir, A1) y X (A1) es luego sumado al
acumulador. Entonces J se fija en el segundo elemento
y este proceso contina hasta que todos los valores de
X se han sumado al acumulador. El valor de la suma se
almacena entonces en la variable X_SUM.
Dado que todos los atributos de nuestra lista de
expresiones (en este caso, slo X aparece en la lista de
expresiones) se definen en el conjunto de ndices
(SET_A), podramos haber escrito, alternativamente,
nuestra suma como:
X_SUM = @ SUM (SET_A: X);
Conjunto de funciones de bucle @MIN y
@MAX
Las funciones @MIN y @MAX son usadas para encontrar
el mnimo y mximo de una expresin sobre miembros
de un conjunto. Denuevo, considere el modelo:
SETS:
SET_A : X;
ENDSETS
DATA:
SET_A = A1 A2 A3 A4 A5;
X = 5 1 3 4 6;
ENDDATA
Para encontrar los valores mnimo y mximo de X, todo lo
que uno necesita hacer es agregar las 2 expresiones:
THE_MIN_OF_X = @MIN( SET_A( J): X( J));
THE_MAX_OF_X = @MAX( SET_A( J): X( J));
Como con el ejemplo anterior de @SUM, podemos usar
una lista de ndice implcito ya que los atributos estn
definidos sobre el conjunto de ndices. Usando la
indexacin implcita, podemos revisar nuestras reescribir
nuestras expresiones como:
THE_MIN_OF_X = @MIN( SET_A: X);
THE_MAX_OF_X = @MAX( SET_A: X);
En ambos casos, cuando se resuelve este modelo,
LINGO devuelve los valores mnimo y mximo esperados
de X:
Valor de la variable
THE_MIN_OF_X 1.000000
THE_MAX_OF_X 6.000000
Conjunto bucle de la funcin @FOR
La funcin @FOR es usada para generar
restricciones a travs de miembros de un
conjunto . Para ilustrar el uso de @FOR,
considere lo siguiente:
SETS:
TRUCKS : HAUL;
ENDSETS
DATA:
TRUCKS = MAC, PETERBILT, FORD, DODGE;
ENDDATA
En concreto, tenemos un conjunto primitivo de
cuatro camiones con un solo atributo titulado
Haul. Si el atributo HAUL se utiliza para denotar
el valor de arrastre/carga de camiones,
entonces podemos utilizar la funcin @ FOR
para limitar la cantidad transportada por cada
camin a 2.500 libras con la siguiente
expresin:
SETS:
OBJECT: GPM, MPG;
ENDSETS
DATA:
OBJECT = A B C D E;
GPM = .0303 .03571 .04545 .07142 .10;
ENDDATA
@FOR( OBJECT( I):
MPG( I) = 1 / GPM( I)
);
Resolviendo este modelo da los
siguientes valores para las
reciprocas:
Variable Value
MPG( A) 33.00330
MPG( B) 28.00336
MPG( C) 22.00220
MPG( D) 14.00168
MPG( E) 10.00000
Conjunto de funciones de bucle anidadas
Simplificando, obtenemos:
START( 4) + START( 3) +
START( 2) + START( 1) +
START( 0) >= REQUIRED( 4);
Es el trmino STAR (0) que est en la raz de
nuestro problema. START se define para los
das 1 a 7. START (0) no existe. Un ndice de 0
en el START se considera "fuera de rango".
SETS:
DAYS : REQUIRED, START;
ENDSETS
DATA:
DAYS = MON TUE WED THU FRI SAT SUN;
REQUIRED = 20 16 13 16 19 14 12;
ENDDATA
MIN = @SUM( DAYS( I): START( I));
@FOR( DAYS( J):
@SUM( DAYS( I) | I #LE# 5:
START( @WRAP( J - I + 1, 7))) >= REQUIRED( J)
);
Resolviendo este modelo, obtenemos el reporte:
Optimal solution found at step: 8
Objective value: 22.00000
Variable Value Reduced Cost
REQUIRED( MON) 20.00000 0.0000000
REQUIRED( TUE) 16.00000 0.0000000
REQUIRED( WED) 13.00000 0.0000000
REQUIRED( THU) 16.00000 0.0000000
REQUIRED( FRI) 19.00000 0.0000000
REQUIRED( SAT) 14.00000 0.0000000
REQUIRED( SUN) 12.00000 0.0000000
START( MON) 8.00000 0.0000000
START( TUE) 2.00000 0.0000000
START( WED) 0.00000 0.0000000
START( THU) 6.00000 0.0000000
START( FRI) 3.00000 0.0000000
START( SAT) 3.00000 0.0000000
START( SUN) 0.00000 0.0000000
Row Slack or Surplus Dual Price
1 22.00000 1.000000
2 0.0000000 -0.2000000
3 0.0000000 -0.2000000
4 0.0000000 -0.2000000
5 0.0000000 -0.2000000
6 0.0000000 -0.2000000
7 0.0000000 -0.2000000
8 0.0000000 -0.2000000
El valor objetivo de 22 significa la necesidad de contratar 22
empleados. Se tendr la siguiente programacin:
Mon Tue Wed Thu Fri Sat Sun
Start 8 2 0 6 3 3 0
Si vemos el excedente en nuestra fila requerimientos de personal
(filas 2 - 7), vemos los valores de holgura son 0 en todos los das.
Esto significa que no hay empleados extra en ningn da.
Ejemplo Set Derivado Denso
El Problema
Chess Snackfoods Co. Vende cuatro marcas de frutos
secos. Las cuatro marcas se llaman el Pawn, Knight ,
Bishop y King. Cada marca tiene una relacin especfica
de man y anacardos. La siguiente tabla muestra el
nmero de onzas de las dos nueces que tiene cada libra
de cada marca y el precio al que la empresa puede
vender una libra de cada marca:
Pawn Knight Bishop King
Peanuts (oz.) 15 10 6 2
Cashews (oz.) 1 6 10 14
Selling Price ($/lb.) 2 3 4 5
Chess ha contractado con proveedores para recibir por
da: 750 libras de man y 250 libras de anacardos.
Nuestro problema es determinar el nmero de libras de
cada marca a producir cada da para maximizar el
ingreso total sin exceder la oferta disponibles de nueces.
La Formulacin
SETS:
NUTS : SUPPLY;
BRANDS : PRICE, PRODUCE;
FORMULA( NUTS, BRANDS): OUNCES;
ENDSETS
DATA:
NUTS = PEANUTS, CASHEWS;
SUPPLY = 750 250;
BRANDS = PAWN, KNIGHT, BISHOP, KING;
PRICE = 2 3 4 5;
OUNCES = 15 10 6 2 !(Peanuts);
1 6 10 14; !(Cashews);
ENDDATA
MAX = @SUM( BRANDS( I):
PRICE( I) * PRODUCE( I));
@FOR( NUTS( I):
@SUM( BRANDS( J):
OUNCES( I, J) * PRODUCE(J)/16) <= SUPPLY(I)
);
Un reporte de solucin abreviada del modelo es: