Você está na página 1de 12

SISTEMA FUZZY DE APOIO À TOMADA DE DECISÃO NO

JOGO DE POKER
Felipe Ribas Forbeck

Departamento de Ciência da Computação (DECOMP)


Universidade Estadual do Centro-Oeste (UNICENTRO) – Guarapuava, PR – Brazil
hopper.frf@gmail.com

Resumo. A dificuldade encontrada no aprendizado de alguns jogos de cartas é normal,


porém existem jogos que não exigem apenas que o jogador conheça as regras para jogar, mas tenha
macetes que o auxiliem durante o jogo. É o que acontece no jogo de Poker, pois é um jogo que
necessita de grande experiência do jogador e que nem sempre iniciantes conseguem entender. Para
agilizar e facilitar o aprendizado de regras e macetes durante o jogo, este trabalho propõe uma
ferramenta fuzzy de apoio à tomada de decisão no jogo de Poker.
Palavras-Chave: Lógica Fuzzy, Sistema Fuzzy, Jogo de Poker

Abstract. The difficulty in learning a few games of cards is normal, but there are games that
require not only the player knows the rules for play, but you tricks that help during the game. This is
what happens in the game of poker, because it is a game that requires extensive experience of the
player and that beginners can not always understand. To expedite and facilitate the learning of rules
and tricks during the game, this paper proposes a fuzzy tool to support decision making in the game of
poker.
Key Words: Fuzzy Logic, Fuzzy System, Poker Game

1. Introdução

O termo “fuzzy” em língua inglesa pode ter diversos significados, depende


do contexto de interesse, mas o conceito básico passa sempre pelos termos: vago,
indistinto, incerto, nebuloso, difuso [REZENDE, 2005]. Tratando-se de algo
impreciso, tem-se a lógica fuzzy, desenvolvida por [ZADEH, 1965] que concebeu
também a teoria dos conjuntos fuzzy. Este paradigma lógico, difere-se da lógica
clássica por trabalhar com uma grande variedade de informações vagas e incertas
[CANUTO, 2008], e que estas podem ser traduzidas para expressões como “baixo”,
“médio”, “alto”, “a maioria”, “mais ou menos”, dentre outros. Podendo também, este
modelo lógico, ser combinado com outras técnicas como Redes Neurais Artificiais,
Algoritmos Genéticos, dentre outros.

Dessa forma, a lógica fuzzy permite que informações difíceis de quantificar e


que fogem do conceito da lógica binária, sejam tratadas. Possui aplicação nas mais
diversas áreas, como por exemplo: análise de dados, construção de Sistemas
Especialistas, reconhecimento de padrões, dentre outros [REZENDE, 2005]. Vários
outros trabalhos são desenvolvidos baseados na Teoria dos Conjuntos Fuzzy como
Diagnóstico de Falhas em Linha de Distribuição de Energia, Controle Fuzzy
Multivariável de um Sistema de Tanques Interativos, dentre outros. Ambos os
trabalhos podem ser encontrados em [REZENDE, 2005] na sessão de aplicações D
e G, respectivamente.

Apesar de existir inúmeras aplicações para a lógica fuzzy, tem-se um


obstáculo a ser superado, como representar os dados imprecisos fora do domínio
convencional (lógica clássica). Dentre estas diversas aplicações e problemas que
envolvem dados incertos, está o problema de aprendizado de jogos de cartas, como
no jogo de Poker, mais especificamente o estilo Poker Five Card Draw. Por ser um
jogo que envolve um número de combinações de cartas exorbitante e que por sua
vez, difíceis de quantificar, e que também dificultam o aprendizado do jogador
iniciante, a criação de um Sistema Fuzzy [CANUTO, 2008] que auxilie a tomada de
decisão do jogador, facilita o entendimento do jogo, bem como o aprendizado.

O jogo de Poker é um jogos de cartas mais jogados mundialmente e o


anseio de muitas pessoas aprenderem como se joga é muito grande [POKER,
2008]. Isto serve como motivação para se criar tal ferramenta, uma vez que
disponibilizada em rede, Internet, poderá ser avaliada por diversos jogadores.

Dessa forma este trabalho apresenta o desenvolvimento e o funcionamento


