@@ -99,86 +99,86 @@ public static FeatureVector getDefault() {
9999
100100 public static FeatureVector getFittest () {
101101 FeatureVector v = new FeatureVector ();
102- // Merged from 7-island IPOP-CMA-ES (best: 87.5%, ipop_cmaes_hof_v2, 65-dim).
103- // Values averaged from top islands (I2=87.5%, I3=87.5%, I4=85.8%) where signs
104- // agree; corrected where training signal was weak; rare features (secrets,
105- // windfury, stealth, immune: 0-3 deck instances) given sensible defaults.
102+ // 7-island IPOP-CMA-ES (ipop_cmaes_hof_v2, 65-dim). For each feature, the
103+ // raw trained value from the highest-WR island with a sensible sign is used
104+ // unmodified. Source island noted in comment (I2/I3=87.5%, I4=85.8%, etc).
105+ // Rare features ( 0-3 deck instances) use sensible defaults.
106106 // Threat level
107- v .set (WeightedFeature .RED_MODIFIER , -51.0 );
108- v .set (WeightedFeature .YELLOW_MODIFIER , -30.0 );
107+ v .set (WeightedFeature .RED_MODIFIER , -35.281 ); // I2
108+ v .set (WeightedFeature .YELLOW_MODIFIER , -64.756 ); // I2
109109 // Health
110- v .set (WeightedFeature .OWN_HP_FACTOR , 37.0 );
111- v .set (WeightedFeature .OPPONENT_HP_FACTOR , -59.0 );
110+ v .set (WeightedFeature .OWN_HP_FACTOR , 41.294 ); // I2
111+ v .set (WeightedFeature .OPPONENT_HP_FACTOR , -53.548 ); // I2
112112 // Card advantage
113- v .set (WeightedFeature .OWN_CARD_COUNT , 33.0 );
114- v .set (WeightedFeature .OPPONENT_CARD_COUNT , -65.0 );
115- // Own minion stats (7/7 consensus on sign)
116- v .set (WeightedFeature .MINION_INTRINSIC_VALUE , 8.0 );
117- v .set (WeightedFeature .MINION_ATTACK_FACTOR , 46.0 );
118- v .set (WeightedFeature .MINION_HP_FACTOR , 37.0 );
113+ v .set (WeightedFeature .OWN_CARD_COUNT , 5.891 ); // I2
114+ v .set (WeightedFeature .OPPONENT_CARD_COUNT , -39.950 ); // I2
115+ // Own minion stats
116+ v .set (WeightedFeature .MINION_INTRINSIC_VALUE , 12.119 ); // I3
117+ v .set (WeightedFeature .MINION_ATTACK_FACTOR , 31.775 ); // I2
118+ v .set (WeightedFeature .MINION_HP_FACTOR , 66.084 ); // I2
119119 // Own minion keywords
120- v .set (WeightedFeature .MINION_RED_TAUNT_MODIFIER , -41.0 ); // 7/7 negative: in RED despite taunt = losing
121- v .set (WeightedFeature .MINION_YELLOW_TAUNT_MODIFIER , 41.0 );
122- v .set (WeightedFeature .MINION_DEFAULT_TAUNT_MODIFIER , 23.0 );
123- v .set (WeightedFeature .MINION_WINDFURY_MODIFIER , 30.0 ); // rare (3 cards)
124- v .set (WeightedFeature .MINION_DIVINE_SHIELD_MODIFIER , 40.0 );
125- v .set (WeightedFeature .MINION_SPELL_POWER_MODIFIER , 11.0 );
126- v .set (WeightedFeature .MINION_STEALTHED_MODIFIER , 32.0 ); // rare (2 cards)
127- v .set (WeightedFeature .MINION_UNTARGETABLE_BY_SPELLS_MODIFIER , 10.0 );
128- v .set (WeightedFeature .MINION_POISONOUS_MODIFIER , 37.0 );
129- v .set (WeightedFeature .MINION_LIFESTEAL_MODIFIER , 35.0 );
130- v .set (WeightedFeature .MINION_REBORN_MODIFIER , 35.0 );
131- v .set (WeightedFeature .MINION_FROZEN_MODIFIER , -10.0 );
132- v .set (WeightedFeature .MINION_DEATHRATTLE_MODIFIER , -20.0 ); // 6/7 negative: body understatted for cost
133- v .set (WeightedFeature .MINION_RUSH_MODIFIER , -20.0 ); // 5/7 negative: rush spent on play turn
134- v .set (WeightedFeature .MINION_IMMUNE_MODIFIER , 27.0 ); // rare (3 cards)
135- v .set (WeightedFeature .MINION_CANNOT_ATTACK_MODIFIER , -20.0 );
120+ v .set (WeightedFeature .MINION_RED_TAUNT_MODIFIER , -43.848 ); // I2 (7/7 negative)
121+ v .set (WeightedFeature .MINION_YELLOW_TAUNT_MODIFIER , 57.246 ); // I2
122+ v .set (WeightedFeature .MINION_DEFAULT_TAUNT_MODIFIER , 26.369 ); // I2
123+ v .set (WeightedFeature .MINION_WINDFURY_MODIFIER , 30.0 ); // rare (3 cards)
124+ v .set (WeightedFeature .MINION_DIVINE_SHIELD_MODIFIER , 57.090 ); // I4
125+ v .set (WeightedFeature .MINION_SPELL_POWER_MODIFIER , 19.895 ); // I4
126+ v .set (WeightedFeature .MINION_STEALTHED_MODIFIER , 32.0 ); // rare (2 cards)
127+ v .set (WeightedFeature .MINION_UNTARGETABLE_BY_SPELLS_MODIFIER , 5.678 ); // I4
128+ v .set (WeightedFeature .MINION_POISONOUS_MODIFIER , 56.952 ); // I2
129+ v .set (WeightedFeature .MINION_LIFESTEAL_MODIFIER , 20.959 ); // I3
130+ v .set (WeightedFeature .MINION_REBORN_MODIFIER , 30.845 ); // I2
131+ v .set (WeightedFeature .MINION_FROZEN_MODIFIER , -2.830 ); // I2
132+ v .set (WeightedFeature .MINION_DEATHRATTLE_MODIFIER , -7.499 ); // I2 ( 6/7 negative)
133+ v .set (WeightedFeature .MINION_RUSH_MODIFIER , -17.642 ); // I3 ( 5/7 negative)
134+ v .set (WeightedFeature .MINION_IMMUNE_MODIFIER , 27.0 ); // rare (3 cards)
135+ v .set (WeightedFeature .MINION_CANNOT_ATTACK_MODIFIER , -20.751 ); // I3
136136 // Hand/deck/resource
137- v .set (WeightedFeature .CURSED_FACTOR , -26.0 );
138- v .set (WeightedFeature .HARD_REMOVAL_VALUE , 5.0 );
139- v .set (WeightedFeature .QUEST_COUNTER_VALUE , 3.0 );
140- v .set (WeightedFeature .QUEST_REWARD_VALUE , 10.0 );
141- v .set (WeightedFeature .EMPTY_MANA_CRYSTAL_VALUE , 41.0 );
142- v .set (WeightedFeature .OPPOSING_EMPTY_MANA_CRYSTAL_VALUE , -20.0 );
143- v .set (WeightedFeature .OWN_ROASTED_VALUE , -45.0 );
144- v .set (WeightedFeature .OPPONENT_ROASTED_VALUE , 20.0 );
145- v .set (WeightedFeature .OWN_ARMOR_FACTOR , 31.0 );
146- v .set (WeightedFeature .WEAPON_VALUE , 36.0 );
147- v .set (WeightedFeature .OWN_DECK_COUNT , 20.0 );
148- v .set (WeightedFeature .OPPONENT_DECK_COUNT , -79.0 );
149- v .set (WeightedFeature .OWN_SECRET_COUNT , 20.0 ); // rare (0 secret decks)
150- v .set (WeightedFeature .OPPONENT_SECRET_COUNT , -20.0 ); // rare (0 secret decks)
151- v .set (WeightedFeature .LOCKED_MANA_VALUE , -30.0 );
152- v .set (WeightedFeature .OPPONENT_LOCKED_MANA_VALUE , 20.0 );
153- v .set (WeightedFeature .CORPSE_COUNT_VALUE , 28.0 );
137+ v .set (WeightedFeature .CURSED_FACTOR , -26.327 ); // I4
138+ v .set (WeightedFeature .HARD_REMOVAL_VALUE , 5.422 ); // I2
139+ v .set (WeightedFeature .QUEST_COUNTER_VALUE , 3.0 ); // default (7/7 negative)
140+ v .set (WeightedFeature .QUEST_REWARD_VALUE , 4.937 ); // I2
141+ v .set (WeightedFeature .EMPTY_MANA_CRYSTAL_VALUE , 60.907 ); // I2
142+ v .set (WeightedFeature .OPPOSING_EMPTY_MANA_CRYSTAL_VALUE , -26.964 ); // I5
143+ v .set (WeightedFeature .OWN_ROASTED_VALUE , -27.101 ); // I2
144+ v .set (WeightedFeature .OPPONENT_ROASTED_VALUE , 57.639 ); // I3
145+ v .set (WeightedFeature .OWN_ARMOR_FACTOR , 18.628 ); // I3
146+ v .set (WeightedFeature .WEAPON_VALUE , 71.682 ); // I3
147+ v .set (WeightedFeature .OWN_DECK_COUNT , 3.683 ); // I2
148+ v .set (WeightedFeature .OPPONENT_DECK_COUNT , -57.584 ); // I2
149+ v .set (WeightedFeature .OWN_SECRET_COUNT , 20.0 ); // rare (0 secret decks)
150+ v .set (WeightedFeature .OPPONENT_SECRET_COUNT , -20.0 ); // rare (0 secret decks)
151+ v .set (WeightedFeature .LOCKED_MANA_VALUE , -29.993 ); // I2
152+ v .set (WeightedFeature .OPPONENT_LOCKED_MANA_VALUE , 95.209 ); // I3
153+ v .set (WeightedFeature .CORPSE_COUNT_VALUE , 3.732 ); // I2
154154 // Board width
155- v .set (WeightedFeature .OWN_MINION_COUNT , 48.0 );
156- v .set (WeightedFeature .OPPONENT_MINION_COUNT , -36.0 );
155+ v .set (WeightedFeature .OWN_MINION_COUNT , 17.029 ); // I2
156+ v .set (WeightedFeature .OPPONENT_MINION_COUNT , -87.969 ); // I2
157157 // Opponent minion stats
158- v .set (WeightedFeature .OPPONENT_MINION_INTRINSIC_VALUE , -20.0 );
159- v .set (WeightedFeature .OPPONENT_MINION_ATTACK_FACTOR , -56.0 );
160- v .set (WeightedFeature .OPPONENT_MINION_HP_FACTOR , -12.0 );
158+ v .set (WeightedFeature .OPPONENT_MINION_INTRINSIC_VALUE , -94.884 ); // I4
159+ v .set (WeightedFeature .OPPONENT_MINION_ATTACK_FACTOR , -28.155 ); // I2
160+ v .set (WeightedFeature .OPPONENT_MINION_HP_FACTOR , -13.626 ); // I3
161161 // Opponent minion keywords
162- v .set (WeightedFeature .OPPONENT_MINION_RED_TAUNT_MODIFIER , -51.0 );
163- v .set (WeightedFeature .OPPONENT_MINION_YELLOW_TAUNT_MODIFIER , -27.0 );
164- v .set (WeightedFeature .OPPONENT_MINION_DEFAULT_TAUNT_MODIFIER , -38.0 );
165- v .set (WeightedFeature .OPPONENT_MINION_WINDFURY_MODIFIER , -22.0 ); // rare (3 cards)
166- v .set (WeightedFeature .OPPONENT_MINION_DIVINE_SHIELD_MODIFIER , -29.0 );
167- v .set (WeightedFeature .OPPONENT_MINION_SPELL_POWER_MODIFIER , -49.0 );
168- v .set (WeightedFeature .OPPONENT_MINION_STEALTHED_MODIFIER , -20.0 ); // rare (2 cards)
169- v .set (WeightedFeature .OPPONENT_MINION_UNTARGETABLE_BY_SPELLS_MODIFIER , -70.0 );
170- v .set (WeightedFeature .OPPONENT_MINION_POISONOUS_MODIFIER , -20.0 );
171- v .set (WeightedFeature .OPPONENT_MINION_LIFESTEAL_MODIFIER , -50.0 );
172- v .set (WeightedFeature .OPPONENT_MINION_REBORN_MODIFIER , -50.0 );
173- v .set (WeightedFeature .OPPONENT_MINION_FROZEN_MODIFIER , 30.0 );
174- v .set (WeightedFeature .OPPONENT_MINION_DEATHRATTLE_MODIFIER , -15.0 );
175- v .set (WeightedFeature .OPPONENT_MINION_RUSH_MODIFIER , -23.0 );
176- v .set (WeightedFeature .OPPONENT_MINION_IMMUNE_MODIFIER , -50.0 ); // rare (3 cards)
177- v .set (WeightedFeature .OPPONENT_MINION_CANNOT_ATTACK_MODIFIER , 20.0 );
162+ v .set (WeightedFeature .OPPONENT_MINION_RED_TAUNT_MODIFIER , -48.451 ); // I3
163+ v .set (WeightedFeature .OPPONENT_MINION_YELLOW_TAUNT_MODIFIER , -27.547 ); // I4
164+ v .set (WeightedFeature .OPPONENT_MINION_DEFAULT_TAUNT_MODIFIER , -36.627 ); // I2
165+ v .set (WeightedFeature .OPPONENT_MINION_WINDFURY_MODIFIER , -22.0 ); // rare (3 cards)
166+ v .set (WeightedFeature .OPPONENT_MINION_DIVINE_SHIELD_MODIFIER , -29.292 ); // I2
167+ v .set (WeightedFeature .OPPONENT_MINION_SPELL_POWER_MODIFIER , -29.192 ); // I2
168+ v .set (WeightedFeature .OPPONENT_MINION_STEALTHED_MODIFIER , -20.0 ); // rare (2 cards)
169+ v .set (WeightedFeature .OPPONENT_MINION_UNTARGETABLE_BY_SPELLS_MODIFIER , -89.848 ); // I3
170+ v .set (WeightedFeature .OPPONENT_MINION_POISONOUS_MODIFIER , -51.953 ); // I1
171+ v .set (WeightedFeature .OPPONENT_MINION_LIFESTEAL_MODIFIER , -85.700 ); // I2
172+ v .set (WeightedFeature .OPPONENT_MINION_REBORN_MODIFIER , -30.119 ); // I2
173+ v .set (WeightedFeature .OPPONENT_MINION_FROZEN_MODIFIER , 34.888 ); // I2
174+ v .set (WeightedFeature .OPPONENT_MINION_DEATHRATTLE_MODIFIER , -25.806 ); // I2
175+ v .set (WeightedFeature .OPPONENT_MINION_RUSH_MODIFIER , -22.734 ); // I2
176+ v .set (WeightedFeature .OPPONENT_MINION_IMMUNE_MODIFIER , -50.0 ); // rare (3 cards)
177+ v .set (WeightedFeature .OPPONENT_MINION_CANNOT_ATTACK_MODIFIER , 31.366 ); // I3
178178 // Opponent weapon/armor
179- v .set (WeightedFeature .OPPONENT_WEAPON_VALUE , -40.0 );
180- v .set (WeightedFeature .OPPONENT_ARMOR_FACTOR , -21.0 );
181- v .set (WeightedFeature .OPPONENT_LOCKED_MANA_VALUE , 20.0 );
179+ v .set (WeightedFeature .OPPONENT_WEAPON_VALUE , -59.022 ); // I0
180+ v .set (WeightedFeature .OPPONENT_ARMOR_FACTOR , -37.042 ); // I2
181+ v .set (WeightedFeature .OPPONENT_LOCKED_MANA_VALUE , 95.209 ); // I3
182182 return v ;
183183 }
184184
0 commit comments