支持约束的非线性规划

计算科学 优化 非线性规划 约束优化
2021-12-02 20:12:39

我想解决一个非线性优化问题

argminxRnf(x)
受支撑约束
x=[x1,,xn]T,x1=x2==xi=0,xj=xj+1==xn=0(1<i<j<n)

是否有任何算法或库能够解决此类问题?

3个回答

如果ij是已知的,那么由此产生的约束x1,,xixj,,xn都是线性的,并且易于在非线性规划求解器中实现。

然而,如果ij实际上是决策变量,那么问题应该被表述为混合整数非线性程序(MINLP)并使用 MINLP 求解器求解。

也许我误解了这个问题?

正如 Geoff Oxberry 在他的评论中指出的那样,如果你先验地知道xk=0为了kikj,那么对于这些​​变量没有什么可以优化的,你可以解决(较小的)减少的无约束问题minxRji1f^(x),其中仅将非零变量作为输入。f^

如果由于某种原因这不可行,您可能需要更新您的问题以包含此内容以获得具体建议。但是要解决您评论中的问题:一种可能的方法来解决形式为 for some (convex) set (在你的情况下,)是投影梯度下降(这是一个特殊的实例近端梯度方法),由迭代定义 其中是凸集上的投影(在你的情况,只需设置相应的minxCf(x)CRnC={xRn:xk=0, ki or kj}

xk+1=PC(xkαkf(xk))
PCCxk到零)和是一个合适的步长(例如,Armijo 类型)。如果是平滑的,则此迭代会收敛到一个固定点(如果是凸的,则该点是一个极小值);参见,例如,PH Calamai,JJ Moré:线性约束问题的投影梯度方法,数学规划 39, 93-116αkff

原则上,这就是您正在做的事情,只是您使用共轭梯度而不是梯度作为搜索方向。我没有检查过证明,但我认为只要你有下降方向,你的版本应该仍然可以工作。但是,这是否合理取决于您的定义(这有点像大锤方法......)

即使已知,如果目标函数是非凸的,这也很难。因此,只要目标函数是凸的或凹的,你就能找到这个问题的精确解。如果目标函数是非凸的,你可以通过 DC Programming 找到这个问题的近似解。ij