You are on page 1of 52

OPTIMIZACION CON LINGO

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);

Nota: @BIN: variables con valores de 0 o 1


@GIN: variables con valores0 , 1, 2 ,3 etc
SOLUCIN:
Optimal solution found at step: 1
Objective value: 7.000000
Branch count: 0
Variable Value Reduced Cost
TOM 1.000000 -4.000000
DICK 1.000000 -3.000000
HARRY 0.0000000 -2.000000
Row Slack or Surplus Dual Price
1 7.000000 1.000000
2 2.500000 0.0000000
3 0.1000000 0.0000000
ENFOQUE CONSTRUCTIVO
Deglo Toys ha estado fabricando una lnea de bloques
constructivos de precisin para nios por varios aos.

Deglo se enfrenta al problema estndar de fin de ao


conocido como el problema de generacin de
resultados. Se trata de introducir una nueva lnea de
bloques de construccin que brillan en la oscuridad.

Por lo tanto, les gustara agotar sus inventarios de la


antigua tecnologa antes de introducir la nueva lnea.
Los inventarios antiguos consisten en 19.900 bloques de
4-hoyos y 29.700 bloques de 8-hoyos. Estos inventarios
pueden ser vendidos en forma de dos kits diferentes: el
maestro constructor y el constructor del imperio.
El objetivo es maximizar los ingresos de la venta
de estos dos kits. El kit de Maestro se vende por
$ 16.95, y el kit del imperio se vende por $
24.95.

El kit Maestro est compuesto por 30 bloques de


4-hoyos ms de 40 bloques de 8-hoyos.

El kit del imperio se compone de 40 bloques de 4-


hoyos, adems de 85 bloques de 8-hoyos.
Cul es un modelo adecuado de este
problema?
SOLUCIN
El proceso para nuestro problema ejemplo sera el siguiente:

a) Las variables de decisin esenciales son los siguientes:


M = nmero de Kits Maestros constructores para montar y
E = nmero de kits de Imperio constructor de montar.
b) La funcin objetivo es maximizar los ingresos por ventas (es decir,
maximizar 16,95 M + 24.95E).

a) Si alguien nos da una propuesta de solucin (es decir, los valores


de M y E), debera comprobarse su viabilidad mediante la
comprobacin de que:
i. el nmero de bloques de 4-hoyos que se utiliza <= 19.900 y
ii. el nmero de bloques de 8 hoyos que se utiliza <= 29.700.

Simblicamente, o algebraicamente, esto es


30M + 40E <= 19,900
40M + 85E <= 29,700
En formato LINGO, la formulacin es:
MAX = 16.95 * M + 24.95 * E;
30 * M + 40 * E <= 19900;
40 * M + 85 * E <= 29700;
Con la solucin:
Optimal solution found at step: 0
Objective value: 11478.50
Variable Value Reduced Cost
M 530.0000 0.0000000
E 100.0000 0.0000000
Row Slack or Surplus Dual Price
1 11478.50 1.000000
2 0.0000000 0.4660526
3 0.0000000 0.7421052E-01

As, deberamos producir 530 Kits Maestros Constructores


