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


Thank you very much for the reply.

In case I can be guided further let me be more specific
[as I can after reading the 'nonlinear programming faq']:
my constraints are just a set of quadratic equalities.
I quite sure that such a problem was studied before:
is there `keywords' for it ?


Thanks again, Jerome BENOIT



Ajay Shah wrote:
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.




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