Archived
0

fix scorer

This commit is contained in:
iMoHax
2015-05-22 17:33:07 +03:00
parent a549dce54a
commit 970806d278
13 changed files with 206 additions and 45 deletions

View File

@@ -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));

View File

@@ -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;

View File

@@ -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