Last data update: 2014.03.03

R: Black Jack Hybrid Decision Network
BlackJackR Documentation

Black Jack Hybrid Decision Network

Description

An object of class HydeNetwork establishing a graphical model for a game of Black Jack.

Usage

BlackJack

Format

A HydeNetwork object constructed using the code shown in the example. The network has seven random nodes, three ten deterministic nodes, three decision nodes, and one utility node. This is (almost) the same network used in 'vignette("DecisionNetworks", package="HydeNet")'.

Examples

## Not run: 
BlackJack <-
       HydeNetwork(~ initialAces | card1*card2
                   + initialPoints | card1*card2
                   + highUpcard | dealerUpcard
                   + hit1 | initialPoints*highUpcard
                   + acesAfterCard3 | initialAces*card3
                   + pointsAfterCard3 | card1*card2*card3*acesAfterCard3
                   + hit2 | pointsAfterCard3*highUpcard
                   + acesAfterCard4 | acesAfterCard3*card4
                   + pointsAfterCard4 | card1*card2*card3*card4*acesAfterCard4
                   + hit3 | pointsAfterCard4*highUpcard
                   + acesAfterCard5 | acesAfterCard4*card5
                   + pointsAfterCard5 | card1*card2*card3*card4*card5*acesAfterCard5
                   + playerFinalPoints | initialPoints*hit1*pointsAfterCard3
                   *hit2*pointsAfterCard4*hit3*pointsAfterCard5
                   + dealerFinalPoints | dealerUpcard
                   + payoff | playerFinalPoints*dealerFinalPoints)
cardProbs  <- c(rep(1/13,8), 4/13, 1/13)  # probs. for 2, 3, ..., 9, (10-K), A

BlackJack <- setNode(BlackJack, card1, nodeType="dcat",
                     pi=vectorProbs(p=cardProbs, card1))
BlackJack <- setNode(BlackJack, card2, nodeType="dcat",
                     pi=vectorProbs(p=cardProbs, card2))
BlackJack <- setNode(BlackJack, card3, nodeType="dcat",
                     pi=vectorProbs(p=cardProbs, card3))
BlackJack <- setNode(BlackJack, card4, nodeType="dcat",
                     pi=vectorProbs(p=cardProbs, card4))
BlackJack <- setNode(BlackJack, card5, nodeType="dcat",
                     pi=vectorProbs(p=cardProbs, card5))

BlackJack <- setNode(BlackJack, dealerUpcard, nodeType="dcat",
               pi=vectorProbs(p=cardProbs, dealerUpcard))

#Note: node dealerFinalPoints will be defined below, following some discussion
#      about its conditional probability distribution.

#####################################
# Deterministic Nodes
#####################################
BlackJack <- setNode(BlackJack, highUpcard,
               "determ", define=fromFormula(),
               nodeFormula = highUpcard ~ ifelse(dealerUpcard > 8, 1, 0))

BlackJack <- setNode(BlackJack, initialAces,
               "determ", define=fromFormula(),
               nodeFormula = initialAces ~ ifelse(card1==10,1,0) +
                              ifelse(card2==10,1,0))

BlackJack <- setNode(BlackJack, acesAfterCard3,
               "determ", define=fromFormula(),
               nodeFormula = acesAfterCard3 ~ initialAces + ifelse(card3==10,1,0))

BlackJack <- setNode(BlackJack, acesAfterCard4,
               "determ", define=fromFormula(),
               nodeFormula = acesAfterCard4 ~ acesAfterCard3 + ifelse(card4==10,1,0))

BlackJack <- setNode(BlackJack, acesAfterCard5,
               "determ", define=fromFormula(),
               nodeFormula = acesAfterCard5 ~ acesAfterCard4 + ifelse(card5==10,1,0))

BlackJack <- setNode(BlackJack, initialPoints,
               "determ", define=fromFormula(),
               nodeFormula = initialPoints ~ card1+card2+2)

BlackJack <- setNode(BlackJack, pointsAfterCard3, "determ", define=fromFormula(),
               nodeFormula = pointsAfterCard3 ~
                 ifelse(acesAfterCard3 == 3,
                        13,
                        ifelse(acesAfterCard3 == 2,
                               card1 + card2 + card3 + 3 - 10,
                               ifelse(acesAfterCard3 == 1,
                                      ifelse(card1 + card2 + card3 + 3 > 22,
                                             card1 + card2 + card3 + 3 - 10,
                                             card1 + card2 + card3 + 3),
                                      card1 + card2 + card3 + 3
                               )
                        )
                 )
)

BlackJack <- setNode(BlackJack, pointsAfterCard4, "determ", define=fromFormula(),
               nodeFormula = pointsAfterCard4 ~
                 ifelse(acesAfterCard4 == 4,
                        14,
                        ifelse(acesAfterCard4 == 3,
                               ifelse(card1 + card2 + card3 + card4 + 4 > 38,
                                      card1 + card2 + card3 + card4 + 4 - 30,
                                      card1 + card2 + card3 + card4 + 4 - 20
                               ),
                               ifelse(acesAfterCard4 > 0,
                                      ifelse(card1 + card2 + card3 + card4 + 4 > 22,
                                             card1 + card2 + card3 + card4 + 4 - 10,
                                             card1 + card2 + card3 + card4 + 4
                                      ),
                                      card1 + card2 + card3 + card4 + 4
                               )
                        )
                 )
)

BlackJack <-
  setNode(BlackJack, pointsAfterCard5, "determ", define=fromFormula(),
          nodeFormula = pointsAfterCard5 ~
            ifelse(acesAfterCard5 == 5,
              15,
              ifelse(acesAfterCard5 == 4,
                ifelse(card1 + card2 + card3 + card4 + card5 + 5 > 51,
                  card1 + card2 + card3 + card4 + card5 + 5 - 40,
                  card1 + card2 + card3 + card4 + card5 + 5 - 30
                ),
                ifelse(acesAfterCard5 == 3,
                  ifelse(card1 + card2 + card3 + card4 + card5 + 5 > 51,
                    card1 + card2 + card3 + card4 + card5 + 5 - 30,
                    card1 + card2 + card3 + card4 + card5 + 5 - 20
                  ),
                  ifelse(acesAfterCard5 == 2,
                    ifelse(card1 + card2 + card3 + card4 + card5 + 5 > 31,
                      card1 + card2 + card3 + card4 + card5 + 5 - 20,
                      card1 + card2 + card3 + card4 + card5 + 5 - 10
                    ),
                    ifelse(acesAfterCard5 > 0,
                      ifelse(card1 + card2 + card3 + card4 + card5 + 5 > 22,
                        card1 + card2 + card3 + card4 + card5 + 5 - 10,
                        card1 + card2 + card3 + card4 + card5 + 5
                      ),
                      card1 + card2 + card3 + card4 + card5 + 5
                    )
                  )
                )
              )
            )
)

BlackJack <- setNode(BlackJack, playerFinalPoints, "determ", define=fromFormula(),
               nodeFormula = playerFinalPoints ~
                 ifelse(hit1 == 0,
                        initialPoints,
                        ifelse(hit2 == 0,
                               pointsAfterCard3,
                               ifelse(hit3 == 0, pointsAfterCard4, pointsAfterCard5)
                        )
                 )
)

BlackJack <- setDecisionNodes(BlackJack, hit1, hit2, hit3)
BlackJack <- setUtilityNodes(BlackJack, payoff)

## End(Not run)

Results