/usr/share/pyshared/openopt/examples/nlp_bench_2.py is in python-openopt 0.38+svn1589-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | from openopt import NLP
from numpy import cos, arange, ones, asarray, abs, zeros, sqrt, sign, asscalar
from pylab import legend, show, plot, subplot, xlabel, subplots_adjust
from string import rjust, ljust, expandtabs, center, lower
from scipy import rand
N = 10
M = 5
s = 1.3
f = lambda x: (abs(x-M) ** s).sum()
df = lambda x: s * sign(x-M) * abs(x-M) ** (s-1)
x0 = cos(arange(N)) #+ rand(N)
c = lambda x: [2* x[0] **4-32, x[1]**2+x[2]**2 - 8]
def dc(x):
r = zeros((len(c(x0)), p.n))
r[0,0] = 2 * 4 * x[0]**3
r[1,1] = 2 * x[1]
r[1,2] = 2 * x[2]
return r
K = 1e2
h1 = lambda x: K*(x[-1]-1)**4
h2 = lambda x: (x[-2]-1.5)**4
h3 = lambda x: (x[-5]+x[-6]-2*M+1.5)**6
h = lambda x: (h1(x), h2(x), h3(x))
def dh(x):
r = zeros((3, N))
r[0, -1] = 4 * K * (x[-1]-1)**3
r[1, -2] = 4 * (x[-2]-1.5)**3
r[2, -5] = 6 * (x[-5]+x[-6]-2*M+1.5)**5
r[2, -6] = 6 * (x[-5]+x[-6]-2*M+1.5)**5
return r
lb = -6*ones(N)
ub = 6*ones(N)
lb[3] = 5.5
ub[4] = 4.5
gtol=1e-1
ftol = 1e-6
xtol = 1e-6
diffInt = 1e-8
contol = 1e-6
maxTime = 10
maxIter = 13700
colors = ['b', 'k', 'y', 'g', 'r']
########################################
solvers = ['ralg', 'scipy_cobyla', 'lincher', 'scipy_slsqp']
#solvers = ['scipy_cobyla', 'ralg']
#solvers = ['lincher', 'scipy_cobyla']
solvers = [ 'ralg','scipy_cobyla']
#solvers = [ 'algencan','algencan2']
#solvers = [ 'ralg', 'ralg3']
########################################
colors = colors[:len(solvers)]
lines, results = [], {}
for j in range(len(solvers)):
solver = solvers[j]
color = colors[j]
p = NLP(f, x0, name = 'bench2', df = df, c=c, dc = dc, h=h, dh = dh, lb = lb, ub = ub, gtol=gtol, ftol = ftol, maxFunEvals = 1e7, maxIter = maxIter, maxTime = maxTime, plot = 1, color = color, iprint = 10, legend = [solvers[j]], show=False, contol = contol)
# p = NLP(f, x0, name = 'bench2', df = df, c=c, dc = dc, lb = lb, ub = ub, gtol=gtol, ftol = ftol, maxFunEvals = 1e7, maxIter = 1e4, maxTime = maxTime, plot = 1, color = color, iprint = 0, legend = [solvers[j]], show=False, contol = contol)
if solver[:4] == ['ralg']:
pass
# p.gtol = 1e-8
# p.ftol = 1e-7
# p.xtol = 1e-7
elif solver == 'lincher':
#p.iprint = 1
p.maxTime = 1e15
p.maxIter = 100
## p.check.df = 1
## p.check.dc = 1
## p.check.dh = 1
r = p.solve(solver)
for fn in ('h','c'):
if not r.evals.has_key(fn): r.evals[fn]=0 # if no c or h are used in problem
results[solver] = (r.ff, p.getMaxResidual(r.xf), r.elapsed['solver_time'], r.elapsed['solver_cputime'], r.evals['f'], r.evals['c'], r.evals['h'])
subplot(2,1,1)
F0 = asscalar(p.f(p.x0))
lines.append(plot([0, 1e-15], [F0, F0], color= colors[j]))
for i in range(2):
subplot(2,1,i+1)
legend(lines, solvers)
subplots_adjust(bottom=0.2, hspace=0.3)
xl = ['Solver f_opt MaxConstr Time CPUTime fEvals cEvals hEvals']
for i in range(len(results)):
s=(ljust(lower(solvers[i]), 40-len(solvers[i]))+'%0.3f'% (results[solvers[i]][0]) + ' %0.1e' % (results[solvers[i]][1]) + (' %0.2f'% (results[solvers[i]][2])) + ' %0.2f '% (results[solvers[i]][3]) + str(results[solvers[i]][4]) + ' ' + rjust(str(results[solvers[i]][5]), 5) + ' '*5 +str(results[solvers[i]][6]))
xl.append(s)
xl = '\n'.join(xl)
subplot(2,1,1)
xlabel('Time elapsed (without graphic output), sec')
from pylab import *
subplot(2,1,2)
xlabel(xl)
show()
|