Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 优化时在一个区间内的参数_Python_Algorithm_Optimization_Intervals - Fatal编程技术网

Python 优化时在一个区间内的参数

Python 优化时在一个区间内的参数,python,algorithm,optimization,intervals,Python,Algorithm,Optimization,Intervals,通常我使用Mathematica,但现在我尝试转换到python,所以这个问题可能是一个很小的问题,所以对此我很抱歉 无论如何,python中是否有任何内置函数类似于Mathematica中名为Interval[{min,max}]的函数?链接是: 我想做的是,我有一个函数,我想最小化它,但它是一个约束最小化,我的意思是,函数的参数只允许在某个特定的区间内 对于一个非常简单的例子,假设f(x)是一个带有参数x的函数,我正在寻找x的值,该值使函数最小化,但x被限制在一个区间(最小,最大)。[显然,

通常我使用Mathematica,但现在我尝试转换到python,所以这个问题可能是一个很小的问题,所以对此我很抱歉

无论如何,python中是否有任何内置函数类似于Mathematica中名为Interval[{min,max}]的函数?链接是:

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

对于一个非常简单的例子,假设f(x)是一个带有参数x的函数,我正在寻找x的值,该值使函数最小化,但x被限制在一个区间(最小,最大)。[显然,实际问题不是一维优化,而是多维优化,因此不同的参数可能有不同的间隔。]

因为这是一个优化问题,所以我当然不想从区间随机选取参数


我们将非常感谢您的帮助,谢谢

如果这是一个高度非线性的问题,则需要使用一种算法,如广义简化梯度法(GRG)

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

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

对于此类问题,提供了一些示例,这是一个很好的参考。参考第104页

关于实施:

我不熟悉Python,我用模板和函数指针来构建C++中的求解器库,这样就可以传递函数(用于目标和约束)作为解算器的参数,您将得到您的结果-希望在凸问题的多项式时间内或在初始值合理的情况下

如果Python中存在这样做的能力,那么构建一个通用的GRG解算器应该不难

Python解决方案:


编辑:这是您的问题的python解决方案:

如果您的问题在域中是凸的和连续的,您可以简单地构建一个带有约束的广义梯度下降解算器,即。你的间歇。我不太清楚你是什么意思。实际上,手头的问题是高度非线性的多维问题,我会选择不需要梯度的单纯形极小化法。我只需要限制参数间隔。如何使用单纯形来解决高度非线性问题?请查看@Happy001,我已经在scipy页面中搜索过了,出于某些原因,他们的文档对我来说总是含糊不清:-我不知道这个GRG方法。以前我在Mathematica中使用单纯形法,实际上是Nelder-Mead算法。无论如何,我认为我的问题应该有一个直截了当的答案,为参数定义一个区间(忘记最小化问题)。现在看来一切都很复杂。顺便说一句,谢谢你的链接,我不知道这些方法,所以我会详细查找它们,看看它是否有用。我很惊讶你能用普通单纯形来解决高度非线性的问题(除非问题在区间内近似线性,因此单纯形给出了足够接近的答案)。但是,如果您想使用Nelder-Mead方法,这里有一个Excel中的参考示例,您可以研究并实施: