When an opponent action is observed, the Opponent Modeler obtains the
threshold hand value needed for the observed action and bases the weight
adjustment on that value.
The Opponent Modeler maintains statistics for each opponent between
games. These statistics are used to calculate the frequency of folding,
calling and raising of each opponent per round and number of bets to
call. From these frequencies, the Opponent Modeler deduces the
average ()
and variance (
)
of the threshold needed for the
observed action. The threshold can be obtained either from default
action frequencies (generic opponent modeling) or from the opponent's observed
action frequencies (specific opponent modeling).
During the reweighting process, the reweight factors (
)
are assigned based on the distance between the hand value (income rate
for the preflop and EHS for the postflop rounds) and
.
Since the
income rates used in the preflop are not a percentile hand valuing system
like EHS, the
obtained needs to be converted from a percentile value to
a value on the income rate scale.
To achieve this,
is used to index into a sorted array (sample the nearest
point) of the
= 1326 (all two-card hands) income rate values.
For example, based on observed frequencies, the Opponent Modeler deduces that
an opponent needs a median EHS ()
of 0.6
to call a bet on the flop, with a lower bound of 0.4 and an upper bound of 0.8
(
). In this case, all hands with an EHS greater
than 0.8 are given reweighting factors of 1.0. Any hand with a value
less than 0.4 is assigned a reweighting
factor of 0.01, and a linear interpolation is performed for values
between 0.4 and 0.8.
To avoid eliminating legal subcases completely, no weight is
allowed to go below 0.01.
In Loki-1, the Opponent Modeler only performs one
reweighting per model per round. A copy of the weight table is stored at
the beginning of each round and used in the reweighting process each time
a new action is witnessed that requires a higher threshold. For example, assume
an opponent calls a bet, and the reweight process uses
to
adjust the weight table. If, later in the betting round, that opponent
raises, the reweighting will be done with the higher value of
over
the stored copy of the weight table.