Added - hobbit site values for draft bots

This commit is contained in:
jakub.salavec
2025-04-23 17:39:16 +02:00
parent dc40798641
commit 813c447111
3 changed files with 53 additions and 3 deletions

View File

@@ -251,6 +251,7 @@
{"card": "30_31", "value": 0.7296487884563028 },
{"card": "32_18", "value": 0.6634903348761231 },
{"card": "31_6" , "value": 0.6602232507487068 },
{"card": "33_55", "value": 0.650421998366458 },
{"card": "31_38", "value": 0.6471549142390417 },
{"card": "31_5" , "value": 0.6471549142390417 },
{"card": "33_42", "value": 0.5867138578818405 },
@@ -268,6 +269,7 @@
{"card": "32_23", "value": 0.49033487612306015 },
{"card": "32_66", "value": 0.4838007078682276 },
{"card": "33_41", "value": 0.4827116798257555 },
{"card": "31_47", "value": 0.4805336237408113 },
{"card": "31_26", "value": 0.47944459569833925 },
{"card": "32_54", "value": 0.47944459569833925 },
{"card": "32_4" , "value": 0.47399945548597877 },
@@ -289,6 +291,7 @@
{"card": "31_37", "value": 0.41410291315001363 },
{"card": "33_52", "value": 0.41410291315001363 },
{"card": "33_40", "value": 0.4053906888102369 },
{"card": "31_46", "value": 0.4053906888102369 },
{"card": "31_18", "value": 0.4010345766403485 },
{"card": "31_23", "value": 0.3966784644704601 },
{"card": "31_58", "value": 0.39341138034304385 },
@@ -299,14 +302,17 @@
{"card": "32_56", "value": 0.3825210999183229 },
{"card": "32_51", "value": 0.37598693166349034 },
{"card": "32_39", "value": 0.37598693166349034 },
{"card": "33_58", "value": 0.37271984753607407 },
{"card": "32_52", "value": 0.37271984753607407 },
{"card": "32_9" , "value": 0.37054179145112986 },
{"card": "31_9" , "value": 0.3694527634086578 },
{"card": "30_23", "value": 0.36836373536618566 },
{"card": "30_63", "value": 0.36781922134494965 },
{"card": "32_42", "value": 0.3645521372175334 },
{"card": "32_7" , "value": 0.35638442689899263 },
{"card": "32_58", "value": 0.35311734277157636 },
{"card": "32_41", "value": 0.35066702967601415 },
{"card": "31_45", "value": 0.3465831745167438 },
{"card": "31_29", "value": 0.3465831745167438 },
{"card": "33_20", "value": 0.3465831745167438 },
{"card": "32_32", "value": 0.3422270623468554 },
@@ -315,12 +321,16 @@
{"card": "33_23", "value": 0.3269806697522461 },
{"card": "30_13", "value": 0.32534712768853796 },
{"card": "32_63", "value": 0.3237135856248298 },
{"card": "30_58", "value": 0.3220800435611217 },
{"card": "30_62", "value": 0.3199019874761775 },
{"card": "31_12", "value": 0.313912333242581 },
{"card": "31_30", "value": 0.30737816498774845 },
{"card": "33_19", "value": 0.3008439967329159 },
{"card": "32_30", "value": 0.2986659406479717 },
{"card": "31_44", "value": 0.29757691260549957 },
{"card": "33_12", "value": 0.2943098284780833 },
{"card": "31_57", "value": 0.2943098284780833 },
{"card": "30_60", "value": 0.291042744350667 },
{"card": "32_31", "value": 0.28886468826572287 },
{"card": "31_36", "value": 0.28777566022325074 },
{"card": "32_37", "value": 0.2861421181595426 },
@@ -332,18 +342,22 @@
{"card": "32_64", "value": 0.27144023958616936 },
{"card": "31_59", "value": 0.26708412741628096 },
{"card": "33_59", "value": 0.26490607133133676 },
{"card": "33_56", "value": 0.26490607133133676 },
{"card": "32_5" , "value": 0.26490607133133676 },
{"card": "33_22", "value": 0.26490607133133676 },
{"card": "32_29", "value": 0.26490607133133676 },
{"card": "33_54", "value": 0.2638170432888647 },
{"card": "32_34", "value": 0.2627280152463926 },
{"card": "33_57", "value": 0.2583719030765042 },
{"card": "33_53", "value": 0.25728287503403213 },
{"card": "32_48", "value": 0.25510481894908793 },
{"card": "33_47", "value": 0.25183773482167165 },
{"card": "32_65", "value": 0.25183773482167165 },
{"card": "31_41", "value": 0.2507487067791996 },
{"card": "32_38", "value": 0.2502041927579635 },
{"card": "30_30", "value": 0.2488429077048734 },
{"card": "32_62", "value": 0.24857065069425538 },
{"card": "30_59", "value": 0.24693710863054724 },
{"card": "31_14", "value": 0.2453035665668391 },
{"card": "32_44", "value": 0.2453035665668391 },
{"card": "31_17", "value": 0.244214538524367 },
@@ -352,8 +366,10 @@
{"card": "33_61", "value": 0.23550231418459025 },
{"card": "31_60", "value": 0.23441328614211815 },
{"card": "32_28", "value": 0.23060168799346584 },
{"card": "30_61", "value": 0.23060168799346584 },
{"card": "31_35", "value": 0.22733460386604956 },
{"card": "32_11", "value": 0.2267900898448135 },
{"card": "32_46", "value": 0.22570106180234142 },
{"card": "32_17", "value": 0.22570106180234142 },
{"card": "32_16", "value": 0.22570106180234142 },
{"card": "33_36", "value": 0.22461203375986932 },
@@ -372,6 +388,7 @@
{"card": "33_3" , "value": 0.20065341682548327 },
{"card": "33_49", "value": 0.20038115981486523 },
{"card": "31_52", "value": 0.19738633269806696 },
{"card": "30_65", "value": 0.19684181867683093 },
{"card": "31_49", "value": 0.19303022052817861 },
{"card": "32_26", "value": 0.1897631364007623 },
{"card": "33_4" , "value": 0.18649605227334604 },
@@ -398,7 +415,10 @@
{"card": "31_51", "value": 0.15790906615845357 },
{"card": "31_3" , "value": 0.1570922951265995 },
{"card": "33_31", "value": 0.15491423904165533 },
{"card": "30_64", "value": 0.1532806969779472 },
{"card": "31_34", "value": 0.1521916689354751 },
{"card": "32_49", "value": 0.15055812687176695 },
{"card": "32_47", "value": 0.15055812687176695 },
{"card": "32_27", "value": 0.15055812687176695 },
{"card": "32_14", "value": 0.15055812687176695 },
{"card": "32_21", "value": 0.14729104274435068 },

View File

@@ -1,11 +1,14 @@
package com.gempukku.lotro.draft3.evaluator;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Side;
import com.gempukku.lotro.game.CardNotFoundException;
import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
public abstract class AbstractDraftCardEvaluator {
@@ -30,6 +33,28 @@ public abstract class AbstractDraftCardEvaluator {
// This is what bots pick according to
public Map<String, Double> getValuesMap(Map<String, Integer> winningMap, Map<String, Integer> losingMap, int gamesAnalyzed) {
// Remove sites from value maps
Set<String> sitesToRemove = new HashSet<>();
winningMap.keySet().stream().filter(s -> {
try {
return library.getLotroCardBlueprint(s).getCardType().equals(CardType.SITE);
} catch (CardNotFoundException e) {
return false;
}
}).forEach(sitesToRemove::add);
losingMap.keySet().stream().filter(s -> {
try {
return library.getLotroCardBlueprint(s).getCardType().equals(CardType.SITE);
} catch (CardNotFoundException e) {
return false;
}
}).forEach(sitesToRemove::add);
sitesToRemove.forEach(siteKey -> {
winningMap.remove(siteKey);
losingMap.remove(siteKey);
});
// Merge win and lose maps (they are kept separate for potential wr info)
Map<String, Integer> mergedMap = mergeMaps(winningMap, losingMap);

View File

@@ -1,6 +1,7 @@
package com.gempukku.lotro.draft3.evaluator;
import com.gempukku.lotro.common.AppConfig;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.game.CardNotFoundException;
import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
import com.gempukku.lotro.game.ReplayMetadata;
@@ -78,7 +79,7 @@ public class Evaluator {
// Data from solo drafts do not contain rare one ring cards, don't forget to add some value manually after
System.out.println("===FOTR VALUES");
System.out.println("Games analyzes: " + assignmentList.get(0).gamesAnalyzed);
System.out.println("Games analyzed: " + assignmentList.get(0).gamesAnalyzed);
printJsonStyle(fotrValues); // For json file
System.out.println("===FOTR PLAY RATES");
// Regular draft - all rares included, U/C with play rate lower than 0.01 are cut
@@ -86,13 +87,13 @@ public class Evaluator {
printHumanReadable(fotrPlayRates, library);
System.out.println("===TTT VALUES");
System.out.println("Games analyzes: " + assignmentList.get(1).gamesAnalyzed);
System.out.println("Games analyzed: " + assignmentList.get(1).gamesAnalyzed);
printJsonStyle(tttValues);
System.out.println("===TTT PLAY RATES");
printHumanReadable(tttPlayRates, library);
System.out.println("===HOBBIT VALUES");
System.out.println("Games analyzes: " + assignmentList.get(2).gamesAnalyzed);
System.out.println("Games analyzed: " + assignmentList.get(2).gamesAnalyzed);
printJsonStyle(hobbitValues);
printHumanReadable(hobbitValues, library);
}
@@ -119,6 +120,7 @@ public class Evaluator {
}
Set<String> winningCardSet = new HashSet<>(winningDeck.DrawDeck);
winningCardSet.forEach(card -> assignment.deckCount.merge(card.replace("*", "").replace("T", ""), 1, Integer::sum));
winningDeck.AdventureDeck.forEach(siteCard -> assignment.deckCount.merge(siteCard.replace("*", "").replace("T", ""), 1, Integer::sum));
assignment.deckCount.merge(losingDeck.RingBearer.replace("*", "").replace("T", ""), 1, Integer::sum);
if (losingDeck.Ring != null) {
@@ -126,18 +128,21 @@ public class Evaluator {
}
Set<String> losingCardSet = new HashSet<>(losingDeck.DrawDeck);
losingCardSet.forEach(card -> assignment.deckCount.merge(card.replace("*", "").replace("T", ""), 1, Integer::sum));
losingDeck.AdventureDeck.forEach(siteCard -> assignment.deckCount.merge(siteCard.replace("*", "").replace("T", ""), 1, Integer::sum));
assignment.winningMap.merge(winningDeck.RingBearer.replace("*", "").replace("T", ""), 1, Integer::sum);
if (winningDeck.Ring != null) {
assignment.winningMap.merge(winningDeck.Ring.replace("*", "").replace("T", ""), 1, Integer::sum);
}
winningDeck.DrawDeck.forEach(card -> assignment.winningMap.merge(card.replace("*", "").replace("T", ""), 1, Integer::sum));
winningDeck.AdventureDeck.forEach(siteCard -> assignment.winningMap.merge(siteCard.replace("*", "").replace("T", ""), 1, Integer::sum));
assignment.losingMap.merge(losingDeck.RingBearer.replace("*", "").replace("T", ""), 1, Integer::sum);
if (losingDeck.Ring != null) {
assignment.losingMap.merge(losingDeck.Ring.replace("*", "").replace("T", ""), 1, Integer::sum);
}
losingDeck.DrawDeck.forEach(card -> assignment.losingMap.merge(card.replace("*", "").replace("T", ""), 1, Integer::sum));
losingDeck.AdventureDeck.forEach(siteCard -> assignment.losingMap.merge(siteCard.replace("*", "").replace("T", ""), 1, Integer::sum));
}
}
});