问题标签 [scipy-optimize]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
415 浏览

python - 一个和两个变量的 SciPy 优化

我正在编写这个程序,我必须在其中进行大量优化。有些只有 1 个变量,有些只有 2 个。起初我使用 scipy.optimize 库中的盆地跳跃算法,但我认为正常的最小化算法应该可以完成这项工作。跳盆优化或多或少是有效的,但它非常耗时。现在,我正在使用正常的最小化优化,并且我已经想出了如何针对 1 个变量进行优化。代码如下。我在这里使用 COBYLA 方法,因为这似乎是唯一有效的方法。(Nelder-Mead 和 Powell 也可以,但有时他们会返回一个负数 x,这是我无法拥有的。而且由于这两种方法都是不受约束的,所以我不能使用它们)。因此我的第一个问题:

我用于优化 2 个变量的代码与 1 个变量的代码完全相同,但不知何故它给了我错误的结果。这与我使用的方法有关吗?或者这里可能是什么问题?

为了完整起见,下面是我的 calculate_score 函数代码。我可能正在考虑计算这个函数的梯度,以便给定这个梯度,BFGS 或 L-BFGS-B 方法可以工作,但我不太确定如何做到这一点。

简而言之,我想知道的是:

  • 从盆地跳跃切换到最小化是个好主意吗?(我只是觉得盆地跳跃非常慢)
  • 对于这种特定情况,我使用的 COBYLA 方法是最好的吗?
  • 为什么我的 1 个变量的结果是正确的,而我的 2 个变量的结果却不是?
0 投票
1 回答
413 浏览

python - DataFrame 上的 Scipy 最小化优化逐行

错字已修复

我需要为我的时间序列中的每个时间步执行最小化优化。优化根据行中不同列中的值和一系列不等式约束来设置价格。

我的数据框在 48 年的时间序列中具有以下列:

PRICE_crR 和 PRICE_crWS 代表两个不同客户类别的价格,纯粹基于成本回收。优化必须寻求实现成本回收(下面代码中的第一个约束),同时观察几个关键策略约束,这些约束由下面代码中的第二个和第三个约束表示。

这就是我到目前为止所拥有的。

最小化的目标函数

约束

非负约束

一系列初始最佳猜测

优化函数

运行上述脚本时,我收到以下错误消息:

0 投票
1 回答
375 浏览

python - 如何使用 scipy.optimize.fsolve 避免运行时错误

问题

我正在尝试使用 数值求解代数方程的非线性系统scipy.optimize.fsolve

我解决了系统的几个不同参数值(k1, k2, k3如下)。对于某些参数值fsolve可以找到正确的解决方案,而对于其他参数值会出现以下警告

从这些情况下的结果来看,很明显出现了问题,因为h(result)它不是一个零向量。毫无疑问,解决方案确实存在,并且它与找到正确解决方案的情况在性质上没有什么不同。

在这些情况下通常推荐什么?是初始条件的问题吗?


例子

下面我将展示我如何求解方程组的想法:

这有时很好用,但是对于它的某些值k1, k2, k3会引发上述RuntimeWarning讨论并返回错误的结果

0 投票
1 回答
794 浏览

scipy - python中scipy线性规划模块中决策变量的最大数量

python中的scipy线性编程模块(最小化)中的决策变量是否有最大限制?如果是这样,是否可以将决策变量的数量扩展到 10000 个?如果 scipy 仅限于决策变量的数量,是否可以在 python 中安装任何其他软件以便我可以继续?

0 投票
0 回答
49 浏览

python - 最小化:利用每个参数计算时间的不对称性

我有一个(相对标准的)最小化问题,其中我有一组实验数据(xdata,ydata),一个模型y = f(x,参数),我想提取参数。scipy.optimize.curve_fit将是我的首选,但函数结构中有一个技巧可以最小化。它实际上是一个两步计算,其中一些参数的计算速度比其他参数快得多。

带有模型函数和数据的示例代码如下(在真实的东西中,param_aparam_b包括多个参数,如果重要的话)。这里根本没有使用模型的结构:

我想最小化算法可以利用问题的结构,改变param_b非常容易(如果之前调用了相同的模型param_a)。在实际情况中,slow涉及求解 ODE 并需要几分钟,而quicknumpy 数组的加权和需要(至少)四个数量级的时间。

