+++ /dev/null
-"""
-Errors that can occur when solving a linear game.
-"""
-
-from cvxopt import matrix
-
-
-def _pretty_print_dict(dictionary):
- """
- Return a pretty-printed string representation of a dictionary
- containing CVXOPT matrices.
- """
- result = ''
- for (key, value) in dictionary.items():
- if isinstance(value, matrix):
- # Display matrices on their own lines, indented.
- result += ' {:s}:'.format(key)
- colvec = '\n{!s}'.format(value)
- result += '\n '.join(colvec.splitlines())
- result += '\n'
- else:
- result += ' {:s}: {!s}\n'.format(key, value)
-
- return result
-
-
-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.
- """
- 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
-
-
- def __str__(self):
- tpl = 'Solution failed with result "{:s}."\n' \
- 'CVXOPT returned:\n{!s}'
- return tpl.format(self._solution_dict['status'],
- _pretty_print_dict(self._solution_dict))