  The iterated prisoner's dilemma is a game that produces many
counter-intuitive and complex behaviors in a social environment, based on very
simple basic rules. It illustrates that cooperation can be a good thing even in
a competitive world, that individual fitness needs not to be the most important
criteria of success, and that some strategies are very strong in a direct
confrontation but could still perform poorly on average or are evolutionarily
unstable. In this contribution, we present a strategy -- PREDICTOR -- which
appears to be "sentient" and chooses to cooperate when playing against some
strategies, but defects when playing against others, without the need to record
"tags" for its opponents or an involved decision-making mechanism. To be able
to operate in the highly-contextual environment, as modeled by the iterated
prisoner's dilemma, PREDICTOR learns from its experience to choose optimal
actions by modeling its opponent and predicting a (fictive) future.
  It is shown that PREDICTOR is an efficient strategy for playing the iterated
prisoner's dilemma and is simple to implement. In a simulated and
representative tournament, it achieves high average scores and wins the
tournament for various parameter settings. PREDICTOR thereby relies on a brief
phase of exploration to improve its model, and it can evolve morality from
intrinsically selfish behavior.