de uma Sistema Fuzzy de apoio à tomada de decisão no jogo de Poker, que visa
facilitar o aprendizado do jogo, bem como proporcionar ao jogador noções de jogo
que só seriam adquiridas com experiência.

Este artigo está organizado da seguinte forma, a sessão 2 descreve


brevemente sobre Sistemas Fuzzy; a sessão 3 apresenta a aplicação; 4 demonstra
a representação do problema do mundo real; a sessão 5 mostra alguns casos de
testes e resultados; a 6 apresenta propostas futuras; e por fim, a sessão 7
conclusões do trabalho.
2. Sistemas Fuzzy

Como sistemas capazes de processar eficientemente informações


imprecisas e qualitativas de forma geral, os modelos de inferência fuzzy são
especialmente adequados em processos que exigem tomadas de decisão por parte
de operadores e gerentes de operação. Aplicações deste tipo representam o
conhecimento e a experiência existentes sobre um determinado estado do processo
ou da situação e, a partir da entrada de dados sobre os seus estados atuais, podem
inferir sua evolução temporal, as variações importantes que ocorreram ou mesmo
gerar sugestões sobre as próximas ações a serem tomadas[REZENDE, 2005].

Sistemas Fuzzy, em geral, possuem a mesma estrutura lógica. Em outras


palavras, todo o processo realizado para a obtenção do resultado em diferentes
Sistemas Fuzzy, geralmente, são semelhantes. A Figura 1 ilustra uma arquitetura
básica de um sistema. Esta arquitetura é composta por uma série de operações e
métodos que são explicados no decorrer do trabalho com exemplos da própria
aplicação.

Figura 1. Arquitetura básica.

Sistemas de apoio à tomada de decisão, algoritmos para aproximação de


funções e sistemas controladores baseado em lógica fuzzy [ZADEH, 1965] estão
entre as formas mais populares de utilização deste conceito.
3. Aplicação

Poker é um jogo clássico de cartas, jogado mundialmente em diversas


variações. Normalmente o objetivo do jogador é formar a melhor mão de Poker com
cinco cartas. Mas o Poker também é um jogo de apostas. Para conseguir as cartas
que precisa, é necessário pagar um preço. O preço é decidido conforme as apostas
que os jogadores depositam. As apostas são o pote, que no fim é ganho pelo
jogador com a melhor mão / jogada [POKER, 2008].

O jogo possui diversas variações como Texas Hold'em, Omaha, Seven Card
Stud, Five Card Draw. É difícil para iniciantes aprender o jogo e ao mesmo tempo
dominar os macetes que muitas vezes fazem com que o jogador vença.

Por existir muitas variações do jogo, dificulta a criação de uma ferramenta


de ajuda que seja genérica, ou seja, que englobe todos os diferentes estilos. Então
optou-se pelo estilo Five Card Draw, que é o estilo pioneiro do Poker.

Esta modalidade é bem simples, sendo que o jogador adquire cinco cartas
viradas para baixo. Podendo descartar algumas ou todas e receber uma mesma
quantia de cartas novas. O jogador com a melhor mão alta ganha o pote (valor em
jogo). O jogador também não consegue ver nenhuma das cartas de seus oponentes.
A única informação que ele tem sobre as mãos dos adversários é como eles
apostam e quantas cartas que eles trocam.

Quanto a distribuição das cartas, quando os blinds (aposta obrigatória)


forem depositados, cada jogador recebe cinco cartas. Em seguida há a possibilidade
de troca. Quando a primeira rodada de apostas terminar (todos têm direito de
apostar), os jogadores que continuarem no jogo podem trocar cartas, até cinco
cartas novas, ou não trocar (manter mão). A troca é realizada com o objetivo de
melhorar o jogo em mãos, e para isto é necessário conhecimento dos jogos e uma
boa experiência de jogo.

Sendo necessária esta experiência, iniciantes geralmente têm muita


dificuldade em decidir a hora de apostar ou desistir de uma mão.

Existem várias mãos, combinações de cartas, e cada uma delas possui um


valor, a mão mais alta da mesa é a mão vencedora. A Figura 2 ilustra as possíveis
jogadas de se fazer na modalidade aqui abordada, vale ressaltar que estão
organizadas de forma decrescente, a primeira jogada é a maior possível de se fazer.
As regras podem ser encontradas em [POKER, 2008].

