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'])))
asa = lambda x: asarray(x).reshape(-1, 1) Colors = ['r', 'k', 'b'] R = {} for i, solver in enumerate(solvers): p = NSP(obj, startPoint, maxIter=1700, name='Rzhevsky4 (nVars: ' + str(n) + ')', maxTime=300, maxFunEvals=1e7, color=Colors[i]) p.fTol = 0.5e-20 p.fOpt = 0.0 cb.TMP = 1000 cb.stat = {'dist': [], 'f': [], 'df': []} r = p.solve(solver, iprint=10, xtol=1e-20, ftol=1e-20, 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: rjevsky3 (nVars: 10) type: NSP goal: minimum
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
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) Colors = ['r', 'k','b'] lines = [] R = {} for i, solver in enumerate(solvers): p = NSP(obj, startPoint, fixedVars=(x[0], x[-1]), maxTime = 20, name = 'Rzhevsky7 (nVars: ' + str(n)+')', maxFunEvals=1e7, color = Colors[i]) p._prepare() p.c=None #p.fEnough = 2.08983385058799+4e-10 p.fOpt = obj(T_optPoint) p.fTol = 0.5e-15 cb.TMP = 1000 cb.stat = {'dist':[], 'f':[], 'df':[]} r = p.solve(solver, iprint=10, xtol = 1e-10, ftol = 1e-16, gtol = 1e-10, debug=0, show = solver == solvers[-1], plot = 0, callback = cb) print('objective evals: %d gradient evals: %d ' % (r.evals['f'],r.evals['df'])) print('distance to f*: %0.1e' % (r.ff-p.fOpt)) print('distance to x*: %0.1e' % (norm(asarray(X) - hstack((X[0], p.xk, X[-1]))))) R[solver] = hstack((asa(cb.stat['dist']), asa(cb.stat['f']), asa(cb.stat['df']))) ''' -------------------------------------------------- solver: gsubg problem: rjevsky6 (nVars: 30) type: NSP goal: minimum iter objFunVal log10(MaxResidual/ConTol) 0 2.954e+01 -100.00 OpenOpt Warning: Handling of constraints is not implemented properly for the solver gsubg yet 10 4.002e+00 -100.00
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 50 -8.412e-01
# 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) Colors = ['r', 'k','b'] R = {} for i, solver in enumerate(solvers): p = NSP(obj, startPoint, maxIter = 1700, name = 'Rzhevsky4 (nVars: ' + str(n)+')', maxTime = 300, maxFunEvals=1e7, color = Colors[i]) p.fTol = 0.5e-20 p.fOpt = 0.0 cb.TMP = 1000 cb.stat = {'dist':[], 'f':[], 'df':[]} r = p.solve(solver, iprint=10, xtol = 1e-20, ftol = 1e-20, 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: rjevsky3 (nVars: 10) type: NSP goal: minimum iter objFunVal 0 9.789e-01 10 5.155e-03 12 2.168e-03 istop: 16 (optimal solution wrt required fTol has been obtained) Solver: Time Elapsed = 1.1 CPU Time Elapsed = 1.1 objFunValue: 0.002167903 '''
lines = [] R = {} for i, solver in enumerate(solvers): p = NSP( obj, startPoint, maxIter=1700, name="Rzhevsky5 (nVars: " + str(n) + ")", maxTime=300, maxFunEvals=1e7, color=Colors[i], ) p.fTol = 0.5e-10 cb.TMP = 1000 cb.stat = {"dist": [], "f": [], "df": []} p.fOpt = -34.408608965509742 p.maxTime = 30 r = p.solve(solver, iprint=1, xtol=1e-15, ftol=1e-15, gtol=1e-15, 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: rjevsky5 (nVars: 50) type: NSP goal: minimum iter objFunVal 0 -2.241e+00 1 -3.056e+01 2 -3.387e+01 3 -3.427e+01 4 -3.434e+01 5 -3.436e+01 6 -3.439e+01 7 -3.439e+01
asa = lambda x: asarray(x).reshape(-1, 1) lines = [] R = {} for i, solver in enumerate(solvers): p = NSP(obj, startPoint, maxIter=1700, name='Rzhevsky5 (nVars: ' + str(n) + ')', maxTime=300, maxFunEvals=1e7, color=Colors[i]) p.fTol = 0.5e-10 cb.TMP = 1000 cb.stat = {'dist': [], 'f': [], 'df': []} p.fOpt = -34.408608965509742 p.maxTime = 30 r = p.solve(solver, iprint=1, xtol=1e-15, ftol=1e-15, gtol=1e-15, 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: rjevsky5 (nVars: 50) type: NSP goal: minimum iter objFunVal 0 -2.241e+00
Colors = ['r', 'k', 'b'] lines = [] R = {} for i, solver in enumerate(solvers): p = NSP(obj, startPoint, fixedVars=(x[0], x[-1]), maxTime=20, name='Rzhevsky7 (nVars: ' + str(n) + ')', maxFunEvals=1e7, color=Colors[i]) p._prepare() p.c = None #p.fEnough = 2.08983385058799+4e-10 p.fOpt = obj(T_optPoint) p.fTol = 0.5e-15 cb.TMP = 1000 cb.stat = {'dist': [], 'f': [], 'df': []} r = p.solve(solver, iprint=10, xtol=1e-10, ftol=1e-16, gtol=1e-10, debug=0, show=solver == solvers[-1], plot=0, callback=cb) print('objective evals: %d gradient evals: %d ' % (r.evals['f'], r.evals['df'])) print('distance to f*: %0.1e' % (r.ff - p.fOpt))