def optimize(self, nIter): if self._t is None: self._t0 = time.time() self._t = self._t0 pAsk = Perf() pTell = Perf() pPhi = MultiPerf() for _ in range(nIter): pAsk.start() ws = np.array(self._es.ask()) pAsk.stop() phis = self._phi(pPhi, ws) pTell.start() self._es.tell(phis) pTell.stop() self._iReport += 1 if self._iReport == self._nReport: t = time.time() print( "EVAL: iter = %d t = %.2f dt = %.4f phi = %.4e wmn = %.4f wmx = %.4f sigma = %.4e nEvalsPerW = %d" % (self._nIter, t - self._t0, t - self._t, phis.mean(), ws.mean(), np.abs(ws).max(), self._es.getSigma(), self._nEvalsThisTime)) self._phiLatest = phis.mean() perf = self._collectPerf() print("PERF: pA = %.3f pT = %.3f pP = %s %s" % (1000 * pAsk.mean(), 1000 * pTell.mean(), ' '.join( ["%.3f" % (1000 * p) for p in pPhi.means()]), perf)) self._t = t self._nIter += 1 self._trace.append(phis.mean()) self._iReport = 0 self._wfav = np.array(self._es.getXFavorite()) self._bbo.setParams(self._wfav)