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

@ini = qw (1 2 3 4);      # datos de los trabajadores por categorias, período 0
@fin = qw (5 6 7 8);      # idem. período n, el último
$transiciones = 3;        # número de períodos de transición entre ambos
$int = .04;               # el tipo de interés

if ($#ini != $#fin) { die "diferentes números de categorias" };

open FIL, ">", "sikula1.in" or die "Cannot open: $!";

print FIL "Min: ";
for ($j=1;$j<=$transiciones;$j++) {
    $coef[$j] = 1/((1+$int)**$j) ;
    for ($i=0; $i<=$#ini ; $i++){
         print FIL "+",$coef[$j],"* x$j$i";
    }
}
print FIL ";\n";

for ($j=1;$j<=$transiciones;$j++){
    for ($i=0; $i<=$#ini ; $i++){
	 print FIL "x$j$i-",$fin[$i],"<=",abs($ini[$i]-$fin[$i])/$j,";\n";
	 print FIL "x$j$i-",$fin[$i],">=",-abs($ini[$i]-$fin[$i])/$j,";\n";
	 #if ($i>0){  
	 #   print FIL "x",$j,$i,"<=x",$j-1,$i,"+x",$j-1,$i-1,";\n";
	 #}
    }
}

print FIL "int ";
for ($j=1;$j<=$transiciones;$j++) {
    for ($i=0; $i<=$#ini ; $i++){
         print FIL "x$j$i";
	 if ($j<$transiciones || $i<$#ini) {
	       print FIL ","; 
	 }else{
	       print FIL ";\n";
	 }
    }
}

close (FIL);
system "lp_solve <sikula1.in > sikula1.out";
__END__
