From 984b19f182f90e38f1ba39b4ffdbda747ce63517 Mon Sep 17 00:00:00 2001 From: Mo Date: Thu, 22 Oct 2015 22:30:59 +0300 Subject: [PATCH] fix compute minFuel of path --- .../java/ru/trader/analysis/graph/Path.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/ru/trader/analysis/graph/Path.java b/core/src/main/java/ru/trader/analysis/graph/Path.java index c4a6132..ec7c632 100644 --- a/core/src/main/java/ru/trader/analysis/graph/Path.java +++ b/core/src/main/java/ru/trader/analysis/graph/Path.java @@ -23,31 +23,33 @@ public class Path> { Ship ship = entries.get(0).getShip(); double fuel = ship.getTank(); minFuel = 0; maxFuel = 0; fuelCost = 0; refillCount = 0; - boolean adding = true; + int minTo = 0; for (int i = entries.size() - 1; i >= 0; i--) { ConnectibleGraph.BuildEdge edge = entries.get(i); if (i < entries.size() - 1 && edge.getSource().getEntry().canRefill()){ - adding = false; + if (minTo == 0) minTo = i+1; fuel = edge.getMaxFuel(); } if (fuel < 0 || fuel < edge.getMinFuel()){ minFuel = ship.getTank()+1; + minTo = -1; } double cost = edge.getFuelCost(fuel); fuelCost += cost; fuel -= cost; - if (adding) { - minFuel += edge.getMinFuel(); - } } maxFuel = -1; - for (ConnectibleGraph.BuildEdge edge : entries) { - if (maxFuel != -1){ + for (int i = 0; i < entries.size(); i++) { + ConnectibleGraph.BuildEdge edge = entries.get(i); + if (maxFuel != -1) { maxFuel += edge.getFuelCost(maxFuel + edge.getMinFuel()); } - if (maxFuel == -1 || edge.getMaxFuel() < maxFuel){ + if (maxFuel == -1 || edge.getMaxFuel() < maxFuel) { maxFuel = edge.getMaxFuel(); } + if (minTo != -1 && i >= minTo) { + minFuel += edge.getFuelCost(minFuel + edge.getMinFuel()); + } } refillCount = getRefillCount(ship.getTank()); }