Return a pretty-formatted string representation of a dictionary
containing CVXOPT matrices.
+ The dictionary is also sorted so that it can be tested repeatably.
+
EXAMPLES:
>>> d = {'foo': 1.234, 'bar': matrix([1,2,3])}
"""
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)
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.
+
+ 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):
"""