#!/usr/local/bin/perl -W

$P = 11;  # pisos, desde 0
$N = 2;  # ascensores
$V = 22*1.5*$N; # viajes/día

$localiz1=0;
$localiz2=6;
$last=1;
# antiguo

for (1..365){
    for (1..$V){
	if (rand>.5) { call_old(0); }
	else { call_old(1+int rand($P)); }
    }
}
print "La distancia antigua es $D\n";
print "y el tiempo de espera es de $timeold\n";

$D=0;
$localiz1=0;
$localiz2=6;
# nuevo

for (1..365){
    for (1..$V){
	if (rand>.5) { call_new(0); }
	else { call_new(1+int rand($P)); }
    }
}
print "La distancia nueva es $D\n";
print "y el tiempo de espera es de $timenew\n";

sub call_old{
    my $piso = shift;
    if ($piso > 0) { $destination = 0; }
    else { $destination = 1+int rand($P); }
    
    if ($last==1){ $last=2; }else { $last=1; } 
    
    if ($piso == $localiz1 || $piso == $localiz2){
	$D += abs($piso-$destination);
	$timeold += 0;
	if ($piso == $localiz1){
	    $localiz1=$destination;
	}else{ $localiz2=$destination; }
    }else{
	if ($last==1){
	    $D += abs ($localiz2-$piso)+ abs ($piso - $destination);
	    $timeold += abs($localiz2-$piso);
	    $localiz2 = $destination;
	}else{
	    $D += abs ($localiz1-$piso)+ abs ($piso - $destination);
	    $timeold += abs($localiz1-$piso);
	    $localiz1 = $destination;
	}
    }
    return ; 
}

sub call_new{
    my $piso = shift;
    if ($piso > 0) { $destination = 0; }
    else { $destination = 1+int rand($P); }
    
    if (abs($localiz1-$piso) < abs($localiz2-$piso)){
	$D += abs ($localiz1-$piso)+ abs ($piso -$destination);
	$timenew += abs($localiz1-$piso);
	if (abs($destination-0) < abs($destination-6)){
	    $D+= abs ($destination-0);
	    $localiz1 = 0;
	}else{
	    $D += abs ($destination-6);
	    $localiz1 = 6;
	}
    }else{
	$D += abs ($localiz2-$piso)+ abs ($piso -$destination);
	$timenew += abs($localiz2-$piso);
	if (abs($destination-0) < abs($destination-6)){
	    $D+= abs ($destination-0);
	    $localiz2 = 0;
	}else{
	    $D += abs ($destination-6);
	    $localiz2 = 6;
	}
    }
    return ;
}



__END__


Esta es una simulación muy burda donde se compara dos ascensores antigüos
  con dos nuevos. Los antigüos funcionan cada vez uno sí, uno no, alternándose
  mientras que los nuevos se mueven solos después de cada servicio a los 
  pisos 0 y 6. Tras la simulación se puede observar que a igualdad de velocidad
  los nuevos tienen más desplazamientos pero menos tiempo de espera al 
  ascensor por los usuarios.
  
