fix scorer
This commit is contained in:
@@ -20,6 +20,8 @@ public class RouteSearcherTest extends Assert{
|
||||
|
||||
private Place ithaca;
|
||||
private Place lhs3262;
|
||||
private Place morgor;
|
||||
private Place lhs3006;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
@@ -27,6 +29,8 @@ public class RouteSearcherTest extends Assert{
|
||||
world = Store.loadFromFile(is);
|
||||
ithaca = world.get("Ithaca");
|
||||
lhs3262 = world.get("LHS 3262");
|
||||
morgor = world.get("Morgor");
|
||||
lhs3006 = world.get("LHS 3006");
|
||||
|
||||
MarketFilter filter = new MarketFilter();
|
||||
fWorld = new FilteredMarket(world, filter);
|
||||
@@ -38,17 +42,30 @@ public class RouteSearcherTest extends Assert{
|
||||
// Ithaca (Palladium to LHS 3262) -> Morgor -> LHS 3006 -> LHS 3262 (Consumer Technology to Ithaca) -> LHS 3006 -> Morgor -> Ithaca
|
||||
// Profit: 981200, avg: 490600, distance: 67.5, lands: 2
|
||||
Vendor ithaca_st = ithaca.get().iterator().next();
|
||||
Vendor lhs3262_st = lhs3262.get().iterator().next();
|
||||
Vendor morgor_st = morgor.get().iterator().next();
|
||||
Vendor lhs3006_st = lhs3006.get().iterator().next();
|
||||
Ship ship = new Ship();
|
||||
ship.setCargo(440); ship.setTank(16);
|
||||
ship.setCargo(440); ship.setTank(15);
|
||||
ship.setEngine(5, 'A'); ship.setMass(466);
|
||||
Profile profile = new Profile(ship);
|
||||
profile.setBalance(6000000); profile.setJumps(6);
|
||||
profile.setRoutesCount(10);
|
||||
profile.setRoutesCount(100);
|
||||
Scorer scorer = new Scorer(fWorld, profile);
|
||||
|
||||
LOG.info("Start test routes");
|
||||
RouteSearcher searcher = new RouteSearcher(scorer);
|
||||
|
||||
Route route = new Route(new RouteEntry(ithaca_st, false, 3.3789702637348586d, 0));
|
||||
route.add(new RouteEntry(morgor_st, false, 4.137765020523591d, 0));
|
||||
route.add(new RouteEntry(lhs3006_st, false, 4.0674474942172765d, 0));
|
||||
route.add(new RouteEntry(lhs3262_st, true, 4.149937831634785d, 0));
|
||||
route.add(new RouteEntry(lhs3006_st, false, 4.1292528548103d, 0));
|
||||
route.add(new RouteEntry(morgor_st, false, 3.3050364899848566, 0));
|
||||
route.add(new RouteEntry(ithaca_st, false, 3.3483447506734136, 0));
|
||||
RouteFiller filler = new RouteFiller(scorer);
|
||||
filler.fill(route);
|
||||
|
||||
List<Route> apaths = searcher.getRoutes(ithaca_st, ithaca_st, fWorld.getMarkets(true).collect(Collectors.toList()));
|
||||
Route actual = apaths.stream().findFirst().get();
|
||||
//assertTrue("Routes is different",expect.isRoute(actual));
|
||||
|
||||
@@ -108,6 +108,87 @@ public class ScorerTest extends Assert {
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScore2() throws Exception {
|
||||
Ship ship = new Ship();
|
||||
ship.setCargo(100);
|
||||
Profile profile = new Profile(ship);
|
||||
LOG.info("Start score test, balance 10000000");
|
||||
profile.setBalance(1000000);
|
||||
Scorer scorer = new Scorer(fWorld, profile);
|
||||
|
||||
double transitScore = scorer.getTransitScore(4);
|
||||
double transitScore2 = scorer.getTransitScore(6);
|
||||
double transitScore3 = scorer.getTransitScore(2);
|
||||
|
||||
assertTrue(transitScore > transitScore2);
|
||||
assertTrue(transitScore3 > transitScore);
|
||||
|
||||
double score = scorer.getScore(scorer.getAvgDistance(), 0, 1, 1, 4);
|
||||
double score1 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit()/2, 1, 1, 4);
|
||||
double score2 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit()*10, 1, 1, 4);
|
||||
double score3 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit(), 1, 1, 4);
|
||||
|
||||
assertTrue(score < score1);
|
||||
assertTrue(score1 < score3);
|
||||
assertTrue(score3 < score2);
|
||||
assertTrue(score3 < score2);
|
||||
|
||||
assertTrue(Math.abs(score2/score1) >= 20);
|
||||
assertTrue(Math.abs(score3/score1) >= 2);
|
||||
assertTrue(Math.abs(score2/score3) >= 10);
|
||||
|
||||
|
||||
score1 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit(), 0, 1, 4);
|
||||
score2 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit(), 1, 1, 4);
|
||||
score3 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit(), 2, 1, 4);
|
||||
assertTrue(score1 > score2);
|
||||
assertTrue(score2 > score3);
|
||||
|
||||
score1 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit(), 1, 0, 4);
|
||||
score2 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit(), 1, 1, 4);
|
||||
score3 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit(), 1, 2, 4);
|
||||
assertTrue(score1 > score2);
|
||||
assertTrue(score2 > score3);
|
||||
|
||||
score1 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit(), 1, 1, 3);
|
||||
score2 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit(), 1, 1, 4);
|
||||
score3 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit(), 1, 1, 5);
|
||||
assertTrue(score1 > score2);
|
||||
assertTrue(score2 > score3);
|
||||
|
||||
score = scorer.getScore(0, scorer.getAvgProfit(), 1, 1, 4);
|
||||
score1 = scorer.getScore(scorer.getAvgDistance()/2, scorer.getAvgProfit(), 1, 1, 4);
|
||||
score2 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit(), 1, 1, 4);
|
||||
score3 = scorer.getScore(scorer.getAvgDistance()*2, scorer.getAvgProfit(), 1, 1, 4);
|
||||
assertTrue(score > score1);
|
||||
assertTrue(score1 > score2);
|
||||
assertTrue(score2 > score3);
|
||||
|
||||
score1 = scorer.getScore(scorer.getAvgDistance()/2, scorer.getAvgProfit(), 1, 1, 4);
|
||||
score2 = scorer.getScore(scorer.getAvgDistance()*2, scorer.getAvgProfit()*2, 1, 1, 4);
|
||||
score3 = scorer.getScore(scorer.getAvgDistance()*2, scorer.getAvgProfit()*4, 1, 1, 4);
|
||||
assertTrue(score1 > score2);
|
||||
assertTrue(score3 > score1);
|
||||
|
||||
score1 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit()/2, 0, 1, 4);
|
||||
score2 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit()*2, 1, 1, 4);
|
||||
score3 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit()*4, 0, 1, 4);
|
||||
assertTrue(score2 > score1);
|
||||
assertTrue(score3 > score2);
|
||||
|
||||
transitScore = scorer.getTransitScore(4);
|
||||
score = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit(), 1, 1, 4);
|
||||
score1 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit()/2, 1, 1, 4);
|
||||
score2 = scorer.getScore(scorer.getAvgDistance(), scorer.getAvgProfit()*10, 1, 1, 4);
|
||||
score3 = scorer.getScore(scorer.getAvgDistance(), 0, 1, 1, 4);
|
||||
assertTrue(transitScore > score);
|
||||
assertTrue(transitScore > score1);
|
||||
assertTrue(transitScore < score2);
|
||||
assertTrue(transitScore > score3);
|
||||
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
world = null;
|
||||
|
||||
@@ -4,4 +4,4 @@ log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.stdout.layout.ConversionPattern=%p: %d{dd.MM.yyyy HH:mm:ss} (%F:%L) - %m%n
|
||||
|
||||
log4j.logger.ru.trader.analysis.graph = TRACE
|
||||
#log4j.logger.ru.trader.analysis.graph = TRACE
|
||||
|
||||
Reference in New Issue
Block a user