迭代优化中的日志记录与输出

计算科学 优化 约束优化 迭代法 设计模式
2021-12-20 19:07:22

我正在编写约束连续优化的迭代算法。增强拉格朗日算法(外部)称为边界约束 L-BFGS-B 算法(内部),后者称为线搜索算法。优化问题有 1 到 10,000 个边界约束变量和 100-200 个非线性约束。

程序输出解向量(如果找到)、拉格朗日乘数和终止原因。此外,输出是每个内部和外部迭代的迭代列表、目标值和可能的拉格朗日乘数。

对于有问题的情况,我想提供诊断信息:警告、数字问题(矩阵病态、NaNs 等)等等。

我正在使用 Scala 来调整 Breeze 库中的一些算法,并添加一个拉格朗日算法。该库中的一些算法到处都有日志语句,而其他算法的日志记录很少。

问题:

  1. 通常会记录哪些信息以及数值优化算法会输出什么信息?
  2. 如何在记录与输出之间做出决定?显然,在输出复杂性和日志记录的“侵入性”之间存在权衡。
  3. 使用包含日志记录的诊断子类创建精益算法类是否有意义?

其他建议,例如设计技巧、参考和开源代码示例,也非常受欢迎。

0个回答
没有发现任何回复~