gtol=gtol, diffInt=diffInt, ftol=ftol, maxIter=1390, plot=PLOT, color=colors[j], iprint=10, df_iter=4, legend=solver, show=False, contol=contol, maxTime=maxTime, maxFunEvals=maxFunEvals, name="NLP_bench_1", ) p.constraints = [c1 < 0, c2 < 0, h1.eq(0), h2.eq(0), x > lb, x < ub] # p.constraints = h1.eq(0) # p._Prepare() # print p.dc(p.x0) # print h1.D(startPoint) # print h2.D(startPoint) # continue if solver == "algencan": p.gtol = 1e-2 elif solver == "ralg": pass # p.debug = 1 # p.debug = 1
############################################################### solvers = ['ralg', 'scipy_cobyla', 'lincher', 'scipy_slsqp', 'ipopt','algencan'] #solvers = ['ralg', 'ipopt'] solvers = ['ralg', 'scipy_cobyla', 'lincher', 'scipy_slsqp', 'ipopt'] solvers = ['ralg', 'scipy_slsqp', 'scipy_cobyla', 'algencan'] #solvers = ['ipopt','ralg', 'algencan'] solvers = ['ralg', 'scipy_cobyla'] #solvers = ['ralg', 'scipy_slsqp'] #solvers = ['ralg', 'algencan'] solvers = ['ralg'] ############################################################### lines, results = [], {} for j, solver in enumerate(solvers): p = NLP(ff, startPoint, xlabel = Xlabel, gtol=gtol, diffInt = diffInt, ftol = ftol, maxIter = 1390, plot = PLOT, color = colors[j], iprint = 10, df_iter = 4, legend = solver, show=False, contol = contol, maxTime = maxTime, maxFunEvals = maxFunEvals, name='NLP_bench_1') p.constraints = [c1<0, c2<0, h1.eq(0), h2.eq(0), x > lb, x< ub] #p.constraints = h1.eq(0) #p._Prepare() #print p.dc(p.x0) #print h1.D(startPoint) #print h2.D(startPoint) #continue if solver =='algencan': p.gtol = 1e-2 elif solver == 'ralg': pass #p.debug = 1 #p.debug = 1
from FuncDesigner import * from openopt import NLP a, b, c = oovars('a', 'b', 'c') f = sum(a * [1, 2])**2 + b**2 + c**2 startPoint = {a: [100, 12], b: 2, c: 40} p = NLP(f, startPoint) p.constraints = [(2*c+a-10)**2<1.5, (a-10)**2<1.5, a[0]>8.9, a+b>[ 7.97999836, 7.8552538 ], \ a<9, (c-2)**2<1, b<-1.02, c>1.01, log2(c-15*a/b)+a>4, ((b+2*c-1)**2).eq(0)] r = p.solve('ralg', iprint=1) print r.xf # {a: array([ 8.99999769, 8.87525255]), b: array([-1.0199994]), c: array([ 1.01000874])}
from FuncDesigner import * from openopt import NLP a, b, c = oovars('a', 'b', 'c') f = sum(a*[1, 2])**2+b**2+c**2 startPoint = {a:[100, 12], b:2, c:40} # however, you'd better use numpy arrays instead of Python lists p = NLP(f, startPoint) p.constraints = [(2*c+a-10)**2 < 1.5 + 0.1*b, (a-10)**2<1.5, a[0]>8.9, (a+b > [ 7.97999836, 7.8552538 ])('sum_a_b', tol=1.00000e-12), \ a < 9, ((c-2)**2 < 1), (b < -1.02), c > 1.01, ((b + c * log10(a).sum() - 1) ** 2==0)(tol=1e-6)] r = p.minimize('ralg', plot=0, xtol=1e-7) #r = p.solve('ralg') # for NLPs old-style (openopt 0.25 and below) p.solve() is same to p.minimize() #r = p.maximize('ralg') print(r.xf) print(a(r.xf)) a_opt, b_opt, c_opt = r(a, b, c) # or any of the following: # a_opt, b_opt, c_opt = r(a), r(b), r(c) # r('a'), r('b'), r('c') (provided you have assigned the names to oovars as above) # r('a', 'b', 'c') # a(r), b(r), c(r) """ Expected output: ... objFunValue: 717.75631 (feasible, max constraint = 7.44605e-07) {a: array([ 8.99999792, 8.87525277]), b: array([-1.01999971]), c: array([ 1.0613562])} """
from FuncDesigner import * from openopt import NLP a, b, c = oovars('a', 'b', 'c') f = sum(a*[1, 2])**2+b**2+c**2 startPoint = {a:[100, 12], b:2, c:40} p = NLP(f, startPoint) p.constraints = [(2*c+a-10)**2<1.5, (a-10)**2<1.5, a[0]>8.9, a+b>[ 7.97999836, 7.8552538 ], \ a<9, (c-2)**2<1, b<-1.02, c>1.01, log2(c-15*a/b)+a>4, ((b+2*c-1)**2).eq(0)] r = p.solve('ralg', iprint =1) print r.xf # {a: array([ 8.99999769, 8.87525255]), b: array([-1.0199994]), c: array([ 1.01000874])}
from FuncDesigner import * from openopt import NLP, oosolver from numpy import arange N = 10 a = oovar('a', size=N) b = oovar('b', size=N) f = (sum(abs(a*arange(1,N+1))**2.5)+sum(abs(b*arange(1,N+1))**1.5)) / 10000 startPoint = {a:cos(arange(N)), b:sin(arange(N))} # however, you'd better use numpy arrays instead of Python lists p = NLP(f, startPoint) #p.constraints = [(a>1)(tol=1e-5), a**2+b**2 < 0.1+a+b]# + [(a[i]**2+b[i]**2 < 3+abs(a[i])+abs(b[i])) for i in range(N)] p.constraints = [a>1, 10*a>10] # + [(a[i]**2+b[i]**2 < 3+abs(a[i])+abs(b[i])) for i in range(N)] #p.constraints = [] #C = sum(a**2+b**2 - (0.1+a+b) C = [ifThenElse(a[i]**2+b[i]**2 - (0.1+a[i]+b[i])<0, 0, a[i]**2+b[i]**2 - (0.1+a[i]+b[i])) for i in range(N)] p.constraints.append(sum(C)<0) solver = 'ipopt' solver = oosolver('ralg') #solver = oosolver('ralg', approach='nqp') r = p.minimize(solver, maxIter = 15000)