chiark
/
gitweb
/
~yarrgweb
/
ypp-sc-tools.db-test.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Implement percentage loss per league
[ypp-sc-tools.db-test.git]
/
yarrg
/
web
/
routetrade
diff --git
a/yarrg/web/routetrade
b/yarrg/web/routetrade
index 7e1a06e6b90fd5cd872bb5ca78048667a3018a6e..831a1b1a26a2d46f051ec4265f8089cb13fbf7da 100644
(file)
--- a/
yarrg/web/routetrade
+++ b/
yarrg/web/routetrade
@@
-40,6
+40,7
@@
$dbh
$qa
$max_mass
$max_volume
$qa
$max_mass
$max_volume
+$lossperleaguepct
</%args>
<&| script &>
da_pageload= Date.now();
</%args>
<&| script &>
da_pageload= Date.now();
@@
-52,8
+53,9
@@
$max_volume
<%perl>
<%perl>
+my $loss_per_league= defined $lossperleaguepct ? $lossperleaguepct*0.01 : 1e-7;
+
my $now= time;
my $now= time;
-my $loss_per_league= 1e-7;
my @flow_conds;
my @query_params;
my @flow_conds;
my @query_params;
@@
-372,7
+374,7
@@
die "$cmpu $uue ?" if length $cmpu > 20;
<p>
% if (@islandids<=1) {
<p>
% if (@islandids<=1) {
-Route
is trivial
.
+Route
contains only one location
.
% }
% if (!$specific) {
Route contains archipelago(es), not just specific islands.
% }
% if (!$specific) {
Route contains archipelago(es), not just specific islands.
@@
-390,9
+392,9
@@
my $cplex= "
Maximize
totalprofit:
Maximize
totalprofit:
- ".(join "
+
+ ".(join "
", map {
", map {
- sprintf "%.20f %s", $_->{ExpectedUnitProfit}, $_->{Var}
+ sprintf "%
+
.20f %s", $_->{ExpectedUnitProfit}, $_->{Var}
} @flows)."
Subject To
} @flows)."
Subject To
@@
-479,7
+481,14
@@
if ($qa->{'debug'}) {
die $prerr unless $found_section;
};
die $prerr unless $found_section;
};
-$addcols->({ DoReverse => 1 }, qw(
+$addcols->({ DoReverse => 1, Special => sub {
+ my ($flow,$col,$v,$spec) = @_;
+ if ($flow->{ExpectedUnitProfit} < 0) {
+ $spec->{Span}= 3;
+ $spec->{String}= '(Small margin)';
+ $spec->{Align}= 'align=center';
+ }
+} }, qw(
OptQty
));
$addcols->({ Total => 0, DoReverse => 1 }, qw(
OptQty
));
$addcols->({ Total => 0, DoReverse => 1 }, qw(
@@
-558,16
+567,25
@@
$addcols->({ Total => 0, DoReverse => 1 }, qw(
<td><input type=hidden name=R<% $flow->{UidShort} %> value="">
<input type=checkbox name=T<% $flow->{UidShort} %> value=""
<% $flow->{Suppress} ? '' : 'checked' %> >
<td><input type=hidden name=R<% $flow->{UidShort} %> value="">
<input type=checkbox name=T<% $flow->{UidShort} %> value=""
<% $flow->{Suppress} ? '' : 'checked' %> >
-% foreach my $ci (1..$#cols) {
+% my $ci= 1;
+% while ($ci < @cols) {
% my $col= $cols[$ci];
% my $col= $cols[$ci];
+% my $spec= {
+% Span => 1,
+% Align => ($col->{Text} ? '' : 'align=right')
+% };
% my $v= $flow->{$col->{Name}};
% my $v= $flow->{$col->{Name}};
+% if ($col->{Special}) { $col->{Special}($flow,$col,$v,$spec); }
% $col->{Total} += $v
% if defined $col->{Total} and not $flow->{Suppress};
% $v='' if !$col->{Text} && !$v;
% my $sortkey= $col->{SortColKey} ?
% $flow->{$col->{SortColKey}} : $v;
% $ts_sortkeys{$ci}{$rowid}= $sortkey;
% $col->{Total} += $v
% if defined $col->{Total} and not $flow->{Suppress};
% $v='' if !$col->{Text} && !$v;
% my $sortkey= $col->{SortColKey} ?
% $flow->{$col->{SortColKey}} : $v;
% $ts_sortkeys{$ci}{$rowid}= $sortkey;
-<td <% $col->{Text} ? '' : 'align=right' %>><% $v |h %>
+<td <% $spec->{Span} ? "colspan=$spec->{Span}" : ''
+ %> <% $spec->{Align}
+ %>><% exists $spec->{String} ? $spec->{String} : $v |h %>
+% $ci += $spec->{Span};
% }
% }
<tr id="trades_total">
% }
% }
<tr id="trades_total">