From 74bf560eb5b442fd2c71e91f4bc0d907816267d1 Mon Sep 17 00:00:00 2001 From: iMoHax Date: Mon, 10 Aug 2015 12:57:19 +0300 Subject: [PATCH] save refill value in route entry --- .../main/java/ru/trader/analysis/Route.java | 2 +- .../java/ru/trader/analysis/RouteEntry.java | 14 ++++-- .../ru/trader/analysis/RouteSearcher.java | 8 ++-- .../ru/trader/analysis/RouteFillerTest.java | 46 +++++++++---------- .../ru/trader/analysis/RouteSearcherTest.java | 38 +++++++-------- .../java/ru/trader/analysis/RouteTest.java | 12 ++--- .../ru/trader/core/MarketAnalyzerTest2.java | 14 +++--- 7 files changed, 69 insertions(+), 65 deletions(-) diff --git a/core/src/main/java/ru/trader/analysis/Route.java b/core/src/main/java/ru/trader/analysis/Route.java index 2c88daf..3c8eba3 100644 --- a/core/src/main/java/ru/trader/analysis/Route.java +++ b/core/src/main/java/ru/trader/analysis/Route.java @@ -103,7 +103,7 @@ public class Route implements Comparable { entries.remove(entries.size()-1); } else { LOG.trace("Is not connected route, set refill"); - end.setRefill(true); + end.setRefill(end.getFuel()); } entries.addAll(route.entries); updateStats(); diff --git a/core/src/main/java/ru/trader/analysis/RouteEntry.java b/core/src/main/java/ru/trader/analysis/RouteEntry.java index 79c323a..3d72a5c 100644 --- a/core/src/main/java/ru/trader/analysis/RouteEntry.java +++ b/core/src/main/java/ru/trader/analysis/RouteEntry.java @@ -12,10 +12,10 @@ public class RouteEntry { private final double fuel; private final List orders; private boolean land; - private boolean refill; + private double refill; private double score; - public RouteEntry(Vendor vendor, boolean refill, double fuel, double score) { + public RouteEntry(Vendor vendor, double refill, double fuel, double score) { orders = new ArrayList<>(); this.vendor = vendor; this.refill = refill; @@ -32,10 +32,14 @@ public class RouteEntry { } public boolean isRefill() { + return refill > 0; + } + + public double getRefill(){ return refill; } - void setRefill(boolean refill) { + void setRefill(double refill) { this.refill = refill; } @@ -72,7 +76,7 @@ public class RouteEntry { } public boolean isLand(){ - return land || refill || !orders.isEmpty(); + return land || isRefill() || !orders.isEmpty(); } void setLand(boolean land) { @@ -104,7 +108,7 @@ public class RouteEntry { temp = Double.doubleToLongBits(fuel); result = 31 * result + (int) (temp ^ (temp >>> 32)); result = 31 * result + (land ? 1 : 0); - result = 31 * result + (refill ? 1 : 0); + result = 31 * result + (isRefill() ? 1 : 0); temp = Double.doubleToLongBits(score); result = 31 * result + (int) (temp ^ (temp >>> 32)); return result; diff --git a/core/src/main/java/ru/trader/analysis/RouteSearcher.java b/core/src/main/java/ru/trader/analysis/RouteSearcher.java index 9ae9afd..cbe2114 100644 --- a/core/src/main/java/ru/trader/analysis/RouteSearcher.java +++ b/core/src/main/java/ru/trader/analysis/RouteSearcher.java @@ -123,7 +123,7 @@ public class RouteSearcher { for (int k = 0; k < transitEdges.size(); k++) { ConnectibleEdge edge = transitEdges.get(k); Vendor vendor = edge.getSource().getEntry(); - RouteEntry entry = new RouteEntry(vendor, edge.isRefill(), edge.getFuelCost(), 0); + RouteEntry entry = new RouteEntry(vendor, edge.getRefill(), edge.getFuelCost(), 0); if (buyer != null && vendor.equals(buyer)) { entry.setLand(true); buyer = null; @@ -140,7 +140,7 @@ public class RouteSearcher { } } if (vEdge != null) { - RouteEntry entry = new RouteEntry(vEdge.getTarget().getEntry(), false, 0, 0); + RouteEntry entry = new RouteEntry(vEdge.getTarget().getEntry(), 0, 0, 0); if (buyer != null) entry.setLand(true); entries.add(entry); } @@ -160,10 +160,10 @@ public class RouteSearcher { for (int i = 0; i < edges.size(); i++) { ConnectibleEdge edge = (ConnectibleEdge) edges.get(i); Vendor vendor = i == 0 ? from : edge.getSource().getEntry().asTransit(); - RouteEntry entry = new RouteEntry(vendor, edge.isRefill(), edge.getFuelCost(), 0); + RouteEntry entry = new RouteEntry(vendor, edge.getRefill(), edge.getFuelCost(), 0); entries.add(entry); if (i == edges.size()-1){ - entry = new RouteEntry(to, false, 0, 0); + entry = new RouteEntry(to, 0, 0, 0); entry.setLand(true); entries.add(entry); } diff --git a/core/src/test/java/ru/trader/analysis/RouteFillerTest.java b/core/src/test/java/ru/trader/analysis/RouteFillerTest.java index 8c028c3..51e68f7 100644 --- a/core/src/test/java/ru/trader/analysis/RouteFillerTest.java +++ b/core/src/test/java/ru/trader/analysis/RouteFillerTest.java @@ -51,8 +51,8 @@ public class RouteFillerTest extends Assert { v2.addOffer(OFFER_TYPE.BUY, ITEM2, 350, -1); v2.addOffer(OFFER_TYPE.BUY, ITEM3, 400, -1); - Route route = new Route(new RouteEntry(v1, false, 0,0)); - route.add(new RouteEntry(v2, false, 0,0)); + Route route = new Route(new RouteEntry(v1, 0, 0,0)); + route.add(new RouteEntry(v2, 0, 0,0)); return route; } @@ -93,9 +93,9 @@ public class RouteFillerTest extends Assert { v3.addOffer(OFFER_TYPE.BUY, ITEM2, 350, -1); v3.addOffer(OFFER_TYPE.BUY, ITEM3, 400, -1); - Route route = new Route(new RouteEntry(v1, false, 0,0)); - route.add(new RouteEntry(v2, false, 0,0)); - route.add(new RouteEntry(v3, false, 0,0)); + Route route = new Route(new RouteEntry(v1, 0, 0,0)); + route.add(new RouteEntry(v2, 0, 0,0)); + route.add(new RouteEntry(v3, 0, 0,0)); return route; } @@ -142,10 +142,10 @@ public class RouteFillerTest extends Assert { v3.addOffer(OFFER_TYPE.BUY, ITEM1, 200, -1); v4.addOffer(OFFER_TYPE.BUY, ITEM3, 450, -1); - Route route = new Route(new RouteEntry(v1, false, 0,0)); - route.add(new RouteEntry(v2, false, 0,0)); - route.add(new RouteEntry(v3, false, 0,0)); - route.add(new RouteEntry(v4, false, 0,0)); + Route route = new Route(new RouteEntry(v1, 0, 0,0)); + route.add(new RouteEntry(v2, 0, 0,0)); + route.add(new RouteEntry(v3, 0, 0,0)); + route.add(new RouteEntry(v4, 0, 0,0)); return route; } @@ -224,11 +224,11 @@ public class RouteFillerTest extends Assert { v4.addOffer(OFFER_TYPE.BUY, ITEM3, 370, -1); v5.addOffer(OFFER_TYPE.BUY, ITEM1, 400, -1); - Route route = new Route(new RouteEntry(v1, false, 0,0)); - route.add(new RouteEntry(v2, false, 0,0)); - route.add(new RouteEntry(v3, false, 0,0)); - route.add(new RouteEntry(v4, false, 0,0)); - route.add(new RouteEntry(v5, false, 0,0)); + Route route = new Route(new RouteEntry(v1, 0, 0,0)); + route.add(new RouteEntry(v2, 0, 0,0)); + route.add(new RouteEntry(v3, 0, 0,0)); + route.add(new RouteEntry(v4, 0, 0,0)); + route.add(new RouteEntry(v5, 0, 0,0)); return route; } @@ -287,10 +287,10 @@ public class RouteFillerTest extends Assert { v3.addOffer(OFFER_TYPE.BUY, ITEM1, 200, -1); v4.addOffer(OFFER_TYPE.BUY, ITEM3, 450, -1); - Route route = new Route(new RouteEntry(v1, false, 0,0)); - route.add(new RouteEntry(v2, false, 0,0)); - route.add(new RouteEntry(v3, false, 0,0)); - route.add(new RouteEntry(v4, false, 0,0)); + Route route = new Route(new RouteEntry(v1, 0, 0,0)); + route.add(new RouteEntry(v2, 0, 0,0)); + route.add(new RouteEntry(v3, 0, 0,0)); + route.add(new RouteEntry(v4, 0, 0,0)); return route; } @@ -369,8 +369,8 @@ public class RouteFillerTest extends Assert { v2.addOffer(OFFER_TYPE.BUY, ITEM2, 225, -1); - Route route = new Route(new RouteEntry(v1, false, 0,0)); - route.add(new RouteEntry(v2, false, 0,0)); + Route route = new Route(new RouteEntry(v1, 0, 0,0)); + route.add(new RouteEntry(v2, 0, 0,0)); return route; @@ -386,9 +386,9 @@ public class RouteFillerTest extends Assert { v3.addOffer(OFFER_TYPE.BUY, ITEM1, 200, -1); v4.addOffer(OFFER_TYPE.BUY, ITEM3, 450, -1); - Route route = new Route(new RouteEntry(v2, false, 0,0)); - route.add(new RouteEntry(v3, false, 0,0)); - route.add(new RouteEntry(v4, false, 0,0)); + Route route = new Route(new RouteEntry(v2, 0, 0,0)); + route.add(new RouteEntry(v3, 0, 0,0)); + route.add(new RouteEntry(v4, 0, 0,0)); return route; } diff --git a/core/src/test/java/ru/trader/analysis/RouteSearcherTest.java b/core/src/test/java/ru/trader/analysis/RouteSearcherTest.java index 21d6091..4165fcd 100644 --- a/core/src/test/java/ru/trader/analysis/RouteSearcherTest.java +++ b/core/src/test/java/ru/trader/analysis/RouteSearcherTest.java @@ -64,13 +64,13 @@ public class RouteSearcherTest extends Assert{ LOG.info("Start test routes, 3 lands"); RouteSearcher searcher = new RouteSearcher(scorer); - Route route = new Route(new RouteEntry(ithaca_st, false, 3.3789702637348586d, 0)); - route.add(new RouteEntry(morgor.asTransit(), false, 4.137765020523591d, 0)); - route.add(new RouteEntry(lhs3006.asTransit(), false, 4.0674474942172765d, 0)); - route.add(new RouteEntry(lhs3262_st, true, 4.149937831634785d, 0)); - route.add(new RouteEntry(lhs3006.asTransit(), false, 4.1292528548103d, 0)); - route.add(new RouteEntry(morgor.asTransit(), false, 3.3050364899848566, 0)); - route.add(new RouteEntry(ithaca_st, false, 0, 0)); + Route route = new Route(new RouteEntry(ithaca_st, 0, 3.3789702637348586d, 0)); + route.add(new RouteEntry(morgor.asTransit(), 0, 4.137765020523591d, 0)); + route.add(new RouteEntry(lhs3006.asTransit(), 0, 4.0674474942172765d, 0)); + route.add(new RouteEntry(lhs3262_st, 15, 4.149937831634785d, 0)); + route.add(new RouteEntry(lhs3006.asTransit(), 0, 4.1292528548103d, 0)); + route.add(new RouteEntry(morgor.asTransit(), 0, 3.3050364899848566, 0)); + route.add(new RouteEntry(ithaca_st, 0, 0, 0)); RouteFiller filler = new RouteFiller(scorer); filler.fill(route); @@ -88,17 +88,17 @@ public class RouteSearcherTest extends Assert{ LOG.info("Start test routes, 4 lands"); profile.setLands(4); - route = new Route(new RouteEntry(ithaca_st, false, 3.3789702637348586d, 0)); - route.add(new RouteEntry(morgor.asTransit(), false, 4.137765020523591d, 0)); - route.add(new RouteEntry(lhs3006.asTransit(), false, 4.0674474942172765d, 0)); - route.add(new RouteEntry(lhs3262_st, true, 0.644029909978323d, 0)); - route.add(new RouteEntry(dnDraconis.asTransit(), false, 4.437544442558194d, 0)); - route.add(new RouteEntry(cmDraco_st, false, 4.385307711185104d, 0)); - route.add(new RouteEntry(dnDraconis.asTransit(), false, 0.6279317619086441d, 0)); - route.add(new RouteEntry(lhs3262_st, true, 4.149937831634785d, 0)); - route.add(new RouteEntry(lhs3006.asTransit(), false, 4.1292528548103d, 0)); - route.add(new RouteEntry(morgor.asTransit(), false, 3.3050364899848566, 0)); - route.add(new RouteEntry(ithaca_st, false, 0, 0)); + route = new Route(new RouteEntry(ithaca_st, 0, 3.3789702637348586d, 0)); + route.add(new RouteEntry(morgor.asTransit(), 0, 4.137765020523591d, 0)); + route.add(new RouteEntry(lhs3006.asTransit(), 0, 4.0674474942172765d, 0)); + route.add(new RouteEntry(lhs3262_st, 15, 0.644029909978323d, 0)); + route.add(new RouteEntry(dnDraconis.asTransit(), 0, 4.437544442558194d, 0)); + route.add(new RouteEntry(cmDraco_st, 0, 4.385307711185104d, 0)); + route.add(new RouteEntry(dnDraconis.asTransit(), 0, 0.6279317619086441d, 0)); + route.add(new RouteEntry(lhs3262_st, 15, 4.149937831634785d, 0)); + route.add(new RouteEntry(lhs3006.asTransit(), 0, 4.1292528548103d, 0)); + route.add(new RouteEntry(morgor.asTransit(), 0, 3.3050364899848566, 0)); + route.add(new RouteEntry(ithaca_st, 0, 0, 0)); filler = new RouteFiller(scorer); filler.fill(route); @@ -108,7 +108,7 @@ public class RouteSearcherTest extends Assert{ apaths = searcher.getRoutes(ithaca_st, ithaca_st, fWorld.getMarkets(true).collect(Collectors.toList())); actual = apaths.stream().findFirst().get(); - assertEquals("Routes is different", route, actual); + assertEquals(route, actual); } } diff --git a/core/src/test/java/ru/trader/analysis/RouteTest.java b/core/src/test/java/ru/trader/analysis/RouteTest.java index 07e099a..e50b06c 100644 --- a/core/src/test/java/ru/trader/analysis/RouteTest.java +++ b/core/src/test/java/ru/trader/analysis/RouteTest.java @@ -28,9 +28,9 @@ public class RouteTest extends Assert { v3 = new SimpleVendor("v3",0,0,0); v4 = new SimpleVendor("v4",0,0,0); - Route path = new Route(new RouteEntry(v1, false, 0,0)); - path.add(new RouteEntry(v2, false, 0,0)); - path.add(new RouteEntry(v3, false, 0,0)); + Route path = new Route(new RouteEntry(v1, 0, 0,0)); + path.add(new RouteEntry(v2, 0, 0,0)); + path.add(new RouteEntry(v3, 0, 0,0)); TestUtil.assertCollectionContainAll(path.getVendors(), v1, v2, v3); } @@ -42,9 +42,9 @@ public class RouteTest extends Assert { v3 = new SimpleVendor("v3",0,0,0); v4 = new SimpleVendor("v4",0,0,0); - Route path = new Route(new RouteEntry(v1, false, 0,0)); - path.add(new RouteEntry(v2, false, 0,0)); - path.add(new RouteEntry(v3, false, 0,0)); + Route path = new Route(new RouteEntry(v1, 0, 0,0)); + path.add(new RouteEntry(v2, 0, 0,0)); + path.add(new RouteEntry(v3, 0, 0,0)); Collection vendors = new ArrayList<>(); Collections.addAll(vendors, v1, v2, v3); assertTrue(path.contains(vendors)); diff --git a/core/src/test/java/ru/trader/core/MarketAnalyzerTest2.java b/core/src/test/java/ru/trader/core/MarketAnalyzerTest2.java index d785c88..0fcfaa9 100644 --- a/core/src/test/java/ru/trader/core/MarketAnalyzerTest2.java +++ b/core/src/test/java/ru/trader/core/MarketAnalyzerTest2.java @@ -31,13 +31,13 @@ public class MarketAnalyzerTest2 extends Assert { Vendor lhs3006 = market.get("LHS 3006").asTransit(); Vendor lhs3262 = market.get("LHS 3262").get().iterator().next(); Collection paths = analyzer.getRoutes(ithaca, ithaca); - Route expect = new Route(new RouteEntry(ithaca, false, 3.3789702637348586d, 0)); - expect.add(new RouteEntry(morgor, false, 4.137765020523591d, 0)); - expect.add(new RouteEntry(lhs3006, false, 4.0674474942172765d, 0)); - expect.add(new RouteEntry(lhs3262, true, 4.149937831634785d, 0)); - expect.add(new RouteEntry(lhs3006, false, 4.1292528548103d, 0)); - expect.add(new RouteEntry(morgor, false, 3.3050364899848566, 0)); - expect.add(new RouteEntry(ithaca, false, 0, 0)); + Route expect = new Route(new RouteEntry(ithaca, 0, 3.3789702637348586d, 0)); + expect.add(new RouteEntry(morgor, 0, 4.137765020523591d, 0)); + expect.add(new RouteEntry(lhs3006, 0, 4.0674474942172765d, 0)); + expect.add(new RouteEntry(lhs3262, 15, 4.149937831634785d, 0)); + expect.add(new RouteEntry(lhs3006, 0, 4.1292528548103d, 0)); + expect.add(new RouteEntry(morgor, 0, 3.3050364899848566, 0)); + expect.add(new RouteEntry(ithaca, 0, 0, 0)); RouteFiller filler = new RouteFiller(new Scorer(fWorld, profile)); filler.fill(expect);