下面是这个想法的一个实现,包括一个比较这两种方法的非平凡拟合问题的测试。事实证明,在大约 50% 的情况下,“改进”版本调用 slow()*more*时间(有时会收敛到更好的拟合,但有时不会);这可能是由于 scipy.optimize 例程和问题的能源格局的相互作用。我怀疑一个可行的解决方案需要比我投入更多的数学思考。

0 投票
1 回答
51 浏览

python - 最小化非线性方程组(指数积分)

一般的:

我正在使用最大熵来查找正整数向量的分布,我可以估计均值和方差,并尝试找到三个方程 a 和 b,

方程:

  1. 积分(exp(a*x^2+bx+c) from (0 , infinity))-1

  2. 积分(x exp(a x^2+bx+c)from (0 , infinity))- 均值

  3. 积分(x^2*exp(a*x^2+bx+c) from (0 , infinity))- mean^2 - var

([0,∞) 之间的积分)

问题:

我正在尝试使用数值求解器,并且我使用了 sympy 的 fsolve 但我想我缺少一些知识。

我的代码:

我的结果不是那么准确,有没有更好的方法来解决它?

  1. 积分(exp(a*x^2+bx+c))-1 = 5.67659292676884

  2. 积分(x exp(a x^2+bx+c))- 均值 = −1.32123173796713

  3. 积分(x^2*exp(a*x^2+bx+c))- 平均^2 - var = −2.20825624606312

谢谢

0 投票
1 回答
455 浏览

python - Numpy数组的最小差异

我有两个相同大小的 3 维 Numpy 数组。他们的条目相似,但不完全相同。我想在所有三个空间维度中移动一个数组,以便两个数组之间的差异最小。

我试图编写一个带参数的函数 - 我喜欢移动数组的长度列表, - 数组 1, - 数组 2。但我不知道如何最小化这个函数,我尝试使用 scipy.optimize.minimize,但失败了:

这给出了有关 roll = np.roll(...) 的错误消息它说“切片索引必须是整数或具有索引方法”。我想,我没有正确使用最小化函数,但不知道如何修复它。

我的目标是最小化函数 img_diff 并获得差异数组的所有条目的最小总和。因此,我想要三个参数 shift[0]、shift[1] 和 shift[2] 用于在 y、x 和 z 方向上移动。

谢谢你的帮助。

0 投票
0 回答
95 浏览

python - 在 Python 中使用两个变量优化非线性函数

我正在尝试优化以下功能:

我试图通过设置边界 [(0,2), (0,2), (1,None)] 和上面定义的约束来使用 scpiy 中的最小化函数,但是该函数没有提供正确的结果,特别是如果我使用 beta 作为约束中的参数。

期望满足第一个和第二个约束,并且 beta (b) 不是恒定的。

0 投票
0 回答
63 浏览

python - 如何正确优化热剖面上的拟合数据?

我试图拟合热剖面的高温和低温状态的数据,但我无法正确拟合根据实验报告,每个级别应该有 3 到 4 个测量点,但我无法管理它,因为总是有一些点可能超出热曲线曲线并破坏一切。我检查了这篇关于 的帖子optimize.curve_fit(),我不确定它是否可以帮助我优化它。如上图所示,每个高或低状态的测量点应该适合每个停留时间,彼此相邻:

图像

有什么建议可以在热剖面的停留时间上正确安装测量点吗?

0 投票
2 回答
83 浏览

python - 代码优化:如何使用 scipy 最小化优化代码?

我正在尝试优化我编写的代码来计算方程组的最小二乘并返回未知数的最佳值:(a1,a2,a3,z1,z2并且pottempzlevels已知的)。

方程组如下(https://imgur.com/LQqeOgA):

方程组

我编写了以下代码,它就像一个魅力,但它不是很有效,你可以看到由于 for 循环的数量,如果我增加 and 的数量hstepastep我的数组变得非常大并且需要很多时间从 计算最小二乘leastsquared

代码本身非常简单但效率低下。我试图使用 实现此代码scipy.optimize.minimize,但我无法运行它。有谁知道如何优化它?也许,scipy.optimize.minimize这将是最简单的方法,但我不确定如何使我的代码适应它。