Source code for mot.optimize.base
__author__ = 'Robbert Harms'
__date__ = '2018-08-01'
__maintainer__ = 'Robbert Harms'
__email__ = 'robbert.harms@maastrichtuniversity.nl'
__licence__ = 'LGPL v3'
return_code_labels = {
0: ['default', 'no return code specified'],
1: ['found zero', 'sum of squares/evaluation below underflow limit'],
2: ['converged', 'the relative error in the sum of squares/evaluation is at most tol'],
3: ['converged', 'the relative error of the parameter vector is at most tol'],
4: ['converged', 'both errors are at most tol'],
5: ['trapped', 'by degeneracy; increasing epsilon might help'],
6: ['exhausted', 'number of function calls exceeding preset patience'],
7: ['failed', 'ftol<tol: cannot reduce sum of squares any further'],
8: ['failed', 'xtol<tol: cannot improve approximate solution any further'],
9: ['failed', 'gtol<tol: cannot improve approximate solution any further'],
10: ['NaN', 'Function value is not-a-number or infinite'],
11: ['exhausted', 'temperature decreased to 0.0']
}
[docs]class OptimizeResults(dict):
"""Represents the optimization results.
Attributes:
x (ndarray): the optimized parameter maps, an (d, p) array with for d problems a value for every p parameters
status (ndarray): the return codes, an (d,) vector with for d problems the status return code
"""
def __getattr__(self, name):
try:
return self[name]
except KeyError:
raise AttributeError(name)
__setattr__ = dict.__setitem__
__delattr__ = dict.__delitem__
def __repr__(self):
if self.keys():
m = max(map(len, list(self.keys()))) + 1
return '\n'.join([k.rjust(m) + ': ' + repr(v)
for k, v in sorted(self.items())])
else:
return self.__class__.__name__ + "()"
def __dir__(self):
return list(self.keys())