Re: Warning Message wrt NMinimize function
- To: mathgroup at smc.vnet.net
- Subject: [mg69760] Re: Warning Message wrt NMinimize function
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Fri, 22 Sep 2006 01:04:39 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <eeu01h$b83$1@smc.vnet.net>
John Adeosun wrote:
> Hello Everyone,
>
> I want to use NMinimize to solve an optimization problem. In essence, I'm
> trying to numerically minimize the "sum of a square of errors" for two
> lists, aa and bb (earlier generated lists of n elements or points), using
> the below syntax:
>
> NMinimize[{Plus @@ Table[(aa[[i]] - bb[[i]])^2, {i, n}], {y> 0}}, y,
> Method -> "DifferentialEvolution"]
> This does not yield the intended result of, say, {minimumvalue, y->10.012}.
> I have been getting an expression (unevaluated "result" ) with a warning
> message such as:
>
> NMinimize::nnum : The function value {336.381} is not a number at {y}=
> {0.063703}. More...
>
> I then clicked on 'More' for help. I got the below message from the help
> browser:
>
> "General::nnum
>
> function::nnum: The function value `3` is not a number at `2` = `1`.
>
> Notes for this message have not yet been added."
>
> Has anyone experienced this before? Is anything wrong with my syntax above?
John,
The syntax above seems correct (see below). I suspect you have some
problem with your lists. Note that the second version of the code should
be more efficient (you can do vector operations).
In[1]:=
aa = Table[Random[], {10}];
bb = Table[Random[], {10}];
In[3]:=
NMinimize[{Plus @@ Table[(aa[[i]] - bb[[i]])^2, {i, 10}], {y > 0}}, y,
Method -> "DifferentialEvolution"]
Out[3]=
{1.71356,{y\[Rule]13.0914}}
In[4]:=
NMinimize[{Plus @@ ((aa - bb)^2), {y > 0}}, y,
Method -> "DifferentialEvolution"]
Out[4]=
{1.71356,{y\[Rule]13.0914}}
In[5]:=
$Version
Out[5]=
5.2 for Microsoft Windows (June 20, 2005)
HTH,
Jean-Marc