Return a pretty-formatted string representation of a dictionary
containing CVXOPT matrices.
- EXAMPLES:
+ The dictionary is also sorted so that it can be tested repeatably.
+
+ Examples
+ --------
>>> d = {'foo': 1.234, 'bar': matrix([1,2,3])}
>>> print(_pretty_format_dict(d))
"""
result = ''
- for (key, value) in dictionary.items():
+ for (key, value) in sorted(dictionary.items()):
if isinstance(value, matrix):
# Display matrices on their own lines, indented.
result += '{:s}:'.format(key)
class GameUnsolvableException(Exception):
"""
- Every linear game has a solution (this follows from a general
- min-max theorem). If we can't solve the conic program associated
- with a linear game, then something is wrong with either the model of
- the input.
+ An exception raised when a game cannot be solved.
+
+ Every linear game has a solution. If we can't solve the conic
+ program associated with a linear game, then something is wrong with
+ either the model or the input, and this exception should be raised.
+
+ Parameters
+ ----------
+
+ solution_dict : dict
+ The solution dictionary returned from the failed cone program.
+
+ Examples
+ --------
+
+ >>> d = {'residual as dual infeasibility certificate': None,
+ ... 'y': matrix([1,1]),
+ ... 'dual slack': 8.779496368228267e-10,
+ ... 'z': matrix([1,1,0,0]),
+ ... 's': None,
+ ... 'primal infeasibility': None,
+ ... 'status': 'primal infeasible',
+ ... 'dual infeasibility': None,
+ ... 'relative gap': None,
+ ... 'iterations': 5,
+ ... 'primal slack': None,
+ ... 'x': None,
+ ... 'dual objective': 1.0,
+ ... 'primal objective': None,
+ ... 'gap': None,
+ ... 'residual as primal infeasibility certificate':
+ ... 3.986246886102996e-09}
+ >>> print(GameUnsolvableException(d))
+ Solution failed with result "primal infeasible."
+ CVXOPT returned:
+ dual infeasibility: None
+ dual objective: 1.0
+ dual slack: 8.779496368228267e-10
+ gap: None
+ iterations: 5
+ primal infeasibility: None
+ primal objective: None
+ primal slack: None
+ relative gap: None
+ residual as dual infeasibility certificate: None
+ residual as primal infeasibility certificate: 3.986246886102996e-09
+ s: None
+ status: primal infeasible
+ x: None
+ y:
+ [ 1]
+ [ 1]
+ z:
+ [ 1]
+ [ 1]
+ [ 0]
+ [ 0]
"""
def __init__(self, solution_dict):
"""
Create a new GameUnsolvableException object.
-
- INPUT:
-
- - ``solution_dict`` -- the solution dictionary returned from the
- cone program.
-
"""
super().__init__()
self._solution_dict = solution_dict