AI to play card game Briscola in 5

A place to discuss the science of computers and programs, from algorithms to computability.

Formal proofs preferred.

Moderators: phlip, Moderators General, Prelates

mat.tia
Posts: 90
Joined: Tue Nov 22, 2011 11:06 am UTC
Location: Torino

AI to play card game Briscola in 5

Postby mat.tia » Wed Nov 19, 2014 1:40 pm UTC

Hi guys, I am doing a thesis for my bachelor degree and the idea is to build a multiagent platform to play the card game "Briscola in 5", featuring an artificial intelligence for a virtual player.
You can find the rules for the game on wikipedia; the peculiarity of the game is the fact that it is played in two teams by a total of 5 people. The teams can be made of 2 players vs the other 3, or 4 vs 1.
The formation of the teams is decided by an initial auction: the winner of the auction "calls" a card and whoever owns the card is teamed up with the person who called it; but the identity of the person is not declared. So, until the "called card" is played, only one person (the owner of the said card) knows for sure the roles of the other players, while others have to guess observing the other players' behaviour.

Now, I have an idea on how I would like to build an AI able to play (hopefully succesfully) the game, but I would appreciate some critics and advice - also because I am very inexpert in the fied of AI.

My idea:

Every player is an agent. It conducts the auction in a predefined, deterministic way: based on the distribution of the suits in his hand, and thieir rank, it matches them against a table that says either to keep bidding or to pass. Easy. (I have found tables of this sort online; if I have time I will reason on it and see if this phase needs improvement, but this is not the important part).

Then comes the game.
I thought of dividing the game into two phases: the first 3-4 hands and the last 4-5.

Each agent has a number of believes about:
1) how cards are distributed among players (for each player P, for each card C, how likely is for P to own C)
2) how teams are formed (for each adversary player P, how likely is for P to be in one of the three roles [caller - called - other]).

In the first part of the game (3-4 turns) the agent will mainly observe the situation to build its own believes and meanwhile it will act either to minimize the loss or maximize the gain depending on its position in the game during the turn (first to play-last-middle) and its role (called, caller, other).
The believes are built by a reasoner/expert that contains a formalization of rules used normally by a human player (ie: if the caller is last in the turn and one plays a very high card, it is more likely for him to be the called one - if one plays the 7 to score in a turn in which it could have equally scored using a 3, he will probably not own 3-4-5 nor 6 of that suit (or own them all)).
I still have to look into reputation systems to see if they can adapt to building up beliefs about players' role, but an indicator in the range [-1,1] also gives the idea.

After this first phase each player has less cards in his hand (from 8 to <= 5).
Hopefully, at this point the agent will also have believes with a certain degree of confidence that can be used to narrow down even more the possible scenarios.
The agent can then build a tree of the possible future moves, pruning away all those scenarios that are not likely to be true based upon his believes (if I gave a -0.7 to player P having card C I will not consider him able to play that card).
Here I would like to use a "minimax" approach: building the moves tree, the agent will expand the nodes modeling the adversary's behaviour and choosing what he would have choses to play in that scenario.
This implies that the agent needs to think for himself and all other players at the same time, keeping its own beliefs as well as beliefes he think others have at this point.

I think that it is decisive and discriminant to win or loss that the agent understands who are the people he is teamed up with: otherwise the whole reasoning is completely worthless. So that is probably the most challenging aspect.

What do you think? Any suggestion, thought, critic or advice are very welcome.

Return to “Computer Science”

Who is online

Users browsing this forum: No registered users and 3 guests