root/trunk/openopt/scikits/openopt/examples/restricted_dom.py

Revision 1647, 1.4 KB (checked in by dmitrey.kroshko, 22 months ago)

minor update for example

Line 
1"""
2Some non-linear functions have much more restricted dom than R^nVars.
3For example F(x) = log(x); dom F = R+ = {x: x>0}
4
5For optimization solvers it is wont to expect user-povided F(x) = nan if x is out of dom.
6
7I can't inform how succsesfully OO-connected solvers
8will handle a prob instance with restricted dom
9because it seems to be too prob-specific
10
11Still I can inform that ralg handles the problems rather well
12provided in every point x from R^nVars at least one ineq constraint is active
13(i.e. value constr[i](x) belongs to R+)
14
15Note also that some solvers require x0 inside dom objFunc.
16For ralg it doesn't matter.
17"""
18
19from numpy import *
20from scikits.openopt import NLP
21
22n = 15
23x0 = n+15*(1+cos(arange(n)))
24
25# from all OO-connected NLP solvers
26# only ralg can handle x0 out of dom objFunc:
27# x0 = n+15*(cos(arange(n)))
28
29f = lambda x: (x**2).sum() + sqrt(x**3-arange(n)**3).sum()
30df = lambda x: 2*x + 0.5*3*x**2/sqrt(x**3-arange(n)**3)
31c = []
32dc = []
33for i in xrange(n):
34    # suppose we don't know that a <= b <=> a^3 <= b^3
35    # elseware it could be simplified to box-bound constraints
36    c += [lambda x, i=i: i**3-x[i]**3]
37    dc += [lambda x, i=i: hstack((zeros(i), -3*x[i]**2, zeros(n-i-1)))]
38
39solvers = ['ralg', 'ipopt']
40for solver in solvers:
41    p = NLP(f, x0, df=df, c=c, dc=dc, iprint = 100, maxIter = 10000, maxFunEvals = 1e8, xtol=4e-7)
42
43    #p.checkdf()
44    #p.checkdc()
45    r = p.solve(solver)
46# expected r.xf = [0, 1, 2, ...]
Note: See TracBrowser for help on using the browser.