]> gitweb.michael.orlitzky.com - dunshire.git/blobdiff - doc/README.rst
Enable doctesting of ReST docs with `make doctest`.
[dunshire.git] / doc / README.rst
index 2a01957e8ea5f3773019b7019fc2604383dd2075..71876c6271b7912198acd51aa41afef0f7ef6adc 100644 (file)
@@ -11,6 +11,96 @@ efficiently, and thus the linear games supported by Dunshire are a
 bastard of the two: the cones are symmetric, but the players get to
 choose two interior points.
 
+In this game, we have two players who are competing for a "payoff."
+There is a symmetric cone :math:`K`, a linear transformation :math:`L`
+on the space in which :math:`K` lives, and two points :math:`e_{1}`
+and :math:`e_{2}` in the interior of :math:`K`. The players make their
+"moves" by choosing points from two strategy sets. Player one chooses
+an :math:`\bar{x}` from
+
+.. math::
+  \Delta_{1} =
+    \left\lbrace
+      x \in K\ \middle|\ \left\langle x,e_{2} \right\rangle = 1
+    \right\rbrace
+
+and player two chooses a :math:`\bar{y}` from
+
+.. math::
+  \Delta_{2} &=
+    \left\lbrace
+      y \in K\ \middle|\ \left\langle y,e_{1} \right\rangle = 1
+    \right\rbrace.
+
+That ends the turn, and player one is paid :math:`\left\langle
+L\left(\bar{x}\right),\bar{y}\right\rangle` out of player two's
+pocket. As is usual to assume in game theory, we suppose that player
+one wants to maximize his worst-case payoff, and that player two wants
+to minimize his worst-case *payout*. In other words, player one wants
+to solve the optimization problem,
+
+.. math::
+  \text{find }
+  \underset{x \in \Delta_{1}}{\max}\
+  \underset{y\in \Delta_{2}}{\min}\
+  \left\langle L\left(x\right),y \right\rangle
+
+while player two tries to (simultaneously) solve a similar problem,
+
+.. math::
+  \text{find }
+  \underset{y\in \Delta_{2}}{\min}\
+  \underset{x \in \Delta_{1}}{\max}\
+  \left\langle L\left(x\right),y \right\rangle.
+
+There is at least one pair :math:`\left(\bar{x},\bar{y}\right)` that
+solves these problems optimally, and Dunshire can find it. The optimal
+payoff, called *the value of the game*, is unique. At the moment, the
+symmetric cone :math:`K` can be either the nonnegative orthant or the
+Lorentz "ice cream" cone in :math:`\mathbb{R}^{n}`. Here are two of
+the simplest possible examples, showing off the ability to solve a
+game over both of those cones.
+
+First, we use the nonnegative orthant in :math:`\mathbb{R}^{2}`:
+
+.. doctest::
+
+  >>> from dunshire import *
+  >>> K = NonnegativeOrthant(2)
+  >>> L = [[1,0],[0,1]]
+  >>> e1 = [1,1]
+  >>> e2 = e1
+  >>> G = SymmetricLinearGame(L,K,e1,e2)
+  >>> print(G.solution())
+  Game value: 0.5000000
+  Player 1 optimal:
+    [0.5000000]
+    [0.5000000]
+  Player 2 optimal:
+    [0.5000000]
+    [0.5000000]
+
+Next we try the Lorentz ice-cream cone in :math:`\mathbb{R}^{2}`:
+
+.. doctest::
+
+  >>> from dunshire import *
+  >>> K = IceCream(2)
+  >>> L = [[1,0],[0,1]]
+  >>> e1 = [1,1]
+  >>> e2 = e1
+  >>> G = SymmetricLinearGame(L,K,e1,e2)
+  >>> print(G.solution())
+  Game value: 0.5000000
+  Player 1 optimal:
+    [0.8347039]
+    [0.1652961]
+  Player 2 optimal:
+    [0.5000000]
+    [0.5000000]
+
+Note that these solutions are not unique, although the game values are.
+
 Requirements
 ------------
 
@@ -21,16 +111,15 @@ probably work too.
 Background
 ----------
 
-A linear game is a generalization of a two-person zero-sum matrix
-game~\cite{karlin, parthasarathy-raghavan,
-von_neumann-morgenstern}. Classically, such a game involves a matrix
-:math:`A \in \mathbb{R}^{n \times n}` and a set (the unit simplex) of
-"strategies" :math:`\Delta = \operatorname{conv}\left(
-\left\lbrace e_{1}, e_{2}, \ldots, e_{n} \right\} \right)` from which two
-players are free to choose. If the players choose :math:`x,y \in \Delta`
-respectively, then the game is played by evaluating :math:`y^{T}Ax` as the
-"payoff" to the first player. His payoff comes from the second
-player, so that their total sums to zero.
+A linear game is a generalization of a two-person zero-sum matrix game
+[Karlin]_. Classically, such a game involves a matrix :math:`A \in
+\mathbb{R}^{n \times n}` and a set (the unit simplex) of "strategies"
+:math:`\Delta = \operatorname{conv}\left( \left\lbrace e_{1}, e_{2},
+\ldots, e_{n} \right\} \right)` from which two players are free to
+choose. If the players choose :math:`x,y \in \Delta` respectively,
+then the game is played by evaluating :math:`y^{T}Ax` as the "payoff"
+to the first player. His payoff comes from the second player, so that
+their total sums to zero.
 
 Each player will try to maximize his payoff in this scenario,
 or—what is equivalent—try to minimize the payoff of his
