6.1 Pre-Flop Betting Strategy

The implemented pre-flop betting strategy is preliminary and makes
use of expert information. It is sophisticated enough to not hamper
overall performance so that the focus can be put on post-flop
play (the more interesting
portion of the game). * Loki* examines several variables, uses
the expert knowledge to determine thresholds for various betting
actions, and chooses a strategy:

**Make0**: fold if it costs more than zero to continue playing, otherwise check.**Call1**: fold if it costs two or more bets to continue (and we have not already voluntarily put money in the pot this round), otherwise check/call.**Make1**: like**Call1**except bet if there has not been a bet this round (with the big blind this cannot happen in the pre-flop).**Call2**: always call/check (despite what the name of this strategy suggests, even more than 2 bets).**Make2**: bet/raise if less than two bet/raises have been made this round, otherwise call.**Make4**: bet/raise until the betting is capped, otherwise call.

** Call1** (and hence ** Make1**) has a special case folding requirement,
that ``we have not already voluntarily put money in the pot this round."
This is a feature added after testing with human opponents on IRC.
Many players were
very aggressive and would raise frequently. This meant that often
when * Loki* called the blind with a decent hand (but not ** Call2** or
better), two or more players would then raise, causing * Loki* to fold.
Due to this commonly exploited weakness, the kludge is necessary
until some amount of opponent of modeling is implemented into the pre-flop.

The thresholds for selecting a betting strategy
are determined from a set of linear formulas of the form

where

For example, if * Loki* is playing * tight*
against 3-4 players, the [* base, increment*] values used for
** Make2** are [200,50] (based on Table B.1)
so the formula used is

based on Equation 6.1. That is, the coefficients used for the linear formula depend on both the variable (

The variable *group* is based on the expected number of players
(
), which is

= | (6.2) | ||

There are three cases of interest for the expected number of players. We round to the nearest integer and determine the appropriate group based on what range that value falls in: ``2 players", ``3-4 players" and ``5 or more players" (see Appendix B). The state variable is the number of players who have already put money in the pot (and have presumably committed to playing). This includes the blinds as well as ourselves (we assume we will play). is an expert-defined value for the average playing percentage of players (by default 0.60). Appropriate opponent modeling would provide much better estimates for this value, based on the observation of the current session .

The parameter *tightness* is a setting which affects the
percentage of hands that * Loki* will play (indirectly, by selecting
a different set of thresholds). The
three settings are *tight*, *moderate*, and *loose* (the default).
With ten players these roughly translate into playing 18%, 21% and
24% of all hands (the distinction is not large so the terms
are a misnomer - all levels are relatively conservative).

There is one [*base*, *increment*] pair per set of
*group*, *strategy* and *tightness* values (Table B.1)
so there are 27 pairs total (since ** Make0** is
the default strategy only three thresholds are needed for determining
the strategy). Once the thresholds are determined, the actual strategy
selected is dependent on the pre-calculated income rate (*IR*) of the
hole cards.
Figure 6.1 describes the algorithm for selecting a strategy.

For example, consider a six player game.
We hold A-T
and are playing * tight*.
The first two players put in blinds, the next two fold, and it
is * Loki*'s turn.
There is still one player, the button, who has not yet acted.
So *position* = 1,
and
(including
* Loki*). We then calculate

and use this to determine

Finally, we find the value of our hand is