chiark
/
gitweb
/
~yarrgweb
/
ypp-sc-tools.web-test.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Limit gems to 25 per leg
[ypp-sc-tools.web-test.git]
/
yarrg
/
web
/
routetrade
diff --git
a/yarrg/web/routetrade
b/yarrg/web/routetrade
index 1b7c8c945bb312b0c7073eb5de1e8361910cd148..9e9256a72529cdb83088032a16a9d5ff1fca7409 100644
(file)
--- a/
yarrg/web/routetrade
+++ b/
yarrg/web/routetrade
@@
-49,6
+49,7
@@
$quri
my $loss_per_league= defined $routeparams->{LossPerLeaguePct}
? $routeparams->{LossPerLeaguePct}*0.01 : 1e-7;
my $loss_per_delay_slot= 1e-8;
my $loss_per_league= defined $routeparams->{LossPerLeaguePct}
? $routeparams->{LossPerLeaguePct}*0.01 : 1e-7;
my $loss_per_delay_slot= 1e-8;
+my $max_gems= 25;
my $minprofit= $routeparams->{MinProfit} || 0;
my $minprofit= $routeparams->{MinProfit} || 0;
@@
-147,6
+148,7
@@
my $stmt= "
commods.ordval ordval,
commods.posinclass posinclass,
commods.commodclassid commodclassid,
commods.ordval ordval,
commods.posinclass posinclass,
commods.commodclassid commodclassid,
+ commods.flags flags,
dist dist,
buy.price - sell.price unitprofit
FROM commods
dist dist,
buy.price - sell.price unitprofit
FROM commods
@@
-292,6
+294,8
@@
my $oppo_key= sub {
return join '_', map { $f->{$_} } qw(org_id dst_id commodid);
};
return join '_', map { $f->{$_} } qw(org_id dst_id commodid);
};
+my $any_previous_suppression= 0;
+
foreach my $f (@flows) {
$f->{MaxQty}= $f->{'org_qty_agg'} < $f->{'dst_qty_agg'}
foreach my $f (@flows) {
$f->{MaxQty}= $f->{'org_qty_agg'} < $f->{'dst_qty_agg'}
@@
-390,6
+394,7
@@
foreach my $f (@flows) {
}
} else {
if (!defined $qa->{"T$f->{UidShort}"}) {
}
} else {
if (!defined $qa->{"T$f->{UidShort}"}) {
+ $any_previous_suppression= 1;
$f->{Suppress}= 1;
}
}
$f->{Suppress}= 1;
}
}
@@
-413,13
+418,24
@@
foreach my $f (@flows) {
}
</%perl>
}
</%perl>
-% my $optimise= $specific;
-% if (!$optimise) {
+% my $optimise= 1;
-<p>
% if (!$specific) {
% if (!$specific) {
+% $optimise= 0;
Route contains archipelago(es), not just specific islands.
Route contains archipelago(es), not just specific islands.
+% } elsif (!@subflows) {
+% $optimise= 0;
+% if ($any_previous_suppression) {
+All available trades deselected.
+% } else {
+No available trades meet the specified minimum trade value, so
+all available trades deselected.
+% }
% }
% }
+
+% if (!$optimise) {
+
+<p>
Therefore, optimal voyage trade plan not calculated.
% } else { # ========== OPTMISATION ==========
Therefore, optimal voyage trade plan not calculated.
% } else { # ========== OPTMISATION ==========
@@
-512,6
+528,14
@@
foreach my $ci (0..($#islandids-1)) {
$applylimit->('mass', sub { $_[0]{'unitmass'} *1e-3 });
$applylimit->('volume', sub { $_[0]{'unitvolume'}*1e-3 });
$applylimit->('capital', sub { $_[0]{'org_price'} });
$applylimit->('mass', sub { $_[0]{'unitmass'} *1e-3 });
$applylimit->('volume', sub { $_[0]{'unitvolume'}*1e-3 });
$applylimit->('capital', sub { $_[0]{'org_price'} });
+
+ my @gem_subflows= grep { $_->{Flow}{flags} =~ m/g/ } @rel_subflows;
+ if (@gem_subflows) {
+ $cplex .= "
+ ". sprintf("%-10s","gems_$ci:")." ".
+ join(" + ", map { $_->{Var} } @gem_subflows). " <= $max_gems";
+ }
+
$cplex.= "\n";
}
$cplex.= "\n";
}