问题标签 [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.
python - 使用 scipy optimize 进行优化控制
我试图解决一个最优控制问题,其中成本函数是 J = x^TQ x + u^TR u 受 x_dot = A x + B u 和 x 和 u 的限制。我知道有一些求解器,如 cvxpy、yalimp 等,可以做到这一点,但我想自己做,以便对编码和将来可能添加的一些其他参数有更好的了解。我附上了我写的代码。它运行但对所有时间步返回相同的值。我已将 x 和 u 堆叠为单个向量。我不知道这是否是正确的方法。我认为可以以更好/有效的方式编写代码。欢迎所有建议,并非常感谢您提前提供任何帮助
灰
python - 正确使用 scipy.optimize.minimize
我有 2 个固定参数(A,B)
和 2 个不固定参数(C,T_o)
用于计算方程中的计算响应值R_computed = A + B*tanh((T-T_o)/C)
。与之比较的实际值“R”需要在两者之间具有最小的可能误差。我已经用一个对平方和求平方根的函数计算了最小误差。
该功能是我试图在 and 中最小化的optimize.minimize
功能。C,T_o
x0
args= (A,B,R,T)
目前我在第 52 行遇到错误: R_comp = A + B*np.tanh((T-T_o)/C)
TypeError:只有长度为 1 的数组可以转换为 Python 标量
这个错误是新的,我之前已经解决了这个问题,但由于我把代码弄得太乱了,所以无法回到原来的位置。最终目标是绘制(T,R)
R_new(T,R_new)
基本上是适合 R 的曲线
任何注释掉的东西都是我尝试过的。
python - 如何使用 SciPy 优化具有多个约束的函数
我有三个具有相同列的 Pandas 数据框,如下所示:
我有第四个数据帧,其中行数对应于我拥有的数据帧数,所以这里我有 3 行,然后是 3 个数据帧。
我要做的是计算第四列,它基本上是 C 列除以 B 列。我希望从 B 列每一行的值列表中选择每行一个值。并且该值应该是用于所有数据帧(意味着如果我为索引“a”选择 0.5,那么该值应用于索引为“a”的所有数据帧。但选择需要满足这些条件
环顾四周似乎是一个优化问题,但我不知道如何使用 SciPy 来解决它。
python - scipy.optimize.minimize 的终止条件
我正在使用 scipy 库来解决优化问题。
我的优化代码:
我正在使用 nelder-mead 单纯形求解器来解决无约束的优化问题。优化器运行并打印
我有几个关于
- 迭代和函数评估是什么意思?
- 默认终止条件是什么?
- 如何更改默认终止条件?
我在文档中找不到太多信息。有人可以帮助我理解这些。谢谢
python - 打印选择的 scipy.optimize.minimize 方法
这是一个简短的问题,但谷歌每次都指向我找不到答案的文档。
我正在使用 scipy.optimize.minimize。它工作得很好,一切都很好。我可以定义要使用的方法,但即使我没有指定方法,它也可以工作。
有什么方法可以得到输出,使用了哪种方法?我知道结果类,但那里没有提到该方法。
这是一个例子:
我可以将 value 方法设置为类似slsqp
or cobyla
,但我想看看程序选择了什么。我怎样才能得到这些信息?
python - scipy.optimize.minimize 在最小化过程中改变 x0 的形状(初始猜测)
背景(可能不相关):我正在使用随机特征进行稀疏内核近似,然后将其用于普通贝叶斯线性回归设置。为了优化两个超参数 [gamma, var_y],我使用了重新参数化技巧并最小化变分上限-E[log(p(y|f(x)))] + KL(q(w)||p(w))
。
问题:在优化过程中,x0 参数(初始猜测)从 [gamma, var_y] 更改为 [[gamma, var_y]] 导致最小化过程失败。这是因为当 x0 被解包时,只有一个值而不是两个。奇怪的是,每次调用最小化时都不会发生这种情况。
当 x0 改变形状时手动重塑 x0 会导致最小化函数中的错误,并且也会解决问题。
代码:
运行最小化:
在每次迭代中打印 x0 显示以下内容:
最后一行显示形状变化的地方。引发以下错误np.exp(x0)
:
更新:收敛图显示 4 次最小化运行的目标函数评估(均因相同问题而失败)。显示超参数值在最小化过程中如何变化的超参数图。
python - scipy.optimize.minimize with BFGS:使用相同的参数向量调用两次目标
我正在使用scipy.optimize.minimize
withmethod='bfgs'
来训练凸目标。
每次我运行最小化时,BFGS 优化器对我的目标函数所做的前两个调用总是具有相同的参数向量。这似乎没有必要,因为它浪费了好几分钟重新计算两次相同的东西。
最小工作示例(目标更简单);
输出;
有谁知道这是否是 scipy 中 BFGS 实现的预期行为?
更新:我已将此作为Scipy 项目的issue #10385提交。
python-3.x - 最小化成本函数时带有 scipy.optimize 的 TypeError
我想通过使用 scipy.optimize 优化 W((1×9)matrix) 中的 9 个变量。
但我得到一个像这样的 TypeError
我将“缺点”更改为
然后它工作得很好,我得到了一个结果
我无法找到一个好的解决方案。
python - 多元最小化的最小示例
所以我正在尝试编写一个 scipy.optimize.minimize 的最小工作示例,而不仅仅是一个示例。
基本上,我的示例适用于一个变量的 lambda 函数,但只要我添加另一个变量,它就会崩溃。
前三行执行没有错误并给出正确的结果,但最后三行给我以下错误
任何人都可以给我一个提示我做错了什么?
python - 如何使用 multible 变量正确使用 scipy 中的最小化?
我有五个变量,我想根据、、、和scipy.optimize.minimize
来找到我正在寻找的解决方案。首先,我导入并定义了初始猜测(基于实验室实验,因此它们应该是有效的)。A
B
C
D
E
minimize
scipy
其次,我定义了组成目标函数的各个函数,命名方便Objective
。我还尝试将F
, G
, H
, and组合I
成一个函数,但没有任何运气,所以我决定暂时保持这种状态。
第三,为了简单起见,我定义了constraint
(ie (F/G)/(H/I)=1
) 以及命名bnds
为初始猜测的边界。+/- 10%
第四也是最后,minimize
为我提供了一个名为sol
.
如果 sol 要由 打印print(sol)
,将出现以下消息。
对我的新手来说,constraint
这似乎是问题所在,但由于缺乏经验,我不确定minimize
。
- 我做错了什么?
- 为什么它没有成功执行?
root_scalar
在这种情况下,按照@fuglede 的建议使用会更好吗?- 是否可以将所有单独的功能包含在一个功能中以避免造成混乱?
请注意D0
和d
不包含在任何功能中,但作为五个自变量之一在事物的宏伟计划中很重要。