如何使用 math/lbfgs 中的 lbfgs?

How to use lbfgs from math/lbfgs?

我正在尝试使用函数 lbfgs_jlbfgs_ 但找不到文档。在没有参数的情况下调用此函数的天真方法给出

'"/usr/share/j/9.01/addons/math/lbfgs/lib/liblbfgs.so" lbfgs_  n *x *x *d *d *d *x *d *x *d *d *d *x'&cd

有没有n*x*d的迹象?

github 上有一份似是而非的文档。参数的数量似乎匹配,但顺序似乎不匹配。指定参数的特定顺序同样有帮助。

math/lbfgs 插件刚刚更新。再看一遍,您应该会看到更多评论和带有示例的测试文件夹。

你不需要打电话lbfgs_jlbfgs_;该库还填充了 z 命名空间,因此 lbfgs 足以使用它。您从 lbfgs_jlbfgs_ 中看到的是它的定义,它是一个描述 FFI 调用的字符串,cd 根据该字符串使用您提供的参数调用 FFI 调用。

此类字符串在 https://code.jsoftware.com/wiki/Guides/DLLs/Calling_DLLs

中进行了描述

第一个 n 是 return 值,然后所有其余的都是数组 (*) 整数 (x) 或浮点数 (d).

我完全不熟悉这个库应该做什么,但这里是使用可能无意义参数的函数的成功使用:

   lbfgs 1 1 ; 2 2 ; 3.0 3.0 ; 4.0 4.0 ; 5.0 5.0 ; 6 6 ; 7.0 7.0 ; 8 8 ; 9.0 9.0 ; 10.0 10.0 ; 11.0 1.0 ; 13 13
*************************************************
  N=    1   NUMBER OF CORRECTIONS= 2
       INITIAL VALUES
 F=  4.000E+00   GNORM=  5.000E+00
*************************************************

   I   NFN    FUNC        GNORM       STEPLENGTH

┌─┬───┬───┬────┬───┬───┬───┬───┬───┬───┬─────┬───┬────┐
│0│1 1│2 2│_4 3│4 4│5 5│6 6│3 7│8 8│9 9│10 10│5 1│1 13│
└─┴───┴───┴────┴───┴───┴───┴───┴───┴───┴─────┴───┴────┘