Simulation involves playing the hand out several times, where opponent hands and upcoming community cards are dealt randomly each time. The number of simulations can be fixed, variable, or dependent on some real-time constraint. If the sampling method is good, this will give a rough estimate of the strength and potential of your hand.
In contrast, enumeration involves evaluating each possible situation to get exact probabilities of your winning chances. This is not feasible for playing the hand out (given the branching factor and wide variety of possible opponent hands, see Figure 4.2) but is easily calculated for measures such as immediate hand strength: on the flop there are only possible cases for opponent cards. Also note that given enough storage space some of the more complex enumerations could be pre-calculated.
These approaches can easily be mixed with an expert system ( e.g. bet if you have a 50% chance of winning), or with game theory ( e.g. bluff, or call a possible bluff, some game-theoretic optimal function of the time). In particular, opponent modeling can easily be combined with simulation or enumeration to generate reasonably accurate probabilities of outcomes. A useful opponent model would contain information specifying the probability of an opponent holding each possible pair of cards. In any particular simulation, this probability array could be used to appropriately skew the selection of cards held by an opponent. In an enumeration context, these probabilities would be used as weights for each subcase considered. Additionally, a faster but coarser estimate could be generated by only enumerating over the most likely subcases.
Finally, there is another advantage to being able to combine simulation or enumeration with opponent modeling. If the model contains information such as the calling frequency of a given opponent in a given situation, you would be able to take advantage of a more realistic consideration of some outcomes. For example, consider the situation where you are at the river against one opponent, the pot contains $20, and your options are to check or bet $4. Given the probability array of your opponent's model you calculate by enumeration that you have only a 10% chance of having the stronger hand. The model tells you that, when faced by a check in this situation, your opponent will check 100% of the time, and faced by a bet your opponent will fold 30% and call 70%. You can therefore calculate the expected value (EV) of your two options:
EV = 20*0.10 - 0*0.90 = 2.00.
EV = 0.30*(20*1.00) + 0.70*(24*0.00 -4*1.00) = 3.20. Therefore, it is more profitable if you bet (due to the reasonable possibility of scaring your opponent into folding).
This is a simple contrived example but it demonstrates how well an accurate opponent model complements a simulation or enumeration system.