@@ -76,7 +165,7 @@ case, we will pretend from now on that our cones need to be
 symmetric. This simplifies some definitions.
 
 What is a linear game?
-----------------------
+~~~~~~~~~~~~~~~~~~~~~~
 
 In the classical setting, the interpretation of the strategies as
 probabilities results in a strategy set :math:`\Delta \subseteq
@@ -114,6 +203,102 @@ is linear, the set :math:`K` is a symmetric cone in :math:`V`, and the
 points :math:`e_{1}` and :math:`e_{2}` belong to
 :math:`\operatorname{int}\left(K\right)`.
 
+**Definition.**  The strategy sets for our linear game are
+
+.. math::
+  \begin{aligned}
+    \Delta_{1}\left(L,K,e_{1},e_{2}\right) &=
+      \left\lbrace
+        x \in K\ \middle|\ \left\langle x,e_{2} \right\rangle = 1
+      \right\rbrace\\
+    \Delta_{2}\left(L,K,e_{1},e_{2}\right) &=
+      \left\lbrace
+        y \in K\ \middle|\ \left\langle y,e_{1} \right\rangle = 1
+      \right\rbrace.
+  \end{aligned}
+
+Since :math:`e_{1},e_{2} \in \operatorname{int}\left(K\right)`, these
+are bases for :math:`K`. We will usually omit the arguments and write
+:math:`\Delta_{i}` to mean :math:`\Delta_{i}\left(L,K,e_{1},e_{2}\right)`.
+
+To play the game :math:`\left(L,K,e_{1},e_{2}\right)`, the first
+player chooses an :math:`x \in \Delta_{1}`, and the second player
+independently chooses a :math:`y \in \Delta_{2}`. This completes the
+turn, and the payoffs are determined by applying the payoff operator
+:math:`\left(x,y\right) \mapsto \left\langle L\left(x\right), y
+\right\rangle`. The payoff to the first player is :math:`\left\langle
+L\left(x\right), y \right\rangle`, and since we want the game to be
+zero-sum, the payoff to the second player is :math:`-\left\langle
+L\left(x\right), y \right\rangle`.
+
+The payoff operator is continuous in both arguments because it is
+bilinear and the ambient space is finite-dimensional. We constructed
+the strategy sets :math:`\Delta_{1}` and :math:`\Delta_{2}` to be
+compact and convex; as a result, Karlin's [Karlin]_ general min-max
+Theorem 1.5.1, guarantees the existence of optimal strategies for both
+players.
+
+**Definition.** A pair :math:`\left(\bar{x},\bar{y}\right) \in
+\Delta_{1} \times \Delta_{2}` is an *optimal pair* for the game
+:math:`\left(L,K,e_{1},e_{2}\right)` if it satisfies the *saddle-point
+inequality*,
+
+.. math::
+  \left\langle L\left(x\right),\bar{y} \right\rangle
+  \le
+  \left\langle L\left( \bar{x}\right), \bar{y} \right\rangle
+  \le
+  \left\langle L\left(\bar{x}\right),y \right\rangle
+  \text{ for all }
+  \left(x,y\right) \in \Delta_{1} \times \Delta_{2}.
+
+At an optimal pair, neither player can unilaterally increase his
+payoff by changing his strategy. The value :math:`\left\langle L
+\left( \bar{x} \right) , \bar{y} \right\rangle` is unique (by the same
+min-max theorem); it is shared by all optimal pairs. There exists at
+least one optimal pair :math:`\left(\bar{x},\bar{y}\right)` of the
+game :math:`\left(L,K,e_{1},e_{2}\right)` and its *value* is
+:math:`v\left(L,K,e_{1},e_{2}\right) = \left\langle
+L\left(\bar{x}\right), \bar{y} \right\rangle`.
+
+Thanks to Karlin [Karlin]_, we have an equivalent characterization of
+a game's value that does not require us to have a particular optimal
+pair in mind,
+
+.. math::
+  v\left( L,K,e_{1},e_{2} \right)
+  =
+  \underset{x \in \Delta_{1}}{\max}\
+  \underset{y\in \Delta_{2}}{\min}\
+  \left\langle L\left(x\right),y \right\rangle
+  =
+  \underset{y\in \Delta_{2}}{\min}\
+  \underset{x \in \Delta_{1}}{\max}\
+  \left\langle L\left(x\right),y \right\rangle.
+
+Linear games reduce to two-person zero-sum matrix games in the
+right setting.
+
+**Example.** If :math:`K = \mathbb{R}^{n}_{+}` in :math:`V =
+\mathbb{R}^{n}` and :math:`e_{1} = e_{2} =
+\left(1,1,\ldots,1\right)^{T} \in \operatorname{int}\left(K\right)`,
+then :math:`\Delta_{1} = \Delta_{2} = \Delta`. For any :math:`L \in
+\mathbb{R}^{n \times n}`, the linear game :math:`\left(
+L,K,e_{2},e_{2} \right)` is a two-person zero-sum matrix game. Its
+payoff is :math:`\left(x,y\right) \mapsto y^{T}Lx`, and its value is
+
+.. math::
+  v\left( L,K,e_{1},e_{2} \right)
+  =
+  \underset{x \in \Delta}{\max}\
+  \underset{y\in \Delta}{\min}\
+  \left( y^{T}Lx \right)
+  =
+  \underset{y\in \Delta}{\min}\
+  \underset{x \in \Delta}{\max}\
+  \left( y^{T}Lx \right).
+
+
 References
 ----------