Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #3110
| From | Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Basic prisoner's dilemma? |
| Date | 2011-04-18 19:22 +0200 |
| Organization | A noiseless patient Spider |
| Message-ID | <iohs19$f1g$1@dont-email.me> (permalink) |
| References | <d97822e4-ee7c-458d-8818-07007fb714e8@k3g2000prl.googlegroups.com> |
On 18/04/2011 04:51, theglazeb allegedly wrote:
> Hi there!
>
> I was wondering if you were able to help with me a basic prisoner's
> dilemma strategy? How would I implement a basic tit for tat strategy?
> And perhaps try to avoid the "death spiral" from occurring when two
> players use the tit for tat strategy?
>
> See below
>
> Thanks!
>
> /*
> * File: PDStrategy.java
> * ---------------------
> * This class encapsulates the strategy for an Iterated Prisoner's
> * Dilemma game. To enter the contest, all you have to do is change
> * the definition of chooseAction so that it takes account of the
> * history and does something more clever than cooperating (or
> * defecting) all the time.
> */
>
> import java.util.*;
>
> class PDStrategy {
>
> /*
> * Method: chooseAction
> * --------------------
> * This method determines the player's action for the current
> * game, based on two ArrayLists containing the history of play:
> * one for your algorithm and one for the opponent. Each of these
> * ArrayLists contains strings, which are guaranteed to be one of
> * the uppercase strings "COOPERATE" or "DEFECT". Your method
> * should look at the history and return one of those two strings
> * representing the action you take on the current round.
> */
>
> public String chooseAction(ArrayList<String> myHistory,
> ArrayList<String> oppHistory) {
> return "COOPERATE"; //currently, it is only cooperating
> }
>
> }
Basic tit-for-tat is as follows:
- if it's the first time you encounter that opponent (this implies you
keep a 'memory' of previous encounters), cooperate.
- otherwise, replicate that opponent's last move.
In code (assuming oppHistory contains only the history with "this"):
public String chooseAction(
ArrayList<String> myHistory, ArrayList<String> oppHistory)
{
return oppHistory.isEmpty() ? "COOPERATE" : oppHistory.get(
oppHistory.size());
}
(or oppHistory.get(0), depending on whether it's used as a FIFO or a LIFO).
You can add various tricks, but don't expect to get far with them,
because tit-for-tat is the evolutionary stable strategy.
If you're interested in the topic apart from the programming aspect, I
*very* strongly suggest you read Dawkins' "Selfish Gene" and "Blind
Watchmaker". Even if you're not, by the way -- those are IMHO must-reads.
--
DF.
An escaped convict once said to me:
"Alcatraz is the place to be"
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar
Basic prisoner's dilemma? theglazeb <theglazeb@gmail.com> - 2011-04-17 19:51 -0700
Re: Basic prisoner's dilemma? Lew <noone@lewscanon.com> - 2011-04-17 23:15 -0400
Re: Basic prisoner's dilemma? Esmond Pitt <esmond.pitt@bigpond.com> - 2011-04-18 13:54 +1000
Re: Basic prisoner's dilemma? theglazeb <theglazeb@gmail.com> - 2011-04-17 22:08 -0700
Re: Basic prisoner's dilemma? Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-04-17 23:47 -0700
Re: Basic prisoner's dilemma? markspace <-@.> - 2011-04-18 00:14 -0700
Re: Basic prisoner's dilemma? rossum <rossum48@coldmail.com> - 2011-04-18 13:01 +0100
Re: Basic prisoner's dilemma? Bent C Dalager <bcd@pvv.ntnu.no> - 2011-04-18 13:38 +0000
Re: Basic prisoner's dilemma? Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-04-18 19:22 +0200
Re: Basic prisoner's dilemma? Lew <noone@lewscanon.com> - 2011-04-18 13:34 -0400
Re: Basic prisoner's dilemma? Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-04-18 21:26 +0200
Re: Basic prisoner's dilemma? Lew <noone@lewscanon.com> - 2011-04-18 16:33 -0400
Re: Basic prisoner's dilemma? Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-04-18 23:50 +0200
Re: Basic prisoner's dilemma? Lew <noone@lewscanon.com> - 2011-04-18 18:37 -0400
Re: Basic prisoner's dilemma? markspace <-@.> - 2011-04-18 15:51 -0700
Re: Basic prisoner's dilemma? Michael Wojcik <mwojcik@newsguy.com> - 2011-04-19 16:14 -0400
csiph-web