#!/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.out"; __END__