[Date Index]
[Thread Index]
[Author Index]
RE: RE: How can I control FindMinimum's behavior?
*To*: mathgroup at smc.vnet.net
*Subject*: [mg19137] RE: RE: [mg19037] How can I control FindMinimum's behavior?
*From*: Shiraz Markarian <shmarkar at chem.nwu.edu>
*Date*: Thu, 5 Aug 1999 23:58:40 -0400
*Organization*: Northwestern University
*Sender*: owner-wri-mathgroup at wolfram.com
Hi Ted and everyone,
Let me first thank you for your prompt reply. I have been following the
discussion group for sometime and I really appreciate your and
others in this group's willingness to help so many people with their
questions.
I have slowly begun to realize that the QuasiNewton method requires
analytic derivatives. The problem I sent the group was perhaps an
oversimplification of what I have on my hands. In the real case, the
target function is the product of a known matrix A and a trial matrix X
(w = A.X where A is a 73x3 matrix and X is a 3x3 matrix, initially a
unity
matrix). I then pick out all the negative values from the w matrix and
assign a
penalty function, 50*Sum(w(i,j)^2) for all negative w(i,j). It is this
penalty function that I want to minimize with respect to the matrix
elements of X. I wonder if GlobalOptimization is more suited for this
problem? Are there other algorithms that I should/could use? I looked in
MathSource and found some annealing/genetic algorithms.
You might wonder why I am insisting on QuasiNewton. There are two
reasons.
One is that the original reference uses the BFGS algorithm and secondly,
I
find that when I set the Method->Automatic, the elements of X are
changed
one at a time (stiff equation?) and minimization inevitably returns the
input values back. Apparently the BFGS algorithm worked in the original
reference for an identical problem. Is there any way to input a gradient
for the above problem so as to get the QuasiNewton method to work? I am
using Mathematica for Students 3.0.1, if that is relevant.
Thanks for your help, rajdeep kalgutkar
>
> Rajdeep Kalgutkar wrote:
> ---------------------------
> I have been using FindMinimum for a multidimensional minimization
problem. I
> find that when Method->Automatic is used, my input parameters values
are
> passed on to my target function immediately, but when I use
> Method->QuasiNewton, FindMinimum insists on symbolic input during the
first
> minimization cycle. This happens even though I specify 2 input values.
My
> target function does not have symbolic derivatives and therefore it
the
> minimization procedure crashes when using the QuasiNewton method. Is
there
> anyway to prevent FindMinimum from insisting on symbolic input
initially?
> ----------------------------
>
> Apparently the QuasiNewton method needs to have the symbolic
derivative. In
> your example the function does have a symbolic derivative. The only
problem
> is that Mathematica can't figure it out because of the way (func) is
> defined. What you need to do is use the Gradient option to tell the
kernel
> what the derivative is. It's called Gradient because that's what you
need
> for multi-dimensional problems. Also the Quasi-Newton method only
needs one
> starting point.
>
> My solution is below.
> --------------------------
>
> In[1]:=func[x_]:=Module[{w},
> w=Sin[x]^2+0.2*x;
> Print[w," ",x];
> w
> ]
>
>
>
> In[2]:=
> FindMinimum[func[x], {x,0.},
> Method->QuasiNewton,
> Gradient->{2 Sin[x]Cos[x]+0.2}
> ]
>
>
>
> 0. 0.
>
> -0.000530497 -0.2
>
> -0.0100297 -0.102717
>
> -0.0100337 -0.100623
>
> -0.0100337 -0.100679
>
>
> Out[2]=
> {-0.0100337,{x->-0.100679}}
>
>
> -----------------
> Regards,
> Ted Ersek
>
Prev by Date:
**Re: Re: equaltity of lists**
Next by Date:
**Re: DSolve Bessels**
Previous by thread:
**RE: How can I control FindMinimum's behavior?**
Next by thread:
**Re: Clippling of polygons within a defined region**
| |