优化时间隔内的参数

时间:2014-07-12 03:51:35

标签: python algorithm optimization intervals

通常我使用Mathematica,但现在尝试转向python,所以这个问题可能是一个微不足道的问题,所以我很抱歉。

无论如何,python中是否有任何内置函数类似于Mathematica中名为 Interval [{min,max}] 的函数?链接是:http://reference.wolfram.com/language/ref/Interval.html

我想要做的是,我有一个函数,我试图最小化它,但它是一个约束最小化,我的意思是,函数的参数只允许在某个特定的时间间隔内。

举一个非常简单的例子,假设 f(x)是一个参数 x 的函数,我正在寻找 x 最小化函数但 x 约束在(min,max)区间内。 [显然,实际问题不是一维而是多维优化,因此不同的参数可能具有不同的间隔。 ]

由于这是一个优化问题,所以当然我不想从一个区间中随机选择参数。

任何帮助都将受到高度赞赏,谢谢!

1 个答案:

答案 0 :(得分:0)

如果这是一个高度非线性的问题,您需要使用诸如广义简化梯度(GRG)方法之类的算法。

广义简约梯度算法(GRG)的思想是求解子问题序列,每个子问题都使用约束的线性逼近。 (Ref

您需要确保满足称为KKT条件的某些条件等,但对于大多数具有合理约束的连续问题,您将能够应用此算法。

This是针对此类问题的一个很好的参考,提供了一些示例。参考。皮克。 104。

关于实施:

虽然我不熟悉Python,但是我使用模板和函数指针在C ++中构建了求解器库,因此您可以将函数(用于目标和约束)作为求解器的参数传递给您得到你的结果 - 希望在凸性问题的多项式时间或初始值合理的情况下。

如果在Python中存在这样做的能力,那么构建广义GRG求解器应该不难。

Python解决方案:

编辑:以下是您问题的python解决方案:Python constrained non-linear optimization