solvers = ['ralg', 'amsg2p'] solvers = ['gsubg'] Colors = ['r', 'k','b'] xOpt = 1.0/n def cb(p): tmp = ceil(log10(norm(xOpt - p.xk))) if tmp < cb.TMP: # print 'distance:', tmp, 'itn:', p.iter, 'n_func:', p.nEvals['f'], 'n_grad:', -p.nEvals['df'] cb.TMP = tmp cb.stat['dist'].append(tmp) cb.stat['f'].append(p.nEvals['f']) cb.stat['df'].append(-p.nEvals['df']) return False asa = lambda x:asarray(x).reshape(-1, 1) R = {} lines = [] for i, solver in enumerate(solvers): p = NSP(obj, startPoint, maxIter = 4700, name = 'Rzhevsky3 (nVars: ' + str(n)+')', maxTime = 30000, maxFunEvals=1e7, color = Colors[i]) #p.maxIter = 10#; p.useSparse = False p.fEnough = 1.0e-5 p.fOpt = 1.0e-5 p.fTol = 0.5e-5 cb.TMP = 1000 cb.stat = {'dist':[], 'f':[], 'df':[]} r = p.manage(solver, iprint=1, xtol = 1e-10, ftol = 1e-10, show = solver == solvers[-1], plot = 0, callback = cb) R[solver] = hstack((asa(cb.stat['dist']), asa(cb.stat['f']), asa(cb.stat['df'])))
cb.stat['df'].append(-p.nEvals['df']) return False asa = lambda x: asarray(x).reshape(-1, 1) R = {} for i, solver in enumerate(solvers): p = NSP(obj, startPoint, maxIter=17000, name='Rzhevsky1 (nVars: ' + str(n) + ')', maxTime=300, maxFunEvals=1e7, color=Colors[i]) p.fTol = 0.5e-10 p.fEnough = -0.84140833459 p.fOpt = -0.841408334596 cb.TMP = 1000 cb.stat = {'dist': [], 'f': [], 'df': []} r = p.solve(solver, iprint=10, ftol=1e-15, xtol=1e-10, debug=0, show=solver == solvers[-1], plot=0, callback=cb) R[solver] = hstack( (asa(cb.stat['dist']), asa(cb.stat['f']), asa(cb.stat['df']))) ''' --------------------------------------------------
from numpy import arange from numpy.linalg import norm from openopt import NSP, oosolver from FuncDesigner import * N = 300 x = oovar('x') startPoint = {x: 1 + 1.0 / arange(1, N)} S = 1e4 ** (1.0/arange(1, N)) #f = abs(x[0]) + S * abs(x[1]) + S**2 * abs(x[2]) f = sum(abs(x)*S) solvers = [oosolver('ralg')] solvers = [oosolver('gsubg', addASG = True)] #solvers = [oosolver('gsubg', zhurb = 20, dual=False)] #solvers = ['ipopt'] #solvers = ['slmvm2'] #solvers = ['mma'] for solver in solvers: p = NSP(f, startPoint, maxIter = 10000, maxTime = 15000, maxFunEvals=1e7) p.fEnough = 1.5e1 p.fTol = 1.0e1 #p.constraints = (y > 5)(tol=1e-4) #x>1e-1 #[2*y<sin(arange(N))] #r = p.solve(solver, iprint=10, xtol = 1e-36, ftol = 1e-16, show = solver == solvers[-1]) r = p.solve(solver, iprint=10, xtol = 1e-16, ftol = 1e-6, show = solver == solvers[-1])
def cb(p): tmp = ceil(log10(norm(xOpt - p.xk))) if tmp < cb.TMP: # print 'distance:', tmp, 'itn:', p.iter, 'n_func:', p.nEvals['f'], 'n_grad:', -p.nEvals['df'] cb.TMP = tmp cb.stat['dist'].append(tmp) cb.stat['f'].append(p.nEvals['f']) cb.stat['df'].append(-p.nEvals['df']) return False asa = lambda x:asarray(x).reshape(-1, 1) R = {} for i, solver in enumerate(solvers): p = NSP(obj, startPoint, maxIter = 17000, name = 'Rzhevsky1 (nVars: ' + str(n)+')', maxTime = 300, maxFunEvals=1e7, color = Colors[i]) p.fTol = 0.5e-10 p.fEnough = -0.84140833459 p.fOpt = -0.841408334596 cb.TMP = 1000 cb.stat = {'dist':[], 'f':[], 'df':[]} r = p.solve(solver, iprint=10, ftol = 1e-15, xtol = 1e-10, debug=0, show = solver == solvers[-1], plot = 0, callback=cb) R[solver] = hstack((asa(cb.stat['dist']), asa(cb.stat['f']), asa(cb.stat['df']))) ''' -------------------------------------------------- solver: gsubg problem: rjevsky1 (nVars: 10) type: NSP goal: minimum iter objFunVal 0 1.573e+02 10 -7.780e-01 20 -8.410e-01 30 -8.410e-01 40 -8.410e-01
print 'start point: f1 = %e f2 = %e' % (f1(startPoint), f2(startPoint)) #print "start point: norm(f1') = %e norm(f2') = %e" % (norm(f1.D(startPoint, y)), norm(f2.D(startPoint, x))) ralg = oosolver('ralg') gsubg = oosolver('gsubg', addASG = False) solvers = [ralg] #solvers = [oosolver('gsubg', zhurb = 20, dual=False)] solvers = ['ipopt', gsubg, 'scipy_cg'] solvers = [gsubg] #solvers = ['ipopt'] #solvers = ['slmvm2'] #solvers = ['slmvm1'] #solvers = ['mma'] Colors = ['r', 'k','b'] lines = [] for i, solver in enumerate(solvers): p = NSP(f, startPoint, maxIter = 300, name = 'ns' + str(N+K), maxTime = 15000, maxFunEvals=1e7, color = Colors[i]) #p.constraints = y>-100 p.fEnough = 1.0e-1#e-1 p.fTol = 0.5e-1 p.debug = 1 #p.constraints = (y > 5)(tol=1e-4) #x>1e-1 #[2*y<sin(arange(N))] #r = p.manage(solver, iprint=10, xtol = 1e-9, ftol = 1e-9, show = solver == solvers[-1], maxIter = 10000) r = p.solve(solver, iprint=10, xtol = 1e-6, ftol = 1e-6, debug=0, show = solver == solvers[-1], plot = 0) print 'end point: f1 = %e f2 = %e' % (f1(r.xf), f2(r.xf))