[Date Index]
[Thread Index]
[Author Index]
Re: Keeping global parameters in an evaluated function
*To*: mathgroup at smc.vnet.net
*Subject*: [mg113271] Re: Keeping global parameters in an evaluated function
*From*: Leonid Shifrin <lshifr at gmail.com>
*Date*: Thu, 21 Oct 2010 07:03:23 -0400 (EDT)
Hi Davide,
Looks like your guess about initial evaluation of the function is correct.
If you restrict your argument to be numeric, you get what you want:
In[84]:=
Clear[ff];
ff[x_?NumericQ] := (x - c)^4
c = 1;
iterations = 1;
FindMinimum[ff[x], {x, 1001}, StepMonitor :> {c = c/2; iterations++}]
Print[{c // N, iterations}]
Out[88]= {1.0531*10^-30, {x -> 3.20345*10^-8}}
During evaluation of In[84]:= {5.16988*10^-26,85}
Regards,
Leonid
On Wed, Oct 20, 2010 at 1:10 AM, Davide Mancusi <d.mancusi at ulg.ac.be> wrote:
> Hello everyone,
>
> I have a function that depends on some variables and a parameter (say
> c). My goal is to find the global minimum of the function for a given
> value of the parameter, say c=0. However, the function has a lot of
> local minima for c=0, and is thus very difficult to hit the global
> one. For c=1, however, the function is much smoother, and the
> minimization algorithms work pretty well.
>
> What I'm trying to do is to change the value of the parameter
> continuously while Mathematica minimizes the function. By doing so I
> hope to trap the minimization algorithms close to the global minimum
> using the smooth version of the function, and then slowly let c go to
> 0.
>
> I have come up with the following toy model (I use NMinimize in the
> real problem, but that shouldn't be important):
> f[x_] := (x - c)^4
> c=1;
> iterations=1;
> FindMinimum[ f[x], {x, 1001}, StepMonitor :> {c = c/2; iterations+
> +} ]
> Print[{c // N,iterations}]
> If I run this I get
> {4.48416*10^-32, {x -> 1.}}
> {1.45519*10^-11,37}
> The algorithm finds the minimum at x==1 while I would like it to find
> it close to 1.45519*10^-11.
>
> I think the problem lies in the fact that f[x] is evaluated only once,
> at the beginning of the minimization algorithm, and the global value
> of c gets substituted. Thus, even if I change c later, that doesn't
> affect the function being minimized.
>
> Can anyone suggest a way to update c from within the minimization
> routine?
>
> Thanks in advance,
> Davide
>
>
Prev by Date:
**Re: Keeping global parameters in an evaluated function**
Next by Date:
**Re: Using ReplaceAll (/.) on numerical digits**
Previous by thread:
**Re: Keeping global parameters in an evaluated function**
Next by thread:
**Re: Keeping global parameters in an evaluated function**
| |