and 100 Kits Construtores del Imperio.
Sets
La caracterstica ms poderosa de
LINGO es su capacidad para modelar
sistemas de gran tamao. El concepto
clave que proporciona este poder es la
idea de un conjunto de objetos similares.
Un modelo de LINGO de un sistema
grande, contar con tres secciones:
1) una seccin Sets (Conjuntos),
2) una seccin de Data (Data), y
3) una seccin model equations
(ecuaciones modelo).
La seccin SETS describe las estructuras
de datos que deben utilizarse para
resolver una cierta clase de problemas.
La seccin de DATA proporciona los datos
para "poblar" las estructuras de datos.
La seccin de MODEL EQUATIONS
describe las relaciones entre las diferentes
piezas de datos y nuestras decisiones.
Seccin Data
Similar a la seccin SETS, la seccin DATA
empieza con la palabra clave DATA: (incluyendo
los dos puntos) y termina con la palabra clave
ENDDATA. En la seccin DATA, usted coloca
declaraciones para inicializar tanto los atributos
de los miembros de un set que defini en la
seccin SETS o incluso los miembros de set .
Estas expresiones tienen la sintaxis:
attribute_list = value_list;
o
set_name = member_list;
El attribute_list contiene los nombres de los atributos que
desee para inicializar, opcionalmente separados por comas.
Si hay ms de un nombre de atributo en el lado izquierdo de
la instruccin, entonces , todos los atributos debe estar
asociado con el mismo Set . El value_list contiene los
valores que desea asignar a los atributos de la attribute_list,
opcionalmente separados por comas. Consideremos el
siguiente ejemplo:
SETS:
SET1: X, Y;
ENDSETS
DATA:
SET1 = M1, M2, M3;
X = 1 2 3;
Y = 4 5 6;
ENDDATA
Tenemos dos atributos, X e Y, que se define en el
conjunto SET1 . Los tres valores de X se establece en 1,
2 y 3, mientras que Y se establece en 4, 5, y 6. Tambin
podramos haber utilizado el compuesto siguiente
declaracin de datos para el mismo fin:
SETS:
SET1: X, Y;
ENDSETS
DATA:
SET1 X Y =
M1 1 4
M2 2 5
M3 3 6;
ENDDATA
La seccin de datos tambin puede usarse para
especificar los miembros de un conjunto derivado. El
siguiente ilustra cmo especificar miembros de un
conjunto situado en una seccin DATA y cmo
especificar un conjunto derivado escaso/poco denso.

Este ejemplo tambin especifica los valores para el


atributo VOLUME , aunque que no se requiere:
SETS:
PRODUCT ;
MACHINE ;
WEEK ;
ALLOWED( PRODUCT, MACHINE, WEEK): VOLUME;
ENDSETS
DATA:
PRODUCT = A B;
MACHINE = M N;
WEEK = 1..2;
ALLOWED, VOLUME =
A M 1 20.5
A N 2 31.3
B N 1 15.8;
ENDDATA
El conjunto ALLOWED no tiene la dotacin completa de
ocho miembros. En su lugar, ALLOWED es slo el
conjunto escaso de 3 miembros: (A, M, 1), (A, N, 2), y
(B, N 1,).
LINGO reconoce una serie de conjuntos estndar. Por
ejemplo, si se declara en una seccin DATA:
PRODUCT = 1 .. 5; entonces los miembros del conjunto
de PRODUCT, son de hecho, 1, 2, 3, 4, y 5.
Si se declara: PERIOD = Feb..May, luego, los miembros
de PERIOD sern de hecho febrero, marzo, abril y
mayo.
Otros ejemplos de conjuntos inferidos incluyen mom..
sun y thing1 .. thing12.
Si un atributo no es referido en la seccin DATA,
entonces es una decisin por default (predeterminada)
Conjunto de funciones de bucle (Looping)

El conjunto de funciones de bucle le permiten iterar


todos los miembros de un conjunto para realizar alguna
operacin. Hay cuatro funciones de ajuste de bucle en
LINGO. Los nombres de las funciones y sus usos son:
Funciones y Uso de Funciones
@ FOR utilizada para generar restricciones sobre los
miembros de un conjunto.
@ SUM Calcula la suma de una expresin sobre todos los
miembros de un conjunto.
@ MIN Calcula el mnimo de una expresin sobre todos los
miembros de un conjunto.
@ MAX Calcula el mximo de una expresin sobre todos
los miembros de un conjunto.
La sintaxis para un conjunto funcin bucle (looping)
es:

@loop_function ( setname [ ( set_index_list)


[ | conditional_qualifier]] : expression_list);
Conjunto funcin bucle @SUM
Considere el modelo:

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:

@FOR( TRUCKS( T): HAUL( T) <= 2500);


En este caso, podra ser instructivo para ver las
limitaciones que LINGO genera a partir de nuestra
expresin. Usted puede hacer esto mediante el uso de
los comando LINGO | Generate en Windows o
utilizando el comando GENERATE en otras
plataformas. Al ejecutar este comando, nos
encontramos con que LINGO genera las siguientes
cuatro restricciones:
HAUL( MAC) <= 2500;
HAUL( PETERBILT) <= 2500;
HAUL( FORD) <= 2500;
HAUL( DODGE) <= 2500;

