问题标签 [scipy-optimize-minimize]

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 回答
655 浏览

python - 如何加速跳盆全局优化

我正在开发一个应该执行大约 6750 次优化的程序。现在,问题是一项优化的持续时间约为 3 分钟。乍一看这似乎并不多,但如果我必须执行 6750 次,我将等待 2 周......显然这不是我想要的,因此这是我如何提高速度的问题跳盆全局优化算法。我有一种感觉,我在这里忘记了一些东西,比如另一种方法或一些可能对我有帮助的参数。只是我想不通是什么...

简而言之,我有两个问题。一项优化可能需要长达 3 分钟才能收敛,这是否正常?我将如何加快优化速度?

下面的一段代码显示了我目前的工作方式。第一种方式进行了 1750 次优化,第二种方式进行了 5000 次优化。

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 投票
0 回答
49 浏览

python - Sci-Py 优化不考虑给定界限的最小化函数解决方案

作为一个简单的 Web 开发人员 :) 在使用 SciPy Optimize 最小化功能时,我无法找出更多关注数据科学的问题。给定一组界限和一系列约束,我试图在这种情况下找到 8 种成分的值(谁的总数必须等于 100)。

约束规定了整体常量营养素值的最小值/最大值,例如。必须是至少 40% 的固体,或者必须具有等于 13.0 等的 rs 值(相对甜度)。

我已经为这些成分中的每一种设置了我的约束(我希望是正确的)和一系列界限(其中一些可以在 0 到 100 之间),但其他成分的上限和下限相同,即。固定的?。在提供的答案中,我很困惑,因为我成功运行了优化,但某些成分的值不在设置的范围内。

到目前为止,请参见下面的代码。非常感谢您的帮助!

0 投票
0 回答
66 浏览

python - 如何为信号处理进行最小化卡方?

我正试图围绕scipy.optimize.minimize. 我一遍又一遍地阅读文档并用谷歌搜索,但我根本不明白如何做到这一点。希望有人能指出我正确的方向:

我有一个信号numpy array(我想我需要做一些最小化的事情

(基线调整 + 幅度因子 * 模板阵列 - 信号阵列)**2

我想使用baselineadjust和amplitudefactor随后修改信号,减去修改后的模板,即

新信号 = 基线调整 + 幅度因子 * 模板阵列 - 信号阵列

这种操作的目的是有效地从实际信号中去除模板信号,留下剩余的信号/噪声。

不确定这是否有意义并且很乐意详细说明。

0 投票
1 回答
462 浏览

python - 如何使用分类变量进行 scipy 优化

考虑以下问题:

我想在空间上优化这个功能

  • x[0] \in {0,1}
  • x[1] \in [0,1]

有没有办法指定 x[0] 不应该是一个真实的值(即行上的一个值[0,1]),而只能是 0 或 1?

我目前的做法是执行 N 次优化,每个 x[0] 选项一个。问题是,如果有多个分类变量,这会迅速爆发。

0 投票
0 回答
113 浏览

python - 使用带有熊猫数据框参数的 scipy 进行优化

我正在尝试优化一个功能。但是这个函数需要一个 pandas 数据框作为参数。所以当我运行代码时,我得到了这个错误:

TypeError: 'DataFrame' 对象是可变的,因此它们不能被散列

我的评价函数:

价格是一个熊猫数据框。

我该如何优化呢?还有一个问题是我的优化函数也需要传入初始猜测数组。那么当我设置 args 参数时,我该如何解释呢?

0 投票
1 回答
390 浏览

optimization - SLSQP 优化不收敛到唯一的解决方案

我正在尝试简单的实验来学习 scipy 的 SLSQP 优化器。

我采用了以下功能:

这是雅可比的:

它的界限为:

一个简单的约束——x[0]+2*x[1]<=1:

现在我尝试初始猜测 x0=[.1,0.01]

当我运行它时,我得到的解决方案是:x[0]=1,x[1]=0 and obj=-1

但是当我以 x0=[0.001,0.01] 的初始猜测开始时,我得到的解决方案是:x[0]=0,x[1]=0.5 和 obj=0.25

为什么在后面的运行中没有给出最佳解决方案?它是如何工作的?

0 投票
0 回答
157 浏览

python - Python:python 中的约束优化 - 最快/有效的方式?

我在 python 中有一个简单的优化问题,我需要经常重新运行(超过 10,000 次)。

大多数计算可以使用 numpy 完成,并且 n 维数组非常有效,但是,当涉及到优化时,我迷失了方向,因为我必须切换到 scipy.optimize.minimize。

有没有一种方法可以立即运行优化?

目前我正在遍历每一行 - 请参见下面的代码:

有没有更优雅、更有效的方法而不是循环遍历?

PS:我曾尝试使用“Pool”,但这“只是”一半的时间 - 循环仍然存在同样的问题。

0 投票
2 回答
542 浏览

optimization - 使用 scipy 优化求解具有逐元素约束的参数矩阵

我有一个相对简单的优化问题,但不是特别精通 scipy,无法弄清楚如何应用必要的约束。我的目标函数是最小化 10 元素向量yx之间的绝对距离,其中x是 10x3 参数矩阵p的加权行和

我需要将以下约束添加到参数矩阵p

  1. p的每个元素,但是 >=0 和 <=1
  2. p的每一列之和必须为 1
  3. p的每一行之和不得超过1

我试图根据其他 SO 问题来实施约束,尽管我承认我并不完全理解它,也不完全理解它产生的错误。

运行此代码后,我收到以下错误消息:

AxisError:轴 1 超出维度 1 数组的范围

任何帮助深表感谢。