Пример #1
0
def check_conjugacy(g_new, g_old):
    return abs(dot(g_new, g_old) / dot(g_new, g_new))
Пример #2
0
def check_descent(p_new, g_new):
    return dot(p_new, g_new) / dot(g_new, g_new)
Пример #3
0
def fletcher_reeves(g_new, g_old, precond=lambda x : x):
    num = dot(precond(g_new), g_new)
    den = dot(g_old, g_old)
    beta = num/den
    return beta
Пример #4
0
def pollak_ribere(g_new, g_old, precond=lambda x : x):
    num = dot(precond(g_new), g_new-g_old)
    den = dot(g_old, g_old)
    beta = num/den
    return beta
Пример #5
0
def check_conjugacy(g_new, g_old):
    return abs(dot(g_new, g_old) / dot(g_new, g_new))
Пример #6
0
def pollak_ribere(g_new, g_old, precond=lambda x: x):
    num = dot(precond(g_new), g_new - g_old)
    den = dot(g_old, g_old)
    beta = num / den
    return beta
Пример #7
0
def fletcher_reeves(g_new, g_old, precond=lambda x: x):
    num = dot(precond(g_new), g_new)
    den = dot(g_old, g_old)
    beta = num / den
    return beta
Пример #8
0
def check_descent(p_new, g_new):
    return dot(p_new, g_new) / dot(g_new, g_new)
Пример #9
0
    def __call__(self):
        """ Returns SRVM search direction
        """
        self.iter += 1

        unix.cd(self.path)
        g = self.load('g_new')
        if self.iter == 1:
            ShatT_ghat = g
            self.save('ShatT_ghat', g)
            print 'max(ShatT_ghat)', max(ShatT_ghat)
            return -g, 0

        elif self.iter > self.maxiter:
            print 'restarting SRVM... [periodic restart]'
            self.restart()
            return -g, 1

        mu = self.loadtxt('alpha')
        g_old = self.load('g_old')

        print 'max(g_old-g)', max(g_old - g)

        dghat = g - g_old
        yhat = mu * g_old + dghat

        kk = self.iter - 1

        w = self.update(yhat, kk - 1, 1)

        self.save('w', w)
        unix.mv('w', 'w_%04d' % kk)
        print 'max(w)', max(w)
        ShatT_ghat = self.load('ShatT_ghat')
        #print 'max(ShatT_ghat)',max(ShatT_ghat)
        belta = w - mu * ShatT_ghat
        a = dot(w, belta)
        b = dot(w, w)
        nu = self.srvm_nu(a, b)

        self.savetxt('a', a)
        unix.mv('a', 'a_%04d' % kk)

        self.savetxt('nu', nu)
        unix.mv('nu', 'nu_%04d' % kk)

        ShatT_ghat = self.update(g, kk, 1)
        q = self.update(ShatT_ghat, kk, 0)
        #q = -q

        self.save('ShatT_ghat', ShatT_ghat)

        print 'max(g)', max(g)
        print 'max(q)', max(q)

        status = self.check_status(g, q)
        print 'status', status
        #status = 0
        if status != 0:
            self.restart()
            return -g, status
        else:
            return -q, status