lincher means "LINearization solver written in CHERkassy town, Ukraine"

currently it requires QP solver (the only one connected to OO is cvxopt one, also mosek)

Here's a small example, tomorrow I will have it made more exact:

from scikits.openopt import NLP

from numpy import cos, arange, ones, asarray

N = 15

p = NLP(lambda x: (x**2).sum()+((x-10)**2).sum(), cos(arange(N)))

p.c = lambda x: [2* x[0] **4-32, x[1]**2+x[2]**2 - 8]

h1 = lambda x: 1e6*(x[-1]-1)**4

h2 = lambda x: (x[-2]-1.5)**4

p.h = [h1, h2]

p.lb = -6*ones(p.n)

p.ub = 6*ones(p.n)

p.maxIter = 1e3

r = p.solve('lincher')

>>> starting solver lincher (BSD license) with problem unnamed

itn 0: Fk= 1485.60535217 maxResidual= 555356.768901

itn 25 : Fk= 861.006426698 maxResidual= 0.0815128971501

N= 196862.294712 alpha= 0.0140694378966

itn 50 : Fk= 860.925453409 maxResidual= 0.000180521169415

N= 197037.161793 alpha= 0.155520860502

itn 75 : Fk= 860.890756449 maxResidual= 1.74602521597e-06

N= 200312.271054 alpha= 0.0503775225937

itn 85 : Fk= 860.887158576 maxResidual= 9.89853580435e-07

N= 203978.915945 alpha= 0.0328485602443

solver lincher finished solving the problem unnamed

istop: 4 (|| F[k] - F[k-1] || < funtol)

Solver: Time elapsed = 1.49 CPU Time Elapsed = 1.42

objFunValue: 860.887158576 (feasible)

>>> r.xf

array([ 2.00000001, 2.00015789, 1.99984234, 5.00000007, 5.0000001 ,

5.0000001 , 4.99999931, 5.00000009, 5.00000007, 5.00000008,

5.00000002, 4.99999999, 4.99999994, 1.47340852, 0.99915843])

other changes:

r.msg field has been added (see line above:

istop: 4 (|| F[k] - F[k-1] || < funtol)

)

r contains iterFvals and iterXvals - values of x[k] and f[k] - k-th iter X and objFunc(x)

+some minor changes

Subscribe to:
Post Comments (Atom)

## No comments:

Post a Comment