X-Git-Url: https://gitweb.michael.orlitzky.com/?p=dunshire.git;a=blobdiff_plain;f=dunshire%2Fgames.py;h=ea7a64f6b8e6451a808b464494c11e9be9f0de78;hp=e9ae21dd9fca7803ce0f67d5ba60f3d3555419c7;hb=0274de467062ab29d2a41d2a91ec0b28fcd95c8d;hpb=7d7775ac5300884e4e87fad322daa98469e3531c diff --git a/dunshire/games.py b/dunshire/games.py index e9ae21d..ea7a64f 100644 --- a/dunshire/games.py +++ b/dunshire/games.py @@ -493,7 +493,6 @@ class SymmetricLinearGame: strategies:: >>> from dunshire import * - >>> from dunshire.options import ABS_TOL >>> K = NonnegativeOrthant(3) >>> L = [[1,-5,-15],[-1,2,-3],[-12,-15,1]] >>> e1 = [1,1,1] @@ -502,7 +501,7 @@ class SymmetricLinearGame: >>> soln = SLG.solution() >>> x_bar = soln.player1_optimal() >>> y_bar = soln.player2_optimal() - >>> abs(SLG.payoff(x_bar, y_bar) - soln.game_value()) < ABS_TOL + >>> SLG.payoff(x_bar, y_bar) == soln.game_value() True """ @@ -584,8 +583,9 @@ class SymmetricLinearGame: r""" Return the matrix ``A`` used in our CVXOPT construction. - This matrix :math:`A` appears on the right-hand side of :math:`Ax - = b` in the statement of the CVXOPT conelp program. + This matrix :math:`A` appears on the right-hand side of + :math:`Ax = b` in the `statement of the CVXOPT conelp program + `_. .. warning:: @@ -622,7 +622,8 @@ class SymmetricLinearGame: Return the matrix ``G`` used in our CVXOPT construction. Thus matrix :math:`G` appears on the left-hand side of :math:`Gx - + s = h` in the statement of the CVXOPT conelp program. + + s = h` in the `statement of the CVXOPT conelp program + `_. .. warning:: @@ -664,8 +665,9 @@ class SymmetricLinearGame: Return the vector ``c`` used in our CVXOPT construction. The column vector :math:`c` appears in the objective function - value :math:`\left\langle c,x \right\rangle` in the statement of - the CVXOPT conelp program. + value :math:`\left\langle c,x \right\rangle` in the `statement + of the CVXOPT conelp program + `_. .. warning:: @@ -702,7 +704,9 @@ class SymmetricLinearGame: """ Return the cone ``C`` used in our CVXOPT construction. - This is the cone over which the conelp program takes place. + This is the cone over which the `CVXOPT conelp program + `_ + takes place. Returns ------- @@ -731,8 +735,9 @@ class SymmetricLinearGame: r""" Return the ``h`` vector used in our CVXOPT construction. - The :math:`h` vector appears on the right-hand side of :math:`Gx + s - = h` in the statement of the CVXOPT conelp program. + The :math:`h` vector appears on the right-hand side of :math:`Gx + + s = h` in the `statement of the CVXOPT conelp program + `_. .. warning:: @@ -773,8 +778,9 @@ class SymmetricLinearGame: r""" Return the ``b`` vector used in our CVXOPT construction. - The vector ``b`` appears on the right-hand side of :math:`Ax = - b` in the statement of the CVXOPT conelp program. + The vector :math:`b` appears on the right-hand side of :math:`Ax + = b` in the `statement of the CVXOPT conelp program + `_. This method is static because the dimensions and entries of ``b`` are known beforehand, and don't depend on any other @@ -918,16 +924,18 @@ class SymmetricLinearGame: def tolerance_scale(self, solution): r""" - Return a scaling factor that should be applied to :const:`ABS_TOL` - for this game. + + Return a scaling factor that should be applied to + :const:`dunshire.options.ABS_TOL` for this game. When performing certain comparisons, the default tolerance - :const:`ABS_TOL` may not be appropriate. For example, if we expect - ``x`` and ``y`` to be within :const:`ABS_TOL` of each other, - than the inner product of ``L*x`` and ``y`` can be as far apart - as the spectral norm of ``L`` times the sum of the norms of - ``x`` and ``y``. Such a comparison is made in :meth:`solution`, - and in many of our unit tests. + :const:`dunshire.options.ABS_TOL` may not be appropriate. For + example, if we expect ``x`` and ``y`` to be within + :const:`dunshire.options.ABS_TOL` of each other, than the inner + product of ``L*x`` and ``y`` can be as far apart as the spectral + norm of ``L`` times the sum of the norms of ``x`` and + ``y``. Such a comparison is made in :meth:`solution`, and in + many of our unit tests. The returned scaling factor found from the inner product mentioned above is @@ -961,7 +969,8 @@ class SymmetricLinearGame: ------- float - A scaling factor to be multiplied by :const:`ABS_TOL` when + A scaling factor to be multiplied by + :const:`dunshire.options.ABS_TOL` when making comparisons involving solutions of this game. Examples @@ -998,7 +1007,7 @@ class SymmetricLinearGame: Returns ------- - :class:`Solution` + Solution A :class:`Solution` object describing the game's value and the optimal strategies of both players. @@ -1237,8 +1246,12 @@ class SymmetricLinearGame: can show up. We define the condition number of this game to be the average of the condition numbers of ``G`` and ``A`` in the CVXOPT construction. If the condition number of this game is - high, then you can expect numerical difficulty (such as - :class:`PoorScalingException`). + high, you can problems like :class:`PoorScalingException`. + + Random testing shows that a condition number of around ``125`` + is about the best that we can solve reliably. However, the + failures are intermittent, and you may get lucky with an + ill-conditioned game. Returns -------