da_pageload= Date.now();
</&script>
-% if (defined $max_mass || defined $max_volume) {
-<strong>WARNING - VESSEL CAPACITY LIMIT NOT YET IMPLEMENTED</strong>
-<p>
-% }
-
<%perl>
my $loss_per_league= defined $lossperleaguepct ? $lossperleaguepct*0.01 : 1e-7;
foreach my $cstname (sort keys %avail_csts) {
my $c= $avail_csts{$cstname};
$cplex .= "
- ". sprintf("%-30s","$cstname:")." ".
+ ". sprintf("%-30s","$cstname:")." ".
join("+", @{ $c->{Flows} }).
" <= ".$c->{Qty}."\n";
}
+foreach my $ci (0..($#islandids-1)) {
+ my @rel_flows;
+ foreach my $f (@flows) {
+ next if $f->{Suppress};
+ next if $f->{'org_id'} == $f->{'dst_id'};
+ next unless grep { $f->{'org_id'} == $_ }
+ @islandids[0..$ci];
+ next unless grep { $f->{'dst_id'} == $_ }
+ @islandids[$ci+1..@islandids-1];
+ push @rel_flows, $f;
+print " RELEVANT $ci $f->{Ix} ";
+ }
+print " RELEVANT $ci COUNT ".scalar(@rel_flows)." ";
+ next unless @rel_flows;
+ foreach my $mv (qw(mass volume)) {
+ my $max_vn= "max_$mv";
+ my $max= $mv eq 'mass' ? $max_mass : $max_volume;
+ next unless defined $max;
+print " DEFINED MAX $mv $max ";
+ $cplex .= "
+ ". sprintf("%-10s","${mv}_$ci:")." ".
+ join(" + ", map { ($_->{"unit$mv"}*1e-3).' f'.$_->{Ix} } @rel_flows).
+ " <= $max";
+ }
+ $cplex.= "\n";
+}
+
$cplex.= "
Bounds
".(join "
", map { "$_->{Var} >= 0" } @flows)."
+";
+
+$cplex.= "
+Integer
+ ".(join "
+ ", map { "f$_" } (0..$#flows))."
+
End
";
while (<$output>) {
$glpsol_out.= $_;
print encode_entities($_) if $qa->{'debug'};
- if (m/^\s*No\.\s+Column name\s+St\s+Activity\s/) {
+ if (m/^\s*No\.\s+Column name\s+(?:St\s+)?Activity\s/) {
die if $found_section>0;
$found_section= 1;
next;