[Insight-developers] single valued cost function

Ziv Yaniv zivy at isis.imac.georgetown.edu
Thu Jul 15 15:51:39 EDT 2010


Karthik,

You are obviously correct. Either the optimizer hierarchy should reflect 
this, or the type of the cost function passed to optimizers that require 
derivatives should be changed to the proposed 
SingleValuedCostFunctionWithDerivative.

I believe the only itk optimizer that doesn't require a derivative is 
the Amoeba optimizer?

In any case, a nice design of an optimization hierarchy is described in:

J. C. Meza, R. A. Oliva, P. D. Hough, and P. J. Williams, "OPT++: An 
Object Oriented Toolkit for Nonlinear Optimization",  ACM Transactions 
on Mathematical Software, Volume 33, Number 2, June 2007.

The toolkit's site is https://software.sandia.gov/opt++/index.html

                        Ziv


On 7/15/2010 2:52 PM, Karthik Krishnan wrote:
> On Fri, Jul 16, 2010 at 12:02 AM, Ziv Yaniv
> <zivy at isis.imac.georgetown.edu <mailto:zivy at isis.imac.georgetown.edu>>
> wrote:
>
>     What was the reasoning behind having the GetValueAndDerivative and
>     the pure virtual GetDerivative method in the
>     SingleValuedCostFunction class? This does not accommodate non
>     differentiable functions in a natural way.
>
>     I see two options:
>
>     Slight modification of the current cost function hierarchy,
>     1. Remove both methods from the SingleValuedCostFunction class.
>     2. Add a class SingleValuedCostFunctionWithDerivative adding the two
>     methods and inheriting from SingleValuedCostFunction
>     3. Modify the inheritance of the direct subclasses (7 according to
>     doxygen) from the old class to the new one.
>
>
> Don't you also need to to include a similar additional hierarchy in the
> optimizers, since the hierarchy of cost functions should be matched by
> the space of optimizers.
>
> There are only two kinds of cost functions : (a) single valued
> multivariate (b) Multivalued multivariate cost functions. Likewise there
> are two kinds of optimizers as well.
>
> thx
> --
> karthik
>
>
>     No change to code base,
>     1. Implementation of GetDerivative in a subclass that cannot compute
>     one just throws an excpetion. Ugly but guaranteed to get the
>     developers attention.
>
>     Am I missing something? If not, I would be happy if itk-v4 adopts
>     the first option.
>
>                        Ziv
>
>
>     --
>     Ziv Yaniv, PhD., Research Assistant Professor
>     Imaging Science and Information Systems (ISIS) Center
>     Department of Radiology
>     Georgetown University Medical Center
>     2115 Wisconsin Avenue, Suite 603
>     Washington, DC, 20007,
>
>     Phone: +1-202-687-7286
>     Fax: +1-202-784-3479
>     email: zivy at isis.georgetown.edu <mailto:zivy at isis.georgetown.edu>
>     web: http://isiswiki.georgetown.edu/zivy/
>     _______________________________________________
>     Powered by www.kitware.com <http://www.kitware.com>
>
>     Visit other Kitware open-source projects at
>     http://www.kitware.com/opensource/opensource.html
>
>     Kitware offers ITK Training Courses, for more information visit:
>     http://kitware.com/products/protraining.html
>
>     Please keep messages on-topic and check the ITK FAQ at:
>     http://www.itk.org/Wiki/ITK_FAQ
>
>     Follow this link to subscribe/unsubscribe:
>     http://www.itk.org/mailman/listinfo/insight-developers
>
>


-- 
Ziv Yaniv, PhD., Research Assistant Professor
Imaging Science and Information Systems (ISIS) Center
Department of Radiology
Georgetown University Medical Center
2115 Wisconsin Avenue, Suite 603
Washington, DC, 20007,

Phone: +1-202-687-7286
Fax: +1-202-784-3479
email: zivy at isis.georgetown.edu
web: http://isiswiki.georgetown.edu/zivy/


More information about the Insight-developers mailing list