Figura 2. Jogadas Five Card Draw.

4. Representação do Problema

Devido o uso de diferentes plataformas para computadores pessoais, a


ferramenta aqui proposta foi desenvolvida utilizando a tecnologia Java1, para
garantir a portabilidade do sistema. Produzida com o auxílio de uma ferramenta
chamada de NetBeans2, o desenvolvimento foi baseado rigorosamente nos passos
descritos nas sessões a seguir, 4.1 a 4.4.

A sessão 4.1 descreve a transposição do problema para o mundo real, a 4.2


mostra a forma de representação do problema no domínio da lógica difusa, bem

1 http://java.sun.com
2 http://www.netbeans.org
como o processo de “fuzzyficação”, já a sessão 4.3 relata sobre a composição das
regras de produção, e por fim, a sessão 4.4 descreve sobre o sistema de inferência
e o processo de “defuzzyficação”.

4.1. Abstração do problema

Primeiramente é necessário conhecer quais são os parâmetros / variáveis


fuzzy do problema, neste caso os dados incertos são identificados nos valores das
cartas. Sendo que as cartas variam de Dois a Às. Tal variação dificulta quantificar o
jogo, ou seja, expressar de uma forma precisa quanto é o valor de uma jogada
sobre outra. Dessa forma, atribui-se às informações incertas (cartas), variáveis
lingüísticas, que denotam como cada variável pode ser classificada, descritas na
sessão 4.2.

Assim, para distinguir as diferentes classes / conjuntos que estas variáveis


imprecisas se enquadram, utiliza-se da representação de conjunto fuzzy. Segundo
[PEDRYCS & GOMIDE, 1998], conjunto é uma tentativa de organizar, resumir e
generalizar conhecimento sobre objetos. Neste sentido trabalha-se com uma
classificação sobre um objeto pertencer ou não a um determinado conjunto. Esta
classificação pode ser representada por uma função característica:

 1, se x ∈ A
f A ( x) =  (1)
 0, se x ∉ A

Um conjunto fuzzy A em um universo de discurso U é definido por uma


função de pertinência µ a~ ( x) que assume valores em um intervalo [0,1]:

µ a~ : U → [0,1] (2)

A representação de conjunto fuzzy aqui abordada é do tipo trapezoidal


denotado por a~ = ( m1 , m2 , δ , β ) , possui sua função de pertinência, µ a~ ( x) , definida da
seguinte forma:
 0, se x ≤ m1 − δ
 x − ( m1 − δ )
µx
 , se m1 − δ < x < m1
 δ
µ a~ ( x ) =  1, se m1 ≤ x ≤ m2 1
 ( m2 + β ) − x
 , se m2 < x < m2 + β
β

 0, se x ≥ m2 + β x
m1-δ m1 m2 m2+β

tal que: Figura 3. Exemplo de um número fuzzy trapezoidal

m1, m2: extremos (inferior e superior) do intervalo modal;

m1-s: espalhamento à esquerda; e

m2+b: espalhamento à direita.

Notação: Os valores m1-s e m2+ β (m1+β, para triangulares) são denominados


de limitante inferior e limitante superior, respectivamente.

Uma outra abordagem de número fuzzy utilizada é da forma triangular e,


que pode ser definido como a~ = ( m1 , δ , β ) , tendo sua função de pertinência, µ a~ ( x) ,

definida pela expressão:


µ
 0, se x < ( m1 − δ )
 x− ( m1 − δ ) 1
 , se ( m1 − δ ) ≤ x ≤ m1
 δ
µ a~ ( x ) =  (
m + β )− x
 1 , se m1 < x ≤ ( m1 + β )
 β
 0, se x > ( m1 + β ) m1-δ m1 m1+β x

tal que: Figura 4. Exemplo de um número fuzzy triangular

m1: valor modal (Definição 4);

m1-s : espalhamento à esquerda; e

m1+b : espalhamento à direita.

4.2. Variáveis Lingüísticas

Uma variável lingüística é definida como uma entidade utilizada para


