commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gilles Sadowski <gil...@harfang.homelinux.org>
Subject Re: [Math] Remove "BOBYQAOptimizer"
Date Wed, 02 Jan 2013 11:39:19 GMT
Hi Dietmar.

Good to hear from you![1] :-)

> >If nobody is able to work on "BOBYQAOptimizer" so as to make it a
> >maintainable and documented code, I request that it be removed from the next
> >major release (4.0).
> 
> No objections from my side. BOBYQA was again heavily used at 
> https://issfd.jpl.nasa.gov/home/GTOC6 (10th place this time), but 
> 
> for performance reasons I used a C++ variant wrapped via JNI called from Java
> code implementing the CMA optimizer interface. This seems the better solution
> (keep the optimizer implementation outside CMA/Java and use only the interface)|
> as long as we have no real Java implementation. 

This is also an important point: the current code in "BOBYQAOptimizer" is in
an intermediate step of the transformation phase; if the evaluation of the
objective function is fast, the computation time will be dominated by the
optimizer's internal working because matrix operations are done with explicit
loops, using the "getEntry" to access each element! Improving efficiency will
be (relatively) easy once CM has specialized matrix implementations (e.g.
symmetric matrix). The not so easy part is that in some places, the code's
behaviour is extremely fragile: changing the ordering of normally
commutative operations make some unit tests fail (hence that may also happen
when the explicit looping is replaced by a method that not necessarily does
the operations in the exact same way). The problem may lie in the unit
tests, we simply don't know...


Regards,
Gilles

[1] Reminder: Dietmar brought the initial Java port of "BOBYQA".

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message