#!/usr/local/bin/perl -W $C = 50; # coste unitario de compra $D = 1000; # demanda anual en unidades $S = 3; # coste fijo por ordenar un pedido $i = 0.05; # tipo de interés para calcular el coste de inventario $H = $C*$i; # coste unitario de tener inventario $Q = sqrt(2*$D*$S/$H); # Qopt lote óptimo según modelo de Wilson $Cd = 48; # coste unitario con descuento procedente de una oferta $Qd = 5; # lote en unidades de la oferta $Hd = $Cd*$i; $CC = $C*$D; # coste de la compra anual $CS = $S*$D/$Q; # coste de los pedidos al año $CH = $H*$Q/2; # coste anual del inventario medio $CT = $CC + $CS + $CH; # coste total $CTd_ant = 9e99; print "Q -> coste\n"; for ($i = $Qd; ; $i+= $Qd){ $CCd = $Cd*$D; $CSd = $S*$D/$i; $CHd = $Hd*$i/2; $CTd = $CCd + $CSd + $CHd; print "$i -> $CTd\n"; last if ($CTd>$CTd_ant); $CTd_ant = $CTd; $count++; } $j = $i -$Qd; print "Coste total (EOQ=$Q) = $CT\n"; print "Coste por lotes descuento = $CTd_ant\n"; if ($CTd_ant < $CT){ print "Cómprese según la oferta con descuento, $j ($count x $Qd)\n"; print "aproximadamente cada ", int(365*$j/$D), " días\n"; }else{ print "Comprar $Q\n"; print "aproximadamente cada ", int(365*$Q/$D), " días\n"; } __END__