L-BFGS-B 的线性约束

计算科学 优化 约束优化 共轭梯度 约束 准牛顿
2021-12-10 08:03:12

我知道 L-BFGS-B 仅支持以下形式的简单框约束:lixiui, 在哪里liui是常数。对于我的具体优化问题,我需要指定一些简单的线性约束形式:

xi1+kxixi+1k在哪里k>0是一个固定常数。本质上,我需要每个变量xi保持在索引处的两个变量之间(并在一定距离内)i1i+1. 是否可以使用 L-BFGS-B 实现这一目标?

可以lu每次迭代后修改约束向量?我尝试过的一个愚蠢的想法(并且似乎有效,尽管我没有对其进行广泛测试)是修改lu使用此规则进行每次迭代后:

li=xi1+k
ui=xi+1k

提前致谢!

编辑:我忘了提到第一个变量(x0) 也受恒定下限和最后一个变量 (xN1) 服从一个恒定的上限:

x0k

xN1kmax

这使得将问题重新定义为未知数是两个差异的基础x变量不可行,因为这两个额外的边界(在当前系统中是实际的框约束)将变成线性约束。

1个回答

解决此问题的一种方法是根据以下方面重新参数化您的问题

x1

zi=xixi1,i=2,,n1.

然后,您可以根据zi通过代入变量

xi=x1+z1++zi,i=2,3,,n.

你的分离约束变成

kzi