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ë

------------------------------------------------------------------------------
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-d2dcopy1
_______________________________________________
Octave-dev mailing list
Octave-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/octave-dev

Reply via email to