Overview
--------
-Dunshire is a `CVXOPT <http://cvxopt.org/>`_-based library for solving
-linear (cone) games. The notion of a symmetric linear (cone) game was
-introduced by Gowda and Ravindran [GowdaRav]_, and extended by
-Orlitzky to asymmetric cones with two interior points.
+Dunshire is a library for solving linear (cone) games. The notion of a
+symmetric linear (cone) game was introduced by Gowda and Ravindran
+[GowdaRav]_, and extended by Orlitzky to asymmetric cones with two
+interior points.
The state-of-the-art is that only symmetric games can be solved
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.
+compromise between 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`
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,
+pocket. As is usual 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 }
>>> e2 = e1
>>> G = SymmetricLinearGame(L,K,e1,e2)
>>> print(G.solution())
- Game value: 0.5000000
+ Game value: 0.500...
Player 1 optimal:
- [0.5000000]
- [0.5000000]
+ [0.500...]
+ [0.500...]
Player 2 optimal:
- [0.5000000]
- [0.5000000]
+ [0.500...]
+ [0.500...]
Next we try the Lorentz ice-cream cone in :math:`\mathbb{R}^{2}`:
>>> from dunshire import *
>>> K = IceCream(2)
>>> L = [[1,0],[0,1]]
- >>> e1 = [1,1]
+ >>> e1 = [1,0]
>>> e2 = e1
>>> G = SymmetricLinearGame(L,K,e1,e2)
>>> print(G.solution())
- Game value: 0.5000000
+ Game value: 1.000...
Player 1 optimal:
- [0.8347039]
- [0.1652961]
+ [1.000...]
+ [0.000...]
Player 2 optimal:
- [0.5000000]
- [0.5000000]
+ [1.000...]
+ [0.000...]
Note that these solutions are not unique, although the game values are.