representar de modo impreciso um conceito ou uma variável de um dado problema
[REZENDE, 2005]. Ela admite como valores apenas expressões lingüísticas como
“baixo”, “médio”, “alto”, que são as expressões usadas para denotar os diferentes
conjuntos existentes na aplicação. Estes conjuntos são definidos para que seja
possível classificar a variável carta em relação a sua pertinência. Os conjuntos
Baixo e Alto são definidos pela função de pertinência trapezoidal, e o conjunto
Médio pela função de pertinência triangular, como demonstra a sessão 4.1. A Figura
5 ilustra os conjuntos, bem como seus limites e intersecções. Vale ressaltar que as
cartas J, Q, K e A, são representadas pelos números 11, 12, 13 e 14,
respectivamente. Já as demais cartas, pelos seus próprios valores.

Figura 5. Conjuntos Fuzzy

4.3. Regras de Produção Fuzzy

A maneira mais comum de se armazenar informações em uma Base de


Conhecimento Fuzzy é a representação através de regras de produção fuzzy. Uma
regra de produção é formada, normalmente, por duas partes principais:

if < antecedente > then < conseqüente >

O antecedente é composto por um conjunto de condições que, quando


satisfeitas, mesmo parcialmente, determinam o processamento do conseqüente da
regra [REZENDE, 2005].

As regras concebidas para a implementação da ferramenta aqui proposta,


são formadas por um antecedente e um conseqüente. O Quadro 1 descreve
algumas das regras que formam a Base de Conhecimento do sistema, sendo que no
total a base é composta por 29 regras.

Quadro 1. Exemplos de Regras de Produção Fuzzy


1. Se H = Médio Então Jogo = Muito Baixo;
2. Se H = Alto Então Jogo = Muito Baixo;
3. Se P = Baixo Então Jogo = Muito Baixo;
4. Se TP = Baixo Então Jogo = Muito Baixo;
5. Se TP = Médio Então Jogo = Baixo;
6. Se S = Médio Então Jogo = Médio;
7. Se S = Alto Então Jogo = Médio Alto;
8. Se F = Baixo Então Jogo = Médio Alto;
9. Se F = Médio Então Jogo = Médio Alto;
10. Se FK = Baixo Então Jogo = Alto;
11. Se FK = Médio Então Jogo = Alto;
12. Se FK = Alto Então Jogo = Muito Alto;
13. Se FS = Baixo Então Jogo = Muito Alto;

As regras foram criadas de acordo com as jogadas possíveis, Figura 2, e


com base na opinião de jogadores experientes. Toda vez que é inserida uma
entrada crisp no sistema, é de responsabilidade do componente fuzzyficador
transformar esse dado em um dado incerto, ou sejam, fuzzyficar. Dessa forma,
como a escolha do modelo de inferência depende da forma de armazenamento da
informação, ou seja, depende da estrutura da regra. Neste caso, o armazenamento
das informações trabalha apenas com as variáveis lingüísticas, sem valores de
pertinências. Então, buscou-se um modelo de inferência que condiz com as
estruturas de regras aqui apresentadas. O método abordado é explicado na sessão
a seguir, 4.5.

4.3. Avaliador Fuzzy

O componente avaliador fuzzy tem como objetivo receber os parâmetros


fuzzyficados, e compará-los com os casos da bases de dados, no caso regras. Toda
vez que uma regra for disparada, ou seja, pelo menos um antecedente é ativado, ela
deve ser armazenada, pois o próximo passo é verificar com que valor esta regra foi
ativada, para gerar uma saída. Isso é responsabilidade do modelo de Inferência.

4.5. Modelo de Inferência

O modelo de inferência é responsável por definir como serão processados os


antecedentes, porém ele só pode ser definido após ter bem claro como é a estrutura
de uma regra, pois dela depende todo o processamento. Dessa forma, por utilizar
apenas variáveis lingüísticas nos antecedentes das regras, optou-se pelo método
de Sugeno [REZENDE, 2005].

O modelo funciona basicamente gerando uma saída numérica, esta saída é


obtida por meio do processamento sobre as regras ativadas. O processamento é
apenas um cálculo, que é a soma das saídas das regras ponderada pelos valores
de ativação (encontrados nos conseqüentes).

Assim, a saída do processamento realizado, é chamada de saída crisp.


Pois, o após realizar a inferência com o modelo supracitado, todos os parâmetros
incertos são convertidos em um único valor, dito valor clássico. Este processo ocorre
para gerar um resultado que possa ser entendido pelo usuário do sistema, no caso
uma dica para auxiliar a tomada de decisão. Dessa forma, recebe o nome de
processo de “defuzzyficação”. Que é apenas a conversão do número fuzzy em um
número crisp (clássico).

5. Testes e Resultados

Para melhor entendimento do sistema proposto e validação do mesmo, fez-


se necessário alguns testes. Estes, podem ser visualizados na Tabela 1 que,
apresenta as saídas ou dicas para o jogador, de acordo com as entradas do
sistema, no caso a jogada à ser avaliada.

Tabela 1. Testes

Mão (5 cartas) Jogada Classificação do valor da Saída


Carta %
Par (Alto, m(1.0)) 20.0

Full House (Baixo,m(0.5)), (Médio,m(0.3)) 80.0

Trinca (Médio,m(1.0)) 40.0

Straight (Baixo,m(0.5)), (Médio,m(0.3)) 40.0

Royal Straight F. (Alto, m(1.0)) 100.0

As saídas visualizadas na Tabela 1 correspondem à percentagem de quão


grande é uma jogada em relação às demais. Elas são interpretadas e a partir disso
geram-se as dicas para o jogador. A Tabela 2 apresenta as dicas fornecidas pelo
sistema de acordo com às saídas dos testes na Tabela 1.

Tabela 2. Dicas

Saída % Dica

20.0 Recomendo que você não jogue esta mão. Pense mais um pouco. Ou você
pode tentar um blefe apostando alto!!

80.0 Você pode apostar alto ou preparar uma armadilha. Agora é você quem manda!!

40.0 Recomendo que você jogue! Analise sua posição na mesa. Geralmente
posições finais são boas para este tipo de mão.

40.0 Recomendo que você jogue! Analise sua posição na mesa. Geralmente
posições finais são boas para este tipo de mão.

100.0 Pode apostar sem medo. Cuidado para não assustar os adversários, senão eles
fogem!!
Assim, pode-se perceber que as dicas geradas no sistema dependem
exclusivamente da entrada, no caso as cartas do jogador. A ferramenta não prevê
jogadas, apenas analisa e classifica a jogada de entrada. A partir disso, gera como
resposta uma dica para o jogador, que serve para orientá-lo e ensiná-lo o que pode
ser feito com a combinação de cartas que ele tem em mãos.

6. Trabalhos Futuros

Como proposta para trabalhos futuros, pretende-se expandir a ferramenta


de modo à atender e auxiliar tomadas de decisões em outros estilos do Poker como
Texas Holde'm, Omaha.

7. Conclusões

Dessa forma, conclui-se que a ferramenta apresentada neste trabalho, está


preparada para oferecer dicas que facilitem o aprendizado do jogador de Poker, na
modalidade Five Card Draw, fazendo com que o jogador iniciante perceba situações
e tome decisões que não seriam possíveis se o mesmo não possuísse experiência.

Entende-se também, que a Teoria do Conjuntos Fuzzy [ZADEH, 1965], mais


especificamente Sistemas Fuzzy [CANUTO, 2008] proporcionam estudos e
desenvolvimento de aplicações que envolvam incertezas, e que muitas vezes não
são possíveis de se criar utilizando apenas a Lógica Clássica.
8. Referências Bibliográficas
CANUTO, Anne Mágaly de Paula. Notas de aula: Sistemas Fuzzy. Universidade
Federal do Rio Grande do Norte. Disponível em:
<http://www.dimap.ufrn.br/~anne/Aula%20Fuzzy.ppt>. Outubro. 2008.

PEDRYCS, W. e GOMIDE, F., An Introduction to Fuzzy Sets: Analysis and


Design, London: MIT Press, 1998.

POKER, L. Como jogar Poker. Disponível em: <http://www.pokerloco.com/pt-


br/howtoplaypoker/pokergames.htm>. Outubro. 2008.

REZENDE, Solange Oliveira. Sistemas Inteligentes: Fundamentos e Aplicações.


1ª edição. São Paulo: Editora Manole, 2005.

ZADEH, L.A. Fuzzy Sets. Information and Control, Vol 8. pp.338-353, 1965.

Você também pode gostar