chiark / gitweb /
Use more glpk's more advanced MIP solver and enable various options; limit cpu
[ypp-sc-tools.db-live.git] / yarrg / web / routetrade
index 0da1fd80a81929454605e46df2064d56d26d3083..199101728344aa9329b343d1d7c5b6599e0f5fdf 100644 (file)
@@ -41,6 +41,7 @@ $qa
 $max_mass
 $max_volume
 $lossperleaguepct
+$max_capital
 </%args>
 <&| script &>
   da_pageload= Date.now();
@@ -451,6 +452,12 @@ foreach my $ci (0..($#islandids-1)) {
        join(" + ", map { ($_->{"unit$mv"}*1e-3).' f'.$_->{Ix} } @rel_flows).
        " <= $max";
        }
+       if (defined $max_capital) {
+          $cplex .= "
+   ". sprintf("%-10s","capital_$ci:")." ".
+       join(" + ", map { ($_->{"org_price"}).' f'.$_->{Ix} } @rel_flows).
+        " <= $max_capital";
+        }
        $cplex.= "\n";
 }
 
@@ -481,7 +488,8 @@ if ($qa->{'debug'}) {
        my $input= pipethrough_prep();
        print $input $cplex or die $!;
        my $output= pipethrough_run_along($input, undef, 'glpsol',
-               qw(glpsol --cpxlp /dev/stdin -o /dev/stdout));
+               qw(glpsol --tmlim 2 --memlim 5 --intopt --cuts --bfs
+                         --cpxlp /dev/stdin -o /dev/stdout));
        print "<pre>\n" if $qa->{'debug'};
        my $found_section= 0;
        my $glpsol_out= '';