Como habamos anticipado, LINGO genera una


restriccin para cada camin del conjunto para limitarlos
a una carga de 2,500 libras.
Aqu hay un modelo que usa un comando @FOR (listado
en negrita) para calcular la reciproca de cualquiera de los 5
miembros ubicados dentro del atributo GPM:

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

Es posible que necesite iterar un conjunto


(bucle) dentro de otro conjunto (otro bucle)
Cuando se define una funcin de bucle
para ser usada en el mbito de otro, lo
llamamos de anidacin. LINGO permite
anidar.
El siguiente es un ejemplo de un bucle de
@ SUM anidado dentro de un @ FOR:
! Restricciones de la demanda;
@FOR( VENDORS( J):
@SUM( WAREHOUSES( I): VOLUME( I, J)) = DEMAND( J);
);
En concreto, para cada vendedor, sumamos los envos
que van desde todos los almacenes a ese vendedor y
establecer la cantidad igual a la demanda del vendedor .

@ SUM, @ MAX, y MIN @ se pueden anidar dentro de


cualquier conjunto de funcin de bucle. La funcin @
FOR, por el contrario, slo se pueden anidar dentro de
otros programas para funciones @.
Ejemplos de Modelado Basados en Set
Suponga que conduce el Stand de Hot Dog`s Pluto, que
est abierto los siete das a la semana. Usted contrata
empleados para trabajar una semana laboral de cinco
das con dos das consecutivos de descanso. Cada
empleado recibe el mismo salario semanal. Algunos
das de la semana estn ms ocupados que los dems
y, con base en la experiencia pasada, Ud. sabe cuntos
trabajadores se necesitan en un da determinado de la
semana. En particular, su pronstico de necesidades de
personal es:
Da Mon Tue Wed Thu Fri Sat Sun
Req Personal 20 16 13 16 19 14 12
Es necesario determinar cuntos empleados se requiere
para comenzar cada da de la semana con el fin de
minimizar el nmero total de empleados necesarios, sin
dejar de cumplir o exceder las necesidades de personal
de cada da de la semana.
La Formulacin
La primera cuestin a tener en cuenta al
construir un modelo basado en conjuntos (Set)
es, "Cules son los grupos relevantes y sus
atributos?". En este modelo, tenemos un nico
conjunto primitivo, los das de la semana. Nos
ocuparemos de dos atributos del set DAYS. El
primero es el nmero de personal requerido en
cada da. El segundo es la variable de decisin
de la cantidad de personal para iniciar en cada
da. Si llamamos a estos atributos REQUIRED y
START, entonces podemos escribir las
secciones SETS y DATA como:
SETS:
DAYS : REQUIRED, START;
ENDSETS
DATA:
DAYS = MON TUE WED THU FRI SAT SUN;
REQUIRED = 20 16 13 16 19 14 12;
ENDDATA
Ahora estamos en el punto donde
podemos comenzar a introducir relaciones
matemticas del modelo (es decir, el
objetivo y restricciones). Empecemos por
escribir el objetivo: minimizar el nmero
total de empleados que comienzan
durante la semana. En la notacin
matemtica estndar, se puede escribir:
El comando equivalente de LINGO es muy similar.
Substituyendo "MIN= por "Minimize:" y "@SUM( DAYS(
I): por i y tenemos:
MIN = @SUM( DAYS( I): START( I));

Ahora, lo nico que queda es deducir las restricciones.


Slo hay un conjunto de restricciones en este modelo.
Es decir, debemos contar con suficiente personal de
guardia todos los das para cumplir o exceder las
necesidades de personal. Es decir, lo que queremos es:

para cada da: El personal de guardia hoy Personal


requerido para hoy,
The left-hand side, Staff on duty today takes a little
thought. Given that all employees are on a five-day
on/two day off schedule, the number of employees
working today is:
El lado derecho de esta expresin, el personal requerido
hoy, es dado (dato). Es simplemente la cantidad
REQUIRED (I).
El lado izquierdo, el personal en servicio nos toma
pensar un poco. Teniendo en cuenta que todos los
empleados estn en una programacin de cinco das
presentes/por dos das de descanso, el nmero de
empleados que trabajan hoy es:
Number working today = Number starting today +
Number starting 1 day ago + Number starting 2 days ago +
Number starting 3 days ago + Number starting 4 days ago.
En otras palabras, para calcular el nmero de
empleados que trabajan hoy, sumamos el nmero de
personas a partir de hoy, ms los que empiezan en los
ltimos cuatro das. Los empleados a partir de cinco y
seis das atrs no cuentan porque estn en sus das
libres. Por lo tanto, usando la notacin matemtica, lo
que se podra considerar hacer es aadir la restriccin:

Traduciendo a la notacin LINGO, podemos escribir esto


como :

@FOR( DAYS( J):


@SUM( DAYS( I) | I #LE# 5: START( J - I + 1))
>= REQUIRED( J)
);
Es decir, la notacin de LINGO dice, para cada da de la
semana, la suma de los empleados que comienzan el
perodo de cinco das empezaron cuatro das atrs y
que terminan hoy debe ser mayor que o igual a la
cantidad necesaria de personal para el da. Esto parece
correcto, pero hay un pequeo problema. Si tratamos de
resolver nuestro modelo con esta restriccin, se obtiene
el mensaje de error:
Para ver porqu obtenemos este mensaje de error,
considere que ocurre un Jueves . Jueves tiene un ndice
de 4 en nuestro set DAYS. Como escribimos, la
restriccin de personal para el jueves ser:
START( 4 - 1 + 1) + START( 4 - 2 + 1) +
START( 4 - 3 + 1) + START( 4 - 4 + 1) +
START( 4 - 5 + 1) >= REQUIRED( 4);

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".

Lo que nos gustara hacer es tener los ndices


de menos-que-o-igual-a 0, que lo envuelvan
hasta el final de la semana. Especficamente, 0
correspondera a Domingo (7), -1 a sbado (6),
y as sucesivamente. LINGO tiene una funcin
que hace precisamente esto, y se llama WRAP
@.
La funcin @WRAP tiene 2 argumentos llamados
INDEX y LIMIT. Hablando formalmente, @WRAP
returna J tal que J = INDEX - K x LIMIT, donde K es un
entero tal que J est en el intervalo [1,LIMIT].
Informalmente hablando, @WRAP restar o sumar
LIMIT a INDEX hasta que cae en el rango 1 para LIMIT,
y, por lo tanto, es justo lo que necesitamos para
envolver alrededor de un ndice en modelos de
planeamiento multi-periodo .
Incorporando la funcin @WRAP, obtenemos la versin
final corregida para nuestra restriccin de personal:
@FOR( DAYS( J):
@SUM( DAYS( I) | I #LE# 5:
START( @WRAP( J - I + 1, 7))) >= REQUIRED( J)
);
La Solucin
A continuacin se muestra nuestro modelo de dotacin de
personal en su totalidad:

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:

Optimal solution found at step: 0


Objective value: 2692.308
Variable Value Reduced Cost
PRODUCE( PAWN) 769.2308 0.0000000
PRODUCE( KNIGHT) 0.0000000 0.1538461
PRODUCE( BISHOP) 0.0000000 0.7692297E-01
PRODUCE( KING) 230.7692 0.0000000

Row Slack or Surplus Dual Price


1 2692.308 1.000000
2 0.0000000 1.769231
3 0.0000000 5.461538
Esta solucin nos dice que Chess debe producir
769,2 libras de la mezcla de Pawn y 230.8 de
King para lograr ingresos totales de $ 2692,30.
Los precios duales en las filas indican que
Chess debe estar dispuesto a pagar hasta $
1,77 para una libra extra de man y de 5,46
dlares por una libra extra de anacardos.
Si, por razones de marketing, Chess decide que
debe producir por lo menos algo de Knight y
Bishop, entonces, las cifras de costos reducidos
nos dicen los ingresos se reducirn en 15,4
centavos de dlar por la primera la libra Knight
producida y los ingresos se reducir en 7,69
centavos de dlar con la primera libra de Bishop
producido.
Fin

You might also like