Esempio n. 1
0
    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)