diff --git a/core/src/main/java/ru/trader/analysis/VendorsGraph.java b/core/src/main/java/ru/trader/analysis/VendorsGraph.java index e28539e..ba43637 100644 --- a/core/src/main/java/ru/trader/analysis/VendorsGraph.java +++ b/core/src/main/java/ru/trader/analysis/VendorsGraph.java @@ -533,6 +533,18 @@ public class VendorsGraph extends ConnectibleGraph { return edge.getInstance(fuel, balance); } + @Override + public double getWeight() { + if (weight == null){ + Edge edge = getEdge(); + Optional> head = getHead(); + weight = (head.isPresent() ? ((VendorsTraversalEntry)head.get()).getWeight() : 0) + (edge != null ? edge.getWeight() : 0); + if (edge != null){ + weight = weight / (1+Math.floorDiv(profile.getLands() - this.size(),this.size())); + } + } + return weight; + } } diff --git a/core/src/main/java/ru/trader/analysis/graph/Crawler.java b/core/src/main/java/ru/trader/analysis/graph/Crawler.java index ddce30a..9de9064 100644 --- a/core/src/main/java/ru/trader/analysis/graph/Crawler.java +++ b/core/src/main/java/ru/trader/analysis/graph/Crawler.java @@ -334,7 +334,7 @@ public class Crawler { while (!cur.isRoot()){ Edge edge = cur.getEdge(); Edge oEdge = oCur.getEdge(); - cmp = Double.compare(oEdge.weight, edge.weight); + cmp = oEdge.compareTo(edge); if (cmp != 0) return cmp; cur = (CostTraversal) cur.getHead().get(); oCur = (CostTraversal) oCur.getHead().get(); @@ -568,7 +568,7 @@ public class Crawler { } protected class CostTraversalEntry extends TraversalEntry implements CostTraversal, Comparable{ - private Double weight; + protected Double weight; protected CostTraversalEntry(Vertex vertex) { super(vertex);