|
[Date Index]
[Thread Index]
[Author Index]
Re: Constraint evaluation in NMinimize
- To: mathgroup at smc.vnet.net
- Subject: [mg122661] Re: Constraint evaluation in NMinimize
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Sat, 5 Nov 2011 04:45:49 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201111041102.GAA29272@smc.vnet.net>
On 11/04/2011 06:02 AM, Ray Koopman wrote:
> I want to minimize f[x] with respect to x, subject to g[x].
> Both f and g depend in part on h[x], so to avoid calculating h[x]
> twice I use an auxiliary variable:
>
> NMinimize[{t = h[x]; f[x,t], g[x,t]}, {x}].
>
> That appears to work, but it depends on the constraint never being
> evaluated without first evaluating the minimand, and I can't find
> anything in the documentation that says that that will always be
> the case. Can anyone help?
>
> (I asked a similar question several years ago, at which time DrBob
> pointed me to sec 2.6.4 in the book, but it's not obvious to me if
> the standard evaluation procedure necessarily applies here.)
>
Could memoize h[x] for numeric x. That way you don't need to second
guess the evaluation internals of NMinimize.
h[x_?NumericQ] := h[x] = ...
I have some familiarity with those and offhand I've no idea if your
method above is guaranteed to work.
For purposes of speed it might also be useful to memoize f and g. Some
methods in NMinimize, such as DifferentialEvolution, may recompute at
the same points quite often.
An alternative might be:
objandconstraint[x_?NumericQ] := Module[{t}, t=h[x]; {f[x,t],g[x,t]}]
(This could also be memoized.)
Then do:
NMinimize[objandconstraint[x], {x}]
Caveat: I have not tried this (short on time at the moment) and make no
guarantee as to whether it will work. It might be DOA.
Daniel Lichtblau
Wolfram Research
Prev by Date:
Re: bug in Mathematica?
Next by Date:
Re: Impossible to move objects in dynamic graphics
Previous by thread:
Constraint evaluation in NMinimize
Next by thread:
Re: Constraint evaluation in NMinimize
|