Class SofomoreDataLogger
source code
object --+
|
cma.interfaces.BaseDataLogger --+
|
SofomoreDataLogger
data logger for class `CMAEvolutionStrategy`.
The logger is identified by its name prefix and (over-)writes or reads
according data files. Therefore, the logger must be considered as
*global* variable with unpredictable side effects, if two loggers with
the same name and on the same working folder are used at the same
time.
Examples
:
import cma
es = cma.CMAEvolutionStrategy(...)
logger = cma.CMADataLogger().register(es)
while not es.stop():
...
logger.add() # add can also take an argument
logger.plot() # or a short cut can be used:
cma.plot() # plot data from logger with default name
logger2 = cma.CMADataLogger('just_another_filename_prefix').load()
logger2.plot()
logger2.disp()
import cma
from matplotlib.pylab import *
res = cma.fmin(cma.ff.sphere, rand(10), 1e-0)
logger = res[-1] # the CMADataLogger
logger.load() # by "default" data are on disk
semilogy(logger.f[:,0], logger.f[:,5]) # plot f versus iteration, see file header
cma.s.figshow()
Details
After loading data, the logger has the attributes `xmean`,
`xrecent`, `std`, `f`, `D` and `corrspec` corresponding to ``xmean``,
``xrecentbest``, ``stddev``, ``fit``, ``axlen`` and ``axlencorr``
filename trails.
:See: `disp` (), `plot` ()
|
|
__init__(self,
name_prefix='outsofomore/',
modulo=1,
append=False)
initialize logging of data from a `CMAEvolutionStrategy` instance,
default ``modulo=1`` means logging with each call |
source code
|
|
|
|
register(self,
es,
append=None,
modulo=None)
register a `Sofomore` instance for logging, ``append=True`` appends
to previous data logged under the same name, by default previous data
are overwritten. |
source code
|
|
|
|
initialize(self,
modulo=None)
reset logger, overwrite original files, `modulo`: log only every
modulo call |
source code
|
|
|
|
add(self,
es=None,
more_data=(),
modulo=None)
append some logging data from `Sofomore` class instance `es`, if
``number_of_times_called % modulo`` equals to zero, never if
``modulo==0``. |
source code
|
|
|
|
load(self,
filenames)
load data from file `name` or `self.filename` |
source code
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_enter_plotting(self,
fontsize=7)
assumes that a figure is open |
source code
|
|
|
|
|
|
|
|
|
Inherited from cma.interfaces.BaseDataLogger:
disp,
save
Inherited from object:
__delattr__,
__format__,
__getattribute__,
__hash__,
__new__,
__reduce__,
__reduce_ex__,
__repr__,
__setattr__,
__sizeof__,
__str__,
__subclasshook__
|
|
|
default_prefix = 'outsofomore/'
|
|
|
modulo
how often to record data, allows calling `add` without args
|
|
|
append
append to previous data
|
|
|
counter
number of calls to `add`
|
|
Inherited from cma.interfaces.BaseDataLogger:
filename,
optim
Inherited from cma.interfaces.BaseDataLogger (private):
_data
|
|
Inherited from cma.interfaces.BaseDataLogger:
data
Inherited from object:
__class__
|
__init__(self,
name_prefix='outsofomore/',
modulo=1,
append=False)
(Constructor)
| source code
|
initialize logging of data from a `CMAEvolutionStrategy` instance,
default ``modulo=1`` means logging with each call
- Overrides:
object.__init__
|
register(self,
es,
append=None,
modulo=None)
| source code
|
register a `Sofomore` instance for logging, ``append=True`` appends to
previous data logged under the same name, by default previous data are
overwritten.
- Overrides:
cma.interfaces.BaseDataLogger.register
|
add(self,
es=None,
more_data=(),
modulo=None)
| source code
|
append some logging data from `Sofomore` class instance `es`, if
``number_of_times_called % modulo`` equals to zero, never if
``modulo==0``.
``more_data`` is a list of additional data to be recorded where each
data entry must have the same length.
When used for a different optimizer class, this function can be
(easily?) adapted by changing the assignments under INTERFACE in the
implemention.
- Overrides:
cma.interfaces.BaseDataLogger.add
|
|
load data from file `name` or `self.filename`
- Overrides:
cma.interfaces.BaseDataLogger.load
|
|
abstract method, plot data
- Overrides:
cma.interfaces.BaseDataLogger.plot
|