<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'><div style="text-align: left;"><font size="3">I guess Stefan is right. There is no such thing as vnl_multiple_valued_cost_function, hence, itk::LBFGSBOptimizer and itk::LBFGSOptimizer shouldn't have been classified as single-variant optimisers in ITK and they should be modified for accepting </font><font size="3">itk::MultipleValuedCostFunction.<br><br><br></font><font size="3">>Hi,<br><br>
>The itk/vxl::LBFGS(B)Optimizer implementation IS multivariate. The
'multivariate' label refers to the number of variables (input arguments
of the cost function) over which is optimised. <br><br>
>the optimisaton problem is:<br><br>>min_x f(x)<br><br></font><font size="3">></font><font size="3">
On the site
<a href="http://www.alglib.net/optimization/" eudora="autourl" target="_top" rel="nofollow">http://www.alglib.net/optimization/</a>
a multivariate optimisation method means that dim(x) >1 is
allowed.<br><br></font><font size="3">></font><font size="3">
The LBFGSOptimizer is not suitable for MultipleValuedCostFucnction, as
far as I know, only for SingleValuedCostFunctions.<br><br></font><font size="3">></font><font size="3">
singlevalued means: dim(f) = 1<br></font><font size="3">></font><font size="3">
multiplevalued means: dim(f) > 1<br><br></font><font size="3">></font><font size="3">
The vnl_cost_function indeed inherits from the vnl_unary_function, but
the vnl_unary_function is templated over a vector of doubles, which
contains the input argument x:<br><br></font><font size="3">></font><font size="3">
class vnl_cost_function : public vnl_unary_function<double,
vnl_vector<double> ><br><br></font><font size="3">></font><font size="3">
with kind regards,<br></font><font size="3">></font><font size="3">
stefan<br><br><br></font></div>> <br>> <br>> <br>> Hi Ali,<br>> <br>> <br>> 1) It is not a "problem", it is an "implementation feature". :-)<br>> <br>> <br>> <br>> 2) It is not in ITK, it is in VXL,<br>> <br>> Please look at the implementation in the file:<br>> <br>> Insight/Utilities/vxl/core/vnl/vnl_lbfgs.h<br>> <br>> Where the optimizer takes as input a vnl_cost_function<br>> object, that derives from the vnl_unary_function class.<br>> <br>> <br>> <br>> 3) It will be great to have multi-variate implementations<br>> of these optimizers. If you are motivated to write one,<br>> it will make a great contribution to the Insight Journal.<br>> <br>> <br>> <br>> Regards,<br>> <br>> <br>> Luis<br>> <br>> <br>> <br>> -------------<br>> Ali - wrote:<br>> > Hi,<br>> > <br>> > The VNL wrappers itk::LBFGSBOptimizer and itk::LBFGSOptimizer are <br>> > classified as single-variant optimiser, while being based on the <br>> > quasi-Newton method, they are multi-variant optimisers by nature -- see <br>> > http://www.alglib.net/optimization/ . Is this the ITK wrapper problem or <br>> > a VNL issue?<br>> > <br>> > _______________________________________________<br>> > Insight-users mailing list<br>> > Insight-users@itk.org<br>> > http://www.itk.org/mailman/listinfo/insight-users<br><br /><hr />Do you know a place like the back of your hand? Share local knowledge with <a href='http://www.backofmyhand.com' target='_new'>BackOfMyHand.com</a></body>
</html>