-def _random_icecream_params():
- """
- Generate the ``L``, ``K``, ``e1``, and ``e2`` parameters for a
- random game over the ice cream cone. This is only used by
- the :class:`SymmetricLinearGameTest` class.
- """
- # Use a minimum dimension of two to avoid divide-by-zero in
- # the fudge factor we make up later.
- ambient_dim = randint(2, 10)
- K = IceCream(ambient_dim)
- e1 = [1] # Set the "height" of e1 to one
- e2 = [1] # And the same for e2
-
- # If we choose the rest of the components of e1,e2 randomly
- # between 0 and 1, then the largest the squared norm of the
- # non-height part of e1,e2 could be is the 1*(dim(K) - 1). We
- # need to make it less than one (the height of the cone) so
- # that the whole thing is in the cone. The norm of the
- # non-height part is sqrt(dim(K) - 1), and we can divide by
- # twice that.
- fudge_factor = 1.0 / (2.0*sqrt(K.dimension() - 1.0))
- e1 += [fudge_factor*uniform(0, 1) for idx in range(K.dimension() - 1)]
- e2 += [fudge_factor*uniform(0, 1) for idx in range(K.dimension() - 1)]
- L = _random_matrix(K.dimension())
-
- return (L, K, matrix(e1), matrix(e2))
+ def assert_player1_start_valid(self, G):
+ """
+ Ensure that player one's starting point satisfies both the
+ equality and cone inequality in the CVXOPT primal problem.
+ """
+ x = G.player1_start()['x']
+ s = G.player1_start()['s']
+ s1 = s[0:G.dimension()]
+ s2 = s[G.dimension():]
+ self.assert_within_tol(norm(G.A()*x - G.b()), 0)
+ self.assertTrue((s1, s2) in G.C())