save refill value in route entry
This commit is contained in:
@@ -103,7 +103,7 @@ public class Route implements Comparable<Route> {
|
|||||||
entries.remove(entries.size()-1);
|
entries.remove(entries.size()-1);
|
||||||
} else {
|
} else {
|
||||||
LOG.trace("Is not connected route, set refill");
|
LOG.trace("Is not connected route, set refill");
|
||||||
end.setRefill(true);
|
end.setRefill(end.getFuel());
|
||||||
}
|
}
|
||||||
entries.addAll(route.entries);
|
entries.addAll(route.entries);
|
||||||
updateStats();
|
updateStats();
|
||||||
|
|||||||
@@ -12,10 +12,10 @@ public class RouteEntry {
|
|||||||
private final double fuel;
|
private final double fuel;
|
||||||
private final List<Order> orders;
|
private final List<Order> orders;
|
||||||
private boolean land;
|
private boolean land;
|
||||||
private boolean refill;
|
private double refill;
|
||||||
private double score;
|
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<>();
|
orders = new ArrayList<>();
|
||||||
this.vendor = vendor;
|
this.vendor = vendor;
|
||||||
this.refill = refill;
|
this.refill = refill;
|
||||||
@@ -32,10 +32,14 @@ public class RouteEntry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isRefill() {
|
public boolean isRefill() {
|
||||||
|
return refill > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getRefill(){
|
||||||
return refill;
|
return refill;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setRefill(boolean refill) {
|
void setRefill(double refill) {
|
||||||
this.refill = refill;
|
this.refill = refill;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,7 +76,7 @@ public class RouteEntry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isLand(){
|
public boolean isLand(){
|
||||||
return land || refill || !orders.isEmpty();
|
return land || isRefill() || !orders.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setLand(boolean land) {
|
void setLand(boolean land) {
|
||||||
@@ -104,7 +108,7 @@ public class RouteEntry {
|
|||||||
temp = Double.doubleToLongBits(fuel);
|
temp = Double.doubleToLongBits(fuel);
|
||||||
result = 31 * result + (int) (temp ^ (temp >>> 32));
|
result = 31 * result + (int) (temp ^ (temp >>> 32));
|
||||||
result = 31 * result + (land ? 1 : 0);
|
result = 31 * result + (land ? 1 : 0);
|
||||||
result = 31 * result + (refill ? 1 : 0);
|
result = 31 * result + (isRefill() ? 1 : 0);
|
||||||
temp = Double.doubleToLongBits(score);
|
temp = Double.doubleToLongBits(score);
|
||||||
result = 31 * result + (int) (temp ^ (temp >>> 32));
|
result = 31 * result + (int) (temp ^ (temp >>> 32));
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ public class RouteSearcher {
|
|||||||
for (int k = 0; k < transitEdges.size(); k++) {
|
for (int k = 0; k < transitEdges.size(); k++) {
|
||||||
ConnectibleEdge<Vendor> edge = transitEdges.get(k);
|
ConnectibleEdge<Vendor> edge = transitEdges.get(k);
|
||||||
Vendor vendor = edge.getSource().getEntry();
|
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)) {
|
if (buyer != null && vendor.equals(buyer)) {
|
||||||
entry.setLand(true);
|
entry.setLand(true);
|
||||||
buyer = null;
|
buyer = null;
|
||||||
@@ -140,7 +140,7 @@ public class RouteSearcher {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (vEdge != null) {
|
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);
|
if (buyer != null) entry.setLand(true);
|
||||||
entries.add(entry);
|
entries.add(entry);
|
||||||
}
|
}
|
||||||
@@ -160,10 +160,10 @@ public class RouteSearcher {
|
|||||||
for (int i = 0; i < edges.size(); i++) {
|
for (int i = 0; i < edges.size(); i++) {
|
||||||
ConnectibleEdge<Place> edge = (ConnectibleEdge<Place>) edges.get(i);
|
ConnectibleEdge<Place> edge = (ConnectibleEdge<Place>) edges.get(i);
|
||||||
Vendor vendor = i == 0 ? from : edge.getSource().getEntry().asTransit();
|
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);
|
entries.add(entry);
|
||||||
if (i == edges.size()-1){
|
if (i == edges.size()-1){
|
||||||
entry = new RouteEntry(to, false, 0, 0);
|
entry = new RouteEntry(to, 0, 0, 0);
|
||||||
entry.setLand(true);
|
entry.setLand(true);
|
||||||
entries.add(entry);
|
entries.add(entry);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,8 +51,8 @@ public class RouteFillerTest extends Assert {
|
|||||||
v2.addOffer(OFFER_TYPE.BUY, ITEM2, 350, -1);
|
v2.addOffer(OFFER_TYPE.BUY, ITEM2, 350, -1);
|
||||||
v2.addOffer(OFFER_TYPE.BUY, ITEM3, 400, -1);
|
v2.addOffer(OFFER_TYPE.BUY, ITEM3, 400, -1);
|
||||||
|
|
||||||
Route route = new Route(new RouteEntry(v1, false, 0,0));
|
Route route = new Route(new RouteEntry(v1, 0, 0,0));
|
||||||
route.add(new RouteEntry(v2, false, 0,0));
|
route.add(new RouteEntry(v2, 0, 0,0));
|
||||||
|
|
||||||
return route;
|
return route;
|
||||||
}
|
}
|
||||||
@@ -93,9 +93,9 @@ public class RouteFillerTest extends Assert {
|
|||||||
v3.addOffer(OFFER_TYPE.BUY, ITEM2, 350, -1);
|
v3.addOffer(OFFER_TYPE.BUY, ITEM2, 350, -1);
|
||||||
v3.addOffer(OFFER_TYPE.BUY, ITEM3, 400, -1);
|
v3.addOffer(OFFER_TYPE.BUY, ITEM3, 400, -1);
|
||||||
|
|
||||||
Route route = new Route(new RouteEntry(v1, false, 0,0));
|
Route route = new Route(new RouteEntry(v1, 0, 0,0));
|
||||||
route.add(new RouteEntry(v2, false, 0,0));
|
route.add(new RouteEntry(v2, 0, 0,0));
|
||||||
route.add(new RouteEntry(v3, false, 0,0));
|
route.add(new RouteEntry(v3, 0, 0,0));
|
||||||
|
|
||||||
return route;
|
return route;
|
||||||
}
|
}
|
||||||
@@ -142,10 +142,10 @@ public class RouteFillerTest extends Assert {
|
|||||||
v3.addOffer(OFFER_TYPE.BUY, ITEM1, 200, -1);
|
v3.addOffer(OFFER_TYPE.BUY, ITEM1, 200, -1);
|
||||||
v4.addOffer(OFFER_TYPE.BUY, ITEM3, 450, -1);
|
v4.addOffer(OFFER_TYPE.BUY, ITEM3, 450, -1);
|
||||||
|
|
||||||
Route route = new Route(new RouteEntry(v1, false, 0,0));
|
Route route = new Route(new RouteEntry(v1, 0, 0,0));
|
||||||
route.add(new RouteEntry(v2, false, 0,0));
|
route.add(new RouteEntry(v2, 0, 0,0));
|
||||||
route.add(new RouteEntry(v3, false, 0,0));
|
route.add(new RouteEntry(v3, 0, 0,0));
|
||||||
route.add(new RouteEntry(v4, false, 0,0));
|
route.add(new RouteEntry(v4, 0, 0,0));
|
||||||
|
|
||||||
return route;
|
return route;
|
||||||
}
|
}
|
||||||
@@ -224,11 +224,11 @@ public class RouteFillerTest extends Assert {
|
|||||||
v4.addOffer(OFFER_TYPE.BUY, ITEM3, 370, -1);
|
v4.addOffer(OFFER_TYPE.BUY, ITEM3, 370, -1);
|
||||||
v5.addOffer(OFFER_TYPE.BUY, ITEM1, 400, -1);
|
v5.addOffer(OFFER_TYPE.BUY, ITEM1, 400, -1);
|
||||||
|
|
||||||
Route route = new Route(new RouteEntry(v1, false, 0,0));
|
Route route = new Route(new RouteEntry(v1, 0, 0,0));
|
||||||
route.add(new RouteEntry(v2, false, 0,0));
|
route.add(new RouteEntry(v2, 0, 0,0));
|
||||||
route.add(new RouteEntry(v3, false, 0,0));
|
route.add(new RouteEntry(v3, 0, 0,0));
|
||||||
route.add(new RouteEntry(v4, false, 0,0));
|
route.add(new RouteEntry(v4, 0, 0,0));
|
||||||
route.add(new RouteEntry(v5, false, 0,0));
|
route.add(new RouteEntry(v5, 0, 0,0));
|
||||||
|
|
||||||
return route;
|
return route;
|
||||||
}
|
}
|
||||||
@@ -287,10 +287,10 @@ public class RouteFillerTest extends Assert {
|
|||||||
v3.addOffer(OFFER_TYPE.BUY, ITEM1, 200, -1);
|
v3.addOffer(OFFER_TYPE.BUY, ITEM1, 200, -1);
|
||||||
v4.addOffer(OFFER_TYPE.BUY, ITEM3, 450, -1);
|
v4.addOffer(OFFER_TYPE.BUY, ITEM3, 450, -1);
|
||||||
|
|
||||||
Route route = new Route(new RouteEntry(v1, false, 0,0));
|
Route route = new Route(new RouteEntry(v1, 0, 0,0));
|
||||||
route.add(new RouteEntry(v2, false, 0,0));
|
route.add(new RouteEntry(v2, 0, 0,0));
|
||||||
route.add(new RouteEntry(v3, false, 0,0));
|
route.add(new RouteEntry(v3, 0, 0,0));
|
||||||
route.add(new RouteEntry(v4, false, 0,0));
|
route.add(new RouteEntry(v4, 0, 0,0));
|
||||||
|
|
||||||
return route;
|
return route;
|
||||||
}
|
}
|
||||||
@@ -369,8 +369,8 @@ public class RouteFillerTest extends Assert {
|
|||||||
|
|
||||||
v2.addOffer(OFFER_TYPE.BUY, ITEM2, 225, -1);
|
v2.addOffer(OFFER_TYPE.BUY, ITEM2, 225, -1);
|
||||||
|
|
||||||
Route route = new Route(new RouteEntry(v1, false, 0,0));
|
Route route = new Route(new RouteEntry(v1, 0, 0,0));
|
||||||
route.add(new RouteEntry(v2, false, 0,0));
|
route.add(new RouteEntry(v2, 0, 0,0));
|
||||||
|
|
||||||
|
|
||||||
return route;
|
return route;
|
||||||
@@ -386,9 +386,9 @@ public class RouteFillerTest extends Assert {
|
|||||||
v3.addOffer(OFFER_TYPE.BUY, ITEM1, 200, -1);
|
v3.addOffer(OFFER_TYPE.BUY, ITEM1, 200, -1);
|
||||||
v4.addOffer(OFFER_TYPE.BUY, ITEM3, 450, -1);
|
v4.addOffer(OFFER_TYPE.BUY, ITEM3, 450, -1);
|
||||||
|
|
||||||
Route route = new Route(new RouteEntry(v2, false, 0,0));
|
Route route = new Route(new RouteEntry(v2, 0, 0,0));
|
||||||
route.add(new RouteEntry(v3, false, 0,0));
|
route.add(new RouteEntry(v3, 0, 0,0));
|
||||||
route.add(new RouteEntry(v4, false, 0,0));
|
route.add(new RouteEntry(v4, 0, 0,0));
|
||||||
|
|
||||||
return route;
|
return route;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,13 +64,13 @@ public class RouteSearcherTest extends Assert{
|
|||||||
LOG.info("Start test routes, 3 lands");
|
LOG.info("Start test routes, 3 lands");
|
||||||
RouteSearcher searcher = new RouteSearcher(scorer);
|
RouteSearcher searcher = new RouteSearcher(scorer);
|
||||||
|
|
||||||
Route route = new Route(new RouteEntry(ithaca_st, false, 3.3789702637348586d, 0));
|
Route route = new Route(new RouteEntry(ithaca_st, 0, 3.3789702637348586d, 0));
|
||||||
route.add(new RouteEntry(morgor.asTransit(), false, 4.137765020523591d, 0));
|
route.add(new RouteEntry(morgor.asTransit(), 0, 4.137765020523591d, 0));
|
||||||
route.add(new RouteEntry(lhs3006.asTransit(), false, 4.0674474942172765d, 0));
|
route.add(new RouteEntry(lhs3006.asTransit(), 0, 4.0674474942172765d, 0));
|
||||||
route.add(new RouteEntry(lhs3262_st, true, 4.149937831634785d, 0));
|
route.add(new RouteEntry(lhs3262_st, 15, 4.149937831634785d, 0));
|
||||||
route.add(new RouteEntry(lhs3006.asTransit(), false, 4.1292528548103d, 0));
|
route.add(new RouteEntry(lhs3006.asTransit(), 0, 4.1292528548103d, 0));
|
||||||
route.add(new RouteEntry(morgor.asTransit(), false, 3.3050364899848566, 0));
|
route.add(new RouteEntry(morgor.asTransit(), 0, 3.3050364899848566, 0));
|
||||||
route.add(new RouteEntry(ithaca_st, false, 0, 0));
|
route.add(new RouteEntry(ithaca_st, 0, 0, 0));
|
||||||
RouteFiller filler = new RouteFiller(scorer);
|
RouteFiller filler = new RouteFiller(scorer);
|
||||||
filler.fill(route);
|
filler.fill(route);
|
||||||
|
|
||||||
@@ -88,17 +88,17 @@ public class RouteSearcherTest extends Assert{
|
|||||||
|
|
||||||
LOG.info("Start test routes, 4 lands");
|
LOG.info("Start test routes, 4 lands");
|
||||||
profile.setLands(4);
|
profile.setLands(4);
|
||||||
route = new Route(new RouteEntry(ithaca_st, false, 3.3789702637348586d, 0));
|
route = new Route(new RouteEntry(ithaca_st, 0, 3.3789702637348586d, 0));
|
||||||
route.add(new RouteEntry(morgor.asTransit(), false, 4.137765020523591d, 0));
|
route.add(new RouteEntry(morgor.asTransit(), 0, 4.137765020523591d, 0));
|
||||||
route.add(new RouteEntry(lhs3006.asTransit(), false, 4.0674474942172765d, 0));
|
route.add(new RouteEntry(lhs3006.asTransit(), 0, 4.0674474942172765d, 0));
|
||||||
route.add(new RouteEntry(lhs3262_st, true, 0.644029909978323d, 0));
|
route.add(new RouteEntry(lhs3262_st, 15, 0.644029909978323d, 0));
|
||||||
route.add(new RouteEntry(dnDraconis.asTransit(), false, 4.437544442558194d, 0));
|
route.add(new RouteEntry(dnDraconis.asTransit(), 0, 4.437544442558194d, 0));
|
||||||
route.add(new RouteEntry(cmDraco_st, false, 4.385307711185104d, 0));
|
route.add(new RouteEntry(cmDraco_st, 0, 4.385307711185104d, 0));
|
||||||
route.add(new RouteEntry(dnDraconis.asTransit(), false, 0.6279317619086441d, 0));
|
route.add(new RouteEntry(dnDraconis.asTransit(), 0, 0.6279317619086441d, 0));
|
||||||
route.add(new RouteEntry(lhs3262_st, true, 4.149937831634785d, 0));
|
route.add(new RouteEntry(lhs3262_st, 15, 4.149937831634785d, 0));
|
||||||
route.add(new RouteEntry(lhs3006.asTransit(), false, 4.1292528548103d, 0));
|
route.add(new RouteEntry(lhs3006.asTransit(), 0, 4.1292528548103d, 0));
|
||||||
route.add(new RouteEntry(morgor.asTransit(), false, 3.3050364899848566, 0));
|
route.add(new RouteEntry(morgor.asTransit(), 0, 3.3050364899848566, 0));
|
||||||
route.add(new RouteEntry(ithaca_st, false, 0, 0));
|
route.add(new RouteEntry(ithaca_st, 0, 0, 0));
|
||||||
filler = new RouteFiller(scorer);
|
filler = new RouteFiller(scorer);
|
||||||
filler.fill(route);
|
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()));
|
apaths = searcher.getRoutes(ithaca_st, ithaca_st, fWorld.getMarkets(true).collect(Collectors.toList()));
|
||||||
actual = apaths.stream().findFirst().get();
|
actual = apaths.stream().findFirst().get();
|
||||||
assertEquals("Routes is different", route, actual);
|
assertEquals(route, actual);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,9 +28,9 @@ public class RouteTest extends Assert {
|
|||||||
v3 = new SimpleVendor("v3",0,0,0);
|
v3 = new SimpleVendor("v3",0,0,0);
|
||||||
v4 = new SimpleVendor("v4",0,0,0);
|
v4 = new SimpleVendor("v4",0,0,0);
|
||||||
|
|
||||||
Route path = new Route(new RouteEntry(v1, false, 0,0));
|
Route path = new Route(new RouteEntry(v1, 0, 0,0));
|
||||||
path.add(new RouteEntry(v2, false, 0,0));
|
path.add(new RouteEntry(v2, 0, 0,0));
|
||||||
path.add(new RouteEntry(v3, false, 0,0));
|
path.add(new RouteEntry(v3, 0, 0,0));
|
||||||
TestUtil.assertCollectionContainAll(path.getVendors(), v1, v2, v3);
|
TestUtil.assertCollectionContainAll(path.getVendors(), v1, v2, v3);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,9 +42,9 @@ public class RouteTest extends Assert {
|
|||||||
v3 = new SimpleVendor("v3",0,0,0);
|
v3 = new SimpleVendor("v3",0,0,0);
|
||||||
v4 = new SimpleVendor("v4",0,0,0);
|
v4 = new SimpleVendor("v4",0,0,0);
|
||||||
|
|
||||||
Route path = new Route(new RouteEntry(v1, false, 0,0));
|
Route path = new Route(new RouteEntry(v1, 0, 0,0));
|
||||||
path.add(new RouteEntry(v2, false, 0,0));
|
path.add(new RouteEntry(v2, 0, 0,0));
|
||||||
path.add(new RouteEntry(v3, false, 0,0));
|
path.add(new RouteEntry(v3, 0, 0,0));
|
||||||
Collection<Vendor> vendors = new ArrayList<>();
|
Collection<Vendor> vendors = new ArrayList<>();
|
||||||
Collections.addAll(vendors, v1, v2, v3);
|
Collections.addAll(vendors, v1, v2, v3);
|
||||||
assertTrue(path.contains(vendors));
|
assertTrue(path.contains(vendors));
|
||||||
|
|||||||
@@ -31,13 +31,13 @@ public class MarketAnalyzerTest2 extends Assert {
|
|||||||
Vendor lhs3006 = market.get("LHS 3006").asTransit();
|
Vendor lhs3006 = market.get("LHS 3006").asTransit();
|
||||||
Vendor lhs3262 = market.get("LHS 3262").get().iterator().next();
|
Vendor lhs3262 = market.get("LHS 3262").get().iterator().next();
|
||||||
Collection<Route> paths = analyzer.getRoutes(ithaca, ithaca);
|
Collection<Route> paths = analyzer.getRoutes(ithaca, ithaca);
|
||||||
Route expect = new Route(new RouteEntry(ithaca, false, 3.3789702637348586d, 0));
|
Route expect = new Route(new RouteEntry(ithaca, 0, 3.3789702637348586d, 0));
|
||||||
expect.add(new RouteEntry(morgor, false, 4.137765020523591d, 0));
|
expect.add(new RouteEntry(morgor, 0, 4.137765020523591d, 0));
|
||||||
expect.add(new RouteEntry(lhs3006, false, 4.0674474942172765d, 0));
|
expect.add(new RouteEntry(lhs3006, 0, 4.0674474942172765d, 0));
|
||||||
expect.add(new RouteEntry(lhs3262, true, 4.149937831634785d, 0));
|
expect.add(new RouteEntry(lhs3262, 15, 4.149937831634785d, 0));
|
||||||
expect.add(new RouteEntry(lhs3006, false, 4.1292528548103d, 0));
|
expect.add(new RouteEntry(lhs3006, 0, 4.1292528548103d, 0));
|
||||||
expect.add(new RouteEntry(morgor, false, 3.3050364899848566, 0));
|
expect.add(new RouteEntry(morgor, 0, 3.3050364899848566, 0));
|
||||||
expect.add(new RouteEntry(ithaca, false, 0, 0));
|
expect.add(new RouteEntry(ithaca, 0, 0, 0));
|
||||||
RouteFiller filler = new RouteFiller(new Scorer(fWorld, profile));
|
RouteFiller filler = new RouteFiller(new Scorer(fWorld, profile));
|
||||||
filler.fill(expect);
|
filler.fill(expect);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user