#!/usr/local/bin/perl -w use feature ":5.10"; # use bignum; $N //= 10; # capacidad limitada a 10 $lambda = 3; # 3 llegadas por hora $mu = 2; # 2 servicios por hora $ratio = $lambda/$mu; for $s (1..$N-1){ say "Servidores: $s"; say "Probabilidad 0 clientes: ",pi0(); for (1..$N){ say "$_ clientes: ", pi($_); } say "Lq = ",Lq()," ","Wq = ",Wq(); say "L = ", L()," ","W = ", W(); say "-"x70; sleep 1; } sub pi0 { my ($pi_1,$pi_2); for my $n (0..$s){ $pi_1 += (1/fact($n))*($ratio**$n); } for my $n ($s+1..$N){ $pi_2 += ($lambda/($mu*$s))**($n-$s); } return 1/($pi_1 + (1/fact($s))*($ratio**$s)*$pi_2); } sub pi { my $i = shift; if ($i <= $s){ return (1/fact($i))*($ratio**$i)*pi0(); }else{ return (1/(fact($s)*($s**($i-$s))))*($ratio**$i)*pi0(); } } sub Lq { my $lq; for my $n ($s+1..$N){ $lq += ($n-$s)*($lambda/($mu*$s))**($n-$s); } return (pi0()*($ratio**$s)/fact($s))*$lq; } sub Wq { return Lq()/($lambda*(1-pi($N))); } sub L { my ($L1,$L2); for my $i (0..$s-1){ $L1 += $i*pi($i); } $L1 += Lq(); for my $i (0..$s-1){ $L2+= pi($i); } return $L1+$s*(1-$L2); } sub W { return L()/($lambda*(1-pi($N))); } sub fact{ my $i = shift ; my $f = 1; for my $j (1..$i){ $f *= $j; } return $f; } __END__