2011/10/10 Carnë Draug <carandraug+...@gmail.com>:
> On 4 October 2011 14:52, Olaf Till <olaf.t...@uni-jena.de> wrote:
>> On Tue, Oct 04, 2011 at 03:01:08PM +0300, Fotios wrote:
>>> Στις 2011-10-04 14:31, ο/η Olaf Till έγραψε:
>>> >On Tue, Oct 04, 2011 at 01:18:11AM +0100, Carnë Draug wrote:
>>> >>On 4 October 2011 00:48, Fotios<fotios.kaso...@gmail.com>  wrote:
>>> >>>Here is the deriv function with an added demo and minor correction.
>>> >>>
>>> >>>/Fotios
>>> >>This was supposed to be sent to the octave-forge. After talking to
>>> >>Fotios  #octave, this function was renamed jacobs (there's already a
>>> >>deriv function) and added to the optim package.
>>> >>
>>> >>Carnë
>>> >I think such a function is really useful for the optim package, even
>>> >if it is intended to be used elsewhere. But in the current form, the
>>> >usefulness seems to be limited by the restriction that the passed
>>> >function 'f' is expected to compute exactly as many elements as there
>>> >are parameters. In most standard optimizations we either deal with
>>> >gradients of a scalar valued 'objective function' or with Jacobians of
>>> >a model function which usually returns more elements than there are
>>> >parameters. So I suggest that this restriction should be removed.
>>> >
>>> >If the above should be agreed, there are some minor issues, some of
>>> >them 'cosmetic':
>>> >
>>> >1. Since I currently try to standardize the interface to some of the
>>> >optimization function, could we change the order of argumets to
>>> >
>>> >'jacobs (x, f, ...)'
>>> >
>>> >?
>>> >
>>> >2. I think the "jacobs: ..." in the error messages is not necessary,
>>> >since the m-file in which the error originates is reported by Octave.
>>> >
>>> >3.
>>> >
>>> >  if (abs (h)>= 1e-2)
>>> >    warning ("jacobs: H is too big and the result should not be trusted");
>>> >  endif
>>> >
>>> >How do you come to this value (1e-2) ? If there is a reason, there
>>> >should be probably a comment there explaining it.
>>> >
>>> >4. For the same reason as in 1., and for interfacing with some
>>> >optimization functions, can we
>>> >
>>> >- make the third argument a structure with a field 'h',
>>> >
>>> >- accept a further field 'fixed': a logical vector indicating for
>>> >   which elements of 'x' no gradients are to be computed, but zero is
>>> >   returned instead?
>>> >
>>> >
>>> >If there should be agreement about the main issue (dimension of 'f'),
>>> >I could suggest a patch for all the above, if you want me to.
>>> >
>>> >Olaf
>>>
>>> I absolutely agree with your general comment regarding optimization
>>> since the design variables are typically more than the objective
>>> functions - keep in mind though that i have not tried the function
>>> for mid-scale optimization problems and that i would argue about how
>>> useful it could be in that case.
>>
>> Well, some of the optimization functions use some routine for finite
>> differencing, so using 'jacobs.m' instead has the potential to be
>> better. But I agree that the used objective or model functions would
>> have to be suitably programmed for this. May be it would be useful for
>> that if someone wrote a class for overloading "<", ">", "<=", ">=",
>> "max", "min" and maybe others ...
>>
>> Anyway I have made a respective change, allowing arbitrary
>> dimensionness for 'f', as you can see in the patch.
>>
>>> Regarding the interfacing comments
>>> you can apply all of your suggestions. There is no good reason for
>>> the 1e-2 warning since it always depends both on h and on the value
>>> of the 3rd derivative, BUT since log(|Df(h)-exact|) depends linearly
>>> on log(h) i though i had to prevent naive users from increasing h or
>>> at least warn them about the accuracy of the approximation (it is
>>> just a sloppy educational guess - after some testing - coded there
>>> with students in mind that can be removed as well). I could even
>>> suggest removing the user control over the step size h (demo needs
>>> to be removed) since this approach costs more (with respect to
>>> memory) compared to fd and the only gain from using it comes from
>>> the fact that you can get eps exact derivatives.
>>
>> So I just changed the warning text to 'not allowed', sinces as you say
>> one cannot be sure that it is really 'too big'. Consequently, larger
>> values are reduced to the maximum value (1e-3 instead of 1e-2, to be
>> able to use ">" instead of ">=").
>>
>>>
>>> /Fotis
>>
>> I attach the patch, but as it is not very readable, also the new
>> version of the function.
>>
>> All tests still pass and the demo works (after a slight change).
>>
>> Do you think I can submit it so?
>
> Hi Fotos
>
> just bringing this up again as the upgrade made by Olaf has not been
> comitted yet.
>
> Carnë
>

I just made this commit so it doesn't get lost.

Carnë

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2d-oct
_______________________________________________
Octave-dev mailing list
Octave-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/octave-dev

Reply via email to