我想解决以下形式的非线性优化问题
, ,和是常数。这个问题有一个非常具体的结构,我的问题是使用非常通用的非线性优化软件(例如NLopt,Ipopt)是否是数值求解的最佳方法。第二个问题是变量()的数量非常大(大约一百万)。非线性优化的标准算法是否可以处理如此大量的变量?
我想解决以下形式的非线性优化问题
, ,和是常数。这个问题有一个非常具体的结构,我的问题是使用非常通用的非线性优化软件(例如NLopt,Ipopt)是否是数值求解的最佳方法。第二个问题是变量()的数量非常大(大约一百万)。非线性优化的标准算法是否可以处理如此大量的变量?
在有 100 万个变量时,您有点接近 IPOPT 之类的代码(公开发布的版本)可以做的事情。IPOPT 将使用直接方法求解从内点法派生的 KKT 系统(通常,它是使用 Bunch-Parlett之类的对于大规模问题,内存通常是这些算法中的限制资源。我怀疑 NLopt 会更好。内点方法应该适用于大规模问题,而 SQP 算法(例如 NLopt 中的 SLSQP)不应该表现得那么好。Method-of-moving-asymptote 方法已用于拓扑优化,并且应该面向解决大规模问题,但我对这些方法没有太多经验。
更令人担忧的可能是缩放;甚至。这是需要注意的事情,不一定是表演的终结者。
这里的一个重要问题是这是否是一个凸优化问题。
您的目标函数是加权 sum-exp 函数(由于和是固定的,您可以使用日志基本公式的更改将其写为。假设是非负的,你有一个凸。不幸的是,你试图最大化,这是错误的方向。如果有人如果你所有的系数都是负数,那么你会最大化一个凹函数,这是一个很好的例子。如果系数有混合符号,你通常会有一个非凸的目标函数。
已经对最小化凸 log-sum-exp 函数的相关问题进行了研究(注意是目标函数的单调变换),如果您的优化问题确实是凸的,这可能会有所帮助。更简单的是使用投影梯度法。
另一方面,如果你的问题是非凸的,那么你就处于一个受伤的世界。
[我希望你在发布后解决了这个问题。或者说你从那以后就毕业了。:)]
这看起来很像这些问题之一,需要推理而不是明确解决。
对于(这似乎是其中一个约束所暗示的),
因此最小化问题大致等价于
因为这相当于最大化
我不是该主题的专家,但这看起来像是这些线性规划问题之一,我相信它具有有效的计算解决方案。
事实上,这个函数的极值不可能存在于域的内部点,所以只能检查约束的“边界”。也许这也是原始问题的一个属性。
我上面描述的级数展开也很可能不仅是一个近似值,而且是一个最小化函数的界限,在这种情况下,它可以允许获得最小值的上限。
这看起来像平滑/非平滑技术可以在将其投入计算机之前在理论上说一些事情:如果将两个未知数替换为会发生什么?
你能证明其中一些变量必须是或,或者它们必须彼此相等或具有特定比率吗?换句话说:你能通过解决限制为两个变量的子问题来获得条件吗?