大规模非线性优化问题

计算科学 非线性方程 非线性规划
2021-12-23 21:27:39

我想解决以下形式的非线性优化问题

min(idxici)0xiaixib

a ,b ,0.95<d<1ci>1是常数。这个问题有一个非常具体的结构,我的问题是使用非常通用的非线性优化软件(例如NLopt,Ipopt)是否是数值求解的最佳方法。第二个问题是变量(xi)的数量非常大(大约一百万)。非线性优化的标准算法是否可以处理如此大量的变量?

4个回答

在有 100 万个变量时,您有点接近 IPOPT 之类的代码(公开发布的版本)可以做的事情。IPOPT 将使用直接方法求解从内点法派生的 KKT 系统(通常,它是使用 Bunch-Parlett之类的LDLT对于大规模问题,内存通常是这些算法中的限制资源。我怀疑 NLopt 会更好。内点方法应该适用于大规模问题,而 SQP 算法(例如 NLopt 中的 SLSQP)不应该表现得那么好。Method-of-moving-asymptote 方法已用于拓扑优化,并且应该面向解决大规模问题,但我对这些方法没有太多经验。

更令人担忧的可能是缩放;甚至这是需要注意的事情,不一定是表演的终结者。(1.05)2001010

这里的一个重要问题是这是否是一个凸优化问题。

您的目标函数是加权 sum-exp 函数(由于是固定的,您可以使用日志基本公式的更改将其写为。假设是非负的,你有一个凸。不幸的是,你试图最大化,这是错误的方向。如果有人如果你所有的系数都是负数,那么你会最大化一个凹函数,这是一个很好的例子。如果系数有混合符号,你通常会有一个非凸的目标函数。dcic^iexp(xi)c^if(x)cici

已经对最小化凸 log-sum-exp 函数的相关问题进行了研究(注意是目标函数的单调变换),如果您的优化问题确实是凸的,这可能会有所帮助。更简单的是使用投影梯度法。 log

另一方面,如果你的问题是非凸的,那么你就处于一个受伤的世界。

[我希望你在发布后解决了这个问题。或者说你从那以后就毕业了。:)]

这看起来很像这些问题之一,需要推理而不是明确解决。

对于(这似乎是其中一个约束所暗示的),d1dx1+x(d1)

因此最小化问题大致等价于

min(ixi(d1)ci)0xiaixib

因为这相当于最大化d1<0

max(ixici)0xiaixib

我不是该主题的专家,但这看起来像是这些线性规划问题之一,我相信它具有有效的计算解决方案。

事实上,这个函数的极值不可能存在于域的内部点,所以只能检查约束的“边界”。也许这也是原始问题的一个属性。

我上面描述的级数展开也很可能不仅是一个近似值,而且是一个最小化函数的界限,在这种情况下,它可以允许获得最小值的上限。

这看起来像平滑/非平滑技术可以在将其投入计算机之前在理论上说一些事情:如果将两个未知数替换为会发生什么?(xi,xj)(xi+ε,xjε)

你能证明其中一些变量必须是,或者它们必须彼此相等或具有特定比率吗?换句话说:你能通过解决限制为两个变量的子问题来获得条件吗?0a