我想解决一个非线性优化问题
受支撑约束
是否有任何算法或库能够解决此类问题?
我想解决一个非线性优化问题
是否有任何算法或库能够解决此类问题?
如果和是已知的,那么由此产生的约束和都是线性的,并且易于在非线性规划求解器中实现。
然而,如果和实际上是决策变量,那么问题应该被表述为混合整数非线性程序(MINLP)并使用 MINLP 求解器求解。
也许我误解了这个问题?
正如 Geoff Oxberry 在他的评论中指出的那样,如果你先验地知道为了和,那么对于这些变量没有什么可以优化的,你可以解决(较小的)减少的无约束问题,其中仅将非零变量作为输入。
如果由于某种原因这不可行,您可能需要更新您的问题以包含此内容以获得具体建议。但是要解决您评论中的问题:一种可能的方法来解决形式为 for some (convex) set (在你的情况下,)是投影梯度下降(这是一个特殊的实例近端梯度方法),由迭代定义 其中是凸集上的投影(在你的情况,只需设置相应的
原则上,这就是您正在做的事情,只是您使用共轭梯度而不是梯度作为搜索方向。我没有检查过证明,但我认为只要你有下降方向,你的版本应该仍然可以工作。但是,这是否合理取决于您的定义(这有点像大锤方法......)
即使和已知,如果目标函数是非凸的,这也很难。因此,只要目标函数是凸的或凹的,你就能找到这个问题的精确解。如果目标函数是非凸的,你可以通过 DC Programming 找到这个问题的近似解。