remove unused methods
This commit is contained in:
@@ -1,6 +1,5 @@
|
|||||||
package ru.trader.analysis;
|
package ru.trader.analysis;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import ru.trader.core.*;
|
import ru.trader.core.*;
|
||||||
@@ -121,10 +120,6 @@ public class Scorer {
|
|||||||
return score;
|
return score;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Score getScore(Vendor vendor){
|
|
||||||
return new Score(vendor);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Stream<Order> mapToOrder(Offer offer) {
|
private Stream<Order> mapToOrder(Offer offer) {
|
||||||
Offer sell;
|
Offer sell;
|
||||||
Offer buy;
|
Offer buy;
|
||||||
@@ -140,61 +135,4 @@ public class Scorer {
|
|||||||
if (order.getProfit() <= 0) return Stream.empty();
|
if (order.getProfit() <= 0) return Stream.empty();
|
||||||
return Stream.of(order);
|
return Stream.of(order);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Score implements Comparable<Score> {
|
|
||||||
private final Vendor vendor;
|
|
||||||
private final DoubleSummaryStatistics sellStat;
|
|
||||||
private final DoubleSummaryStatistics buyStat;
|
|
||||||
private double score;
|
|
||||||
|
|
||||||
public Score(Vendor vendor) {
|
|
||||||
this.vendor = vendor;
|
|
||||||
Stream<Order> sell = vendor.getAllSellOffers().stream().flatMap(Scorer.this::mapToOrder);
|
|
||||||
Stream<Order> buy = vendor.getAllBuyOffers().stream().flatMap(Scorer.this::mapToOrder);
|
|
||||||
|
|
||||||
sellStat = computeProfits(sell);
|
|
||||||
buyStat = computeProfits(buy);
|
|
||||||
|
|
||||||
computeScore();
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getSellProfit() {
|
|
||||||
return sellStat.getAverage();
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getBuyProfit() {
|
|
||||||
return buyStat.getAverage();
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getScore() {
|
|
||||||
return score;
|
|
||||||
}
|
|
||||||
|
|
||||||
private DoubleSummaryStatistics computeProfits(Stream<Order> orders) {
|
|
||||||
return orders.sorted(Comparator.<Order>reverseOrder())
|
|
||||||
.limit(profile.getScoreOrdersCount())
|
|
||||||
.collect(Collectors.summarizingDouble(Order::getProfit));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void computeScore(){
|
|
||||||
score = (getSellProfit() + getBuyProfit())/2;
|
|
||||||
score = Scorer.this.getScore(vendor, score, 0, 1, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "Score{" +
|
|
||||||
"vendor=" + vendor.getPlace()+"("+vendor+")"+
|
|
||||||
", sellStat=" + sellStat +
|
|
||||||
", buyStat=" + buyStat +
|
|
||||||
", score=" + score +
|
|
||||||
'}';
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int compareTo(@NotNull Score other) {
|
|
||||||
return Double.compare(score, other.score);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,96 +18,15 @@ public class ScorerTest extends Assert {
|
|||||||
private Market world;
|
private Market world;
|
||||||
private FilteredMarket fWorld;
|
private FilteredMarket fWorld;
|
||||||
|
|
||||||
private Place breksta;
|
|
||||||
private Place bhadaba;
|
|
||||||
private Place lhs1541;
|
|
||||||
private Place itza;
|
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
InputStream is = getClass().getResourceAsStream("/test3.xml");
|
InputStream is = getClass().getResourceAsStream("/test3.xml");
|
||||||
world = Store.loadFromFile(is);
|
world = Store.loadFromFile(is);
|
||||||
breksta = world.get("Breksta");
|
|
||||||
bhadaba = world.get("Bhadaba");
|
|
||||||
lhs1541 = world.get("LHS 1541");
|
|
||||||
itza = world.get("Itza");
|
|
||||||
|
|
||||||
MarketFilter filter = new MarketFilter();
|
MarketFilter filter = new MarketFilter();
|
||||||
fWorld = new FilteredMarket(world, filter);
|
fWorld = new FilteredMarket(world, filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testScore() throws Exception {
|
|
||||||
Vendor grantTerminal = breksta.get("Grant Terminal");
|
|
||||||
Vendor perezMarket = breksta.get("Perez market");
|
|
||||||
Vendor kandelRing = bhadaba.get("Kandel Ring");
|
|
||||||
Vendor robertsHub = bhadaba.get("Roberts Hub");
|
|
||||||
Vendor cabreraDock = lhs1541.get("Cabrera Dock");
|
|
||||||
Vendor hallerPort = lhs1541.get("Haller Port");
|
|
||||||
Vendor luikenPort = itza.get("Luiken Port");
|
|
||||||
Ship ship = new Ship();
|
|
||||||
ship.setCargo(100);
|
|
||||||
Profile profile = new Profile(ship);
|
|
||||||
LOG.info("Start score test, balance 10000000");
|
|
||||||
profile.setBalance(10000000);
|
|
||||||
Scorer scorer = new Scorer(fWorld, profile);
|
|
||||||
if (LOG.isDebugEnabled()){
|
|
||||||
fWorld.getVendors().map(scorer::getScore).sorted().forEach(s -> LOG.debug("{}", s));
|
|
||||||
}
|
|
||||||
|
|
||||||
Scorer.Score gtScore = scorer.getScore(grantTerminal);
|
|
||||||
Scorer.Score pmScore = scorer.getScore(perezMarket);
|
|
||||||
assertTrue(gtScore.getSellProfit() < pmScore.getSellProfit());
|
|
||||||
assertTrue(gtScore.getBuyProfit() > pmScore.getBuyProfit());
|
|
||||||
assertTrue(gtScore.getScore() > pmScore.getScore());
|
|
||||||
|
|
||||||
Scorer.Score krScore = scorer.getScore(kandelRing);
|
|
||||||
Scorer.Score rhScore = scorer.getScore(robertsHub);
|
|
||||||
assertTrue(krScore.getScore() < pmScore.getScore());
|
|
||||||
assertTrue(krScore.getScore() < rhScore.getScore());
|
|
||||||
assertTrue(krScore.getScore() < gtScore.getScore());
|
|
||||||
|
|
||||||
Scorer.Score cdScore = scorer.getScore(cabreraDock);
|
|
||||||
Scorer.Score hpScore = scorer.getScore(hallerPort);
|
|
||||||
Scorer.Score lpScore = scorer.getScore(luikenPort);
|
|
||||||
assertTrue(hpScore.getScore() > pmScore.getScore());
|
|
||||||
assertTrue(hpScore.getScore() > krScore.getScore());
|
|
||||||
assertTrue(hpScore.getScore() > gtScore.getScore());
|
|
||||||
assertTrue(hpScore.getScore() > lpScore.getScore());
|
|
||||||
assertTrue(hpScore.getScore() > cdScore.getScore());
|
|
||||||
assertTrue(cdScore.getScore() > pmScore.getScore());
|
|
||||||
assertTrue(cdScore.getScore() > krScore.getScore());
|
|
||||||
assertTrue(cdScore.getScore() > gtScore.getScore());
|
|
||||||
assertTrue(cdScore.getScore() > lpScore.getScore());
|
|
||||||
|
|
||||||
LOG.info("Start score test, balance 50000");
|
|
||||||
profile.setBalance(50000);
|
|
||||||
Scorer scorer2 = new Scorer(fWorld, profile);
|
|
||||||
if (LOG.isDebugEnabled()){
|
|
||||||
fWorld.getVendors().map(scorer2::getScore).sorted().forEach(s -> LOG.debug("{}", s));
|
|
||||||
}
|
|
||||||
|
|
||||||
gtScore = scorer2.getScore(grantTerminal);
|
|
||||||
pmScore = scorer2.getScore(perezMarket);
|
|
||||||
assertTrue(gtScore.getSellProfit() > pmScore.getSellProfit());
|
|
||||||
assertTrue(gtScore.getBuyProfit() > pmScore.getBuyProfit());
|
|
||||||
assertTrue(gtScore.getScore() > pmScore.getScore());
|
|
||||||
|
|
||||||
krScore = scorer2.getScore(kandelRing);
|
|
||||||
rhScore = scorer2.getScore(robertsHub);
|
|
||||||
cdScore = scorer2.getScore(cabreraDock);
|
|
||||||
hpScore = scorer2.getScore(hallerPort);
|
|
||||||
lpScore = scorer2.getScore(luikenPort);
|
|
||||||
|
|
||||||
assertTrue(lpScore.getScore() > pmScore.getScore());
|
|
||||||
assertTrue(lpScore.getScore() > gtScore.getScore());
|
|
||||||
assertTrue(lpScore.getScore() > krScore.getScore());
|
|
||||||
assertTrue(lpScore.getScore() > rhScore.getScore());
|
|
||||||
assertTrue(lpScore.getScore() > cdScore.getScore());
|
|
||||||
assertTrue(lpScore.getScore() > hpScore.getScore());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testScore2() throws Exception {
|
public void testScore2() throws Exception {
|
||||||
Ship ship = new Ship();
|
Ship ship = new Ship();
|
||||||
|
|||||||
Reference in New Issue
Block a user