<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">&gt;Hi,<br><br>
&gt;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>
&gt;the optimisaton problem is:<br><br>&gt;min_x f(x)<br><br></font><font size="3">&gt;</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>&nbsp;
a multivariate optimisation method means that dim(x) &gt;1 is
allowed.<br><br></font><font size="3">&gt;</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">&gt;</font><font size="3">
singlevalued means: dim(f) = 1<br></font><font size="3">&gt;</font><font size="3">
multiplevalued means: dim(f) &gt; 1<br><br></font><font size="3">&gt;</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">&gt;</font><font size="3">
class vnl_cost_function : public vnl_unary_function&lt;double,
vnl_vector&lt;double&gt; &gt;<br><br></font><font size="3">&gt;</font><font size="3">
with kind regards,<br></font><font size="3">&gt;</font><font size="3">
stefan<br><br><br></font></div>&gt; <br>&gt; <br>&gt; <br>&gt; Hi Ali,<br>&gt; <br>&gt; <br>&gt; 1) It is not a "problem", it is an "implementation feature".   :-)<br>&gt; <br>&gt; <br>&gt; <br>&gt; 2) It is not in ITK, it is in VXL,<br>&gt; <br>&gt;     Please look at the implementation in the file:<br>&gt; <br>&gt;          Insight/Utilities/vxl/core/vnl/vnl_lbfgs.h<br>&gt; <br>&gt;     Where the optimizer takes as input a vnl_cost_function<br>&gt;     object, that derives from the vnl_unary_function class.<br>&gt; <br>&gt; <br>&gt; <br>&gt; 3) It will be great to have multi-variate implementations<br>&gt;     of these optimizers. If you are motivated to write one,<br>&gt;     it will make a great contribution to the Insight Journal.<br>&gt; <br>&gt; <br>&gt; <br>&gt;      Regards,<br>&gt; <br>&gt; <br>&gt;         Luis<br>&gt; <br>&gt; <br>&gt; <br>&gt; -------------<br>&gt; Ali - wrote:<br>&gt; &gt; Hi,<br>&gt; &gt; <br>&gt; &gt; The VNL wrappers itk::LBFGSBOptimizer and itk::LBFGSOptimizer are <br>&gt; &gt; classified as single-variant optimiser, while being based on the <br>&gt; &gt; quasi-Newton method, they are multi-variant optimisers by nature -- see <br>&gt; &gt; http://www.alglib.net/optimization/ . Is this the ITK wrapper problem or <br>&gt; &gt; a VNL issue?<br>&gt; &gt; <br>&gt; &gt; _______________________________________________<br>&gt; &gt; Insight-users mailing list<br>&gt; &gt; Insight-users@itk.org<br>&gt; &gt; 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>