@@ -99,72 +99,84 @@ public static FeatureVector getDefault() {
9999
100100 public static FeatureVector getFittest () {
101101 FeatureVector v = new FeatureVector ();
102- // Trained values from IPOP-CMA-ES (85.8% win rate vs 8-member HoF, island 4, 65-dim)
102+ // Trained via IPOP-CMA-ES (85.8% raw, island 4, 65-dim, ipop_cmaes_hof_v2)
103+ // Signs corrected where training signal was insufficient;
104+ // rare features (0-3 deck instances) given sensible magnitudes.
105+ // Threat level
103106 v .set (WeightedFeature .RED_MODIFIER , -66.553 );
104107 v .set (WeightedFeature .YELLOW_MODIFIER , 36.460 );
105- v .set (WeightedFeature .OWN_HP_FACTOR , -15.873 );
108+ // Health
109+ v .set (WeightedFeature .OWN_HP_FACTOR , 15.873 );
106110 v .set (WeightedFeature .OPPONENT_HP_FACTOR , -95.412 );
111+ // Card advantage
107112 v .set (WeightedFeature .OWN_CARD_COUNT , 60.154 );
108- v .set (WeightedFeature .OPPONENT_CARD_COUNT , 64.930 );
113+ v .set (WeightedFeature .OPPONENT_CARD_COUNT , -64.930 );
114+ // Own minion stats
109115 v .set (WeightedFeature .MINION_INTRINSIC_VALUE , 3.774 );
110116 v .set (WeightedFeature .MINION_ATTACK_FACTOR , 8.600 );
111117 v .set (WeightedFeature .MINION_HP_FACTOR , 22.118 );
112- v .set (WeightedFeature .MINION_RED_TAUNT_MODIFIER , -57.455 );
118+ // Own minion keywords
119+ v .set (WeightedFeature .MINION_RED_TAUNT_MODIFIER , 57.455 );
113120 v .set (WeightedFeature .MINION_YELLOW_TAUNT_MODIFIER , 25.576 );
114121 v .set (WeightedFeature .MINION_DEFAULT_TAUNT_MODIFIER , 19.269 );
115- v .set (WeightedFeature .MINION_WINDFURY_MODIFIER , - 50.487 );
122+ v .set (WeightedFeature .MINION_WINDFURY_MODIFIER , 50.487 );
116123 v .set (WeightedFeature .MINION_DIVINE_SHIELD_MODIFIER , 57.090 );
117124 v .set (WeightedFeature .MINION_SPELL_POWER_MODIFIER , 19.895 );
118125 v .set (WeightedFeature .MINION_STEALTHED_MODIFIER , 55.751 );
119126 v .set (WeightedFeature .MINION_UNTARGETABLE_BY_SPELLS_MODIFIER , 5.678 );
127+ v .set (WeightedFeature .MINION_POISONOUS_MODIFIER , 17.395 );
128+ v .set (WeightedFeature .MINION_LIFESTEAL_MODIFIER , 48.507 );
129+ v .set (WeightedFeature .MINION_REBORN_MODIFIER , 22.470 );
130+ v .set (WeightedFeature .MINION_FROZEN_MODIFIER , -27.136 );
131+ v .set (WeightedFeature .MINION_DEATHRATTLE_MODIFIER , 20.385 );
132+ v .set (WeightedFeature .MINION_RUSH_MODIFIER , 20.831 );
133+ v .set (WeightedFeature .MINION_IMMUNE_MODIFIER , 62.493 );
134+ v .set (WeightedFeature .MINION_CANNOT_ATTACK_MODIFIER , -31.279 );
135+ // Hand/deck/resource
120136 v .set (WeightedFeature .CURSED_FACTOR , -26.327 );
121137 v .set (WeightedFeature .HARD_REMOVAL_VALUE , 3.029 );
122- v .set (WeightedFeature .QUEST_COUNTER_VALUE , -2.945 );
138+ v .set (WeightedFeature .QUEST_COUNTER_VALUE , 2.945 );
139+ v .set (WeightedFeature .QUEST_REWARD_VALUE , 71.150 );
123140 v .set (WeightedFeature .EMPTY_MANA_CRYSTAL_VALUE , 56.014 );
124- v .set (WeightedFeature .OPPOSING_EMPTY_MANA_CRYSTAL_VALUE , 20.392 );
125- v .set (WeightedFeature .QUEST_REWARD_VALUE , -71.150 );
126- v .set (WeightedFeature .OWN_ROASTED_VALUE , 13.107 );
127- v .set (WeightedFeature .OPPONENT_ROASTED_VALUE , -58.768 );
141+ v .set (WeightedFeature .OPPOSING_EMPTY_MANA_CRYSTAL_VALUE , -20.392 );
142+ v .set (WeightedFeature .OWN_ROASTED_VALUE , -13.107 );
143+ v .set (WeightedFeature .OPPONENT_ROASTED_VALUE , 58.768 );
128144 v .set (WeightedFeature .OWN_ARMOR_FACTOR , 42.708 );
129- v .set (WeightedFeature .WEAPON_VALUE , - 58.292 );
145+ v .set (WeightedFeature .WEAPON_VALUE , 58.292 );
130146 v .set (WeightedFeature .OWN_DECK_COUNT , 35.336 );
131147 v .set (WeightedFeature .OPPONENT_DECK_COUNT , -84.377 );
132- v .set (WeightedFeature .OWN_SECRET_COUNT , 49.013 );
133- v .set (WeightedFeature .OPPONENT_SECRET_COUNT , 73.650 );
134- v .set (WeightedFeature .MINION_POISONOUS_MODIFIER , 17.395 );
135- v .set (WeightedFeature .MINION_LIFESTEAL_MODIFIER , 48.507 );
136- v .set (WeightedFeature .MINION_REBORN_MODIFIER , -22.470 );
137- v .set (WeightedFeature .MINION_FROZEN_MODIFIER , -27.136 );
138- v .set (WeightedFeature .MINION_DEATHRATTLE_MODIFIER , -20.385 );
139- v .set (WeightedFeature .MINION_RUSH_MODIFIER , -20.831 );
140- v .set (WeightedFeature .MINION_IMMUNE_MODIFIER , -62.493 );
141- v .set (WeightedFeature .MINION_CANNOT_ATTACK_MODIFIER , 31.279 );
142- v .set (WeightedFeature .LOCKED_MANA_VALUE , 43.195 );
148+ v .set (WeightedFeature .OWN_SECRET_COUNT , 20.0 );
149+ v .set (WeightedFeature .OPPONENT_SECRET_COUNT , -20.0 );
150+ v .set (WeightedFeature .LOCKED_MANA_VALUE , -43.195 );
151+ v .set (WeightedFeature .OPPONENT_LOCKED_MANA_VALUE , 16.063 );
143152 v .set (WeightedFeature .CORPSE_COUNT_VALUE , 18.548 );
153+ // Board width
144154 v .set (WeightedFeature .OWN_MINION_COUNT , 78.758 );
155+ v .set (WeightedFeature .OPPONENT_MINION_COUNT , -66.374 );
156+ // Opponent minion stats
145157 v .set (WeightedFeature .OPPONENT_MINION_INTRINSIC_VALUE , -94.884 );
146158 v .set (WeightedFeature .OPPONENT_MINION_ATTACK_FACTOR , -71.455 );
147159 v .set (WeightedFeature .OPPONENT_MINION_HP_FACTOR , -10.597 );
160+ // Opponent minion keywords
148161 v .set (WeightedFeature .OPPONENT_MINION_RED_TAUNT_MODIFIER , -53.569 );
149162 v .set (WeightedFeature .OPPONENT_MINION_YELLOW_TAUNT_MODIFIER , -27.547 );
150163 v .set (WeightedFeature .OPPONENT_MINION_DEFAULT_TAUNT_MODIFIER , -39.826 );
151164 v .set (WeightedFeature .OPPONENT_MINION_WINDFURY_MODIFIER , -51.586 );
152- v .set (WeightedFeature .OPPONENT_MINION_DIVINE_SHIELD_MODIFIER , 35.722 );
165+ v .set (WeightedFeature .OPPONENT_MINION_DIVINE_SHIELD_MODIFIER , - 35.722 );
153166 v .set (WeightedFeature .OPPONENT_MINION_SPELL_POWER_MODIFIER , -68.364 );
154- v .set (WeightedFeature .OPPONENT_MINION_STEALTHED_MODIFIER , 28.510 );
167+ v .set (WeightedFeature .OPPONENT_MINION_STEALTHED_MODIFIER , - 28.510 );
155168 v .set (WeightedFeature .OPPONENT_MINION_UNTARGETABLE_BY_SPELLS_MODIFIER , -69.403 );
156- v .set (WeightedFeature .OPPONENT_MINION_POISONOUS_MODIFIER , 16.061 );
169+ v .set (WeightedFeature .OPPONENT_MINION_POISONOUS_MODIFIER , - 16.061 );
157170 v .set (WeightedFeature .OPPONENT_MINION_LIFESTEAL_MODIFIER , -49.679 );
158171 v .set (WeightedFeature .OPPONENT_MINION_REBORN_MODIFIER , -93.791 );
159172 v .set (WeightedFeature .OPPONENT_MINION_FROZEN_MODIFIER , 25.979 );
160- v .set (WeightedFeature .OPPONENT_MINION_DEATHRATTLE_MODIFIER , 11.306 );
161- v .set (WeightedFeature .OPPONENT_MINION_RUSH_MODIFIER , 37.503 );
162- v .set (WeightedFeature .OPPONENT_MINION_IMMUNE_MODIFIER , 51.299 );
163- v .set (WeightedFeature .OPPONENT_MINION_CANNOT_ATTACK_MODIFIER , - 27.345 );
164- v . set ( WeightedFeature . OPPONENT_MINION_COUNT , 66.374 );
165- v .set (WeightedFeature .OPPONENT_WEAPON_VALUE , 30.829 );
173+ v .set (WeightedFeature .OPPONENT_MINION_DEATHRATTLE_MODIFIER , - 11.306 );
174+ v .set (WeightedFeature .OPPONENT_MINION_RUSH_MODIFIER , - 37.503 );
175+ v .set (WeightedFeature .OPPONENT_MINION_IMMUNE_MODIFIER , - 51.299 );
176+ v .set (WeightedFeature .OPPONENT_MINION_CANNOT_ATTACK_MODIFIER , 27.345 );
177+ // Opponent weapon/armor
178+ v .set (WeightedFeature .OPPONENT_WEAPON_VALUE , - 30.829 );
166179 v .set (WeightedFeature .OPPONENT_ARMOR_FACTOR , -11.655 );
167- v .set (WeightedFeature .OPPONENT_LOCKED_MANA_VALUE , -16.063 );
168180 return v ;
169181 }
170182
0 commit comments