This is the mail archive of the gsl-discuss@sources.redhat.com mailing list for the GSL project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: multimin with non-linear constraints


> From: Jerome BENOIT <jgmbenoit at wanadoo dot fr>
> Date: Wed, 26 Mar 2003 17:15:05 +0200

> Is there as a way to use one of the routines provided by GSL to
> perform a Minimal Minimization WITH nonlinear constraints ?

Off the shelf, gsl functions don't support constrained optimisation.

I think this is a very important area and hope that developers go into
this direction. My experience has been that in many a problem which is
ostensibly an unconstrained maximisation, the ability to inject
restrictions helps us get a solution. I believe there are good
constrained optimisation codes out there, hopefully someone will hook
them into gsl soon. Google for 'NEOS' and for 'nonlinear programming faq'.


In the meantime, one thing you can do is to utilise transformations
which restrict the range of parameters.

Suppose you have a parameter t1 where the search must be restricted to
positive values only. Then define a parameter t1 using the transform
t1' = log(t1). The minimiser will be 'told' to minimise in the t1'
space, not t1 space. For values -infty < t1' < infty, the values of t1
are limited to positive values only. You'll need to go through the
chain rule to supply the first derivative w.r.t. t1' and not t1.

A parameter has to be forced to lie between -1 and 1: Exploit the
properties of tan(theta) where as -pi/2 < theta < pi/2, tan(theta)
goes from -infty to +infty. So transform an unconstrained parameter
(which goes from -infty to +infty) through atan and you'll get a range
restriction.

Last, I often estimate elements of a covariance matrix S where S has
to be constrained to be p.d. This is achieved by exploiting the
cholesky transform S = TT'. Now the matrix T can be unconstrained.


Implementing constraints through such transformations works in a small
class of problems. I hope it helps you. :-) It doesn't take you to
implementing constraints like alpha+beta<1, which are also very
important.

-- 
Ajay Shah                            _   /|                          hahS yajA
Consultant,                         \'o.O '                        ,tnatlusnoC
Dept. Econ. Affairs,                =(___)=                 ajayshah at mayin dot org
Ministry of Finance, New Delhi         U        http://www.mayin.org/~ajayshah


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]