问题标签 [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.minimize(method='trust-constr') 不会在 xtol 条件下终止
我已经建立了一个线性等式约束的优化问题,如下所示
是加权和函数,其objective
系数/权重将被优化以使其最小化。由于我对系数和约束都有界限,因此我使用trust-constr
了scipy.optimize.minimize
.
最小化有效,但我不理解终止标准。根据trust-constr
文档,它应该终止于xtol
算法将在 时终止
tr_radius < xtol
,其中tr_radius
是算法中使用的信任区域的半径。默认值为 1e-8。
但是,verbose
输出显示,终止确实是由barrier_tol
参数触发的,如下面的清单所示
很明显,一旦 ,tr_radius < xtol
被tr_radius
重置为其默认值1
并且barrier param
被减小。一旦barrier param < barrier_tol
(即 1e-8) 和tr_radius < xtol
,优化成功终止。该文件说关于barrier_tol
当存在不等式约束时,算法将仅在障碍参数小于 时终止
barrier_tol
。
这将解释在不等式约束的情况下的行为,但我所有的约束都是定义为字典的等式约束
有足够深入的人trust-constr
向我解释这个吗?
python-3.x - scipy.optmize.minimize:超出迭代限制
我开始将 scipy.optimize.minimize 用于一个工作项目,在该项目中,我尝试在给定每个商店的历史销售数据的情况下优化产品在商店之间的分配。
我从 Excel 表中获取约 300 家商店的数据并将其存储在 Store 类中。使用数据构建直方图并将正态分布拟合到直方图,并将拟合正态分布的均值和标准差保存在各自的 Store 对象中。(到目前为止,这部分没有问题)。
当我试图根据我在商店中分发产品的方式来最大化产品销售的总“概率”时,问题就出现了。
我的程序中还有更多内容,但这是相关部分(缺少的是从 excel 文件中获取数据,以及对每个商店进行正态分布的拟合):
运行我的程序,我收到以下消息:
为什么会这样?
python - LSQ 子问题中的奇异矩阵 C 错误
我目前正在运行一个优化问题,我已将代码简化为以下内容:
1 个 90 个数字列表,范围从 0-100
1 个包含 90 个二进制数的列表
ulitamte 的目标是最大化这些列表的点积,受约束(目前只有 2 个,稍后将添加更多)
目前有两个约束:
二进制检查 - 查看所有数字是 1 还是 0
总检查 - 确保第二个列表总和为 15(因此点积是第一个列表中正好 15 个数字的总和)
运行以下代码时,我看到“LSQ 子问题中的奇异矩阵 C”错误。
我试过通过excel求解器运行同样的问题,它能够找到最佳解决方案。任何帮助将不胜感激
python - 我有一个包含 3 个变量的函数,我想最小化目标函数
我已经导入了所有的包
我在 X0、H 和 res 中有无效的语法错误
python - 如何限制优化值大于 0
假设我需要最小化一个函数,但我想保持上面的结果0
。也就是优化后的值应该是>= 0
。我可以找到有关如何约束参数而不是返回值本身的内容。
python - scipy优化中的自定义收敛标准
我正在使用scipy.optimize
以下方式优化函数:
我的问题是我不想简单地在容差小于一个值时停止(例如,如果在第 n 次迭代停止是|y_n - y_(n-1)|<tol
)。相反,我有一个稍微复杂的函数y_n
and y_(n-1)
,比如说tolFun
,我想在什么时候停止tolFun(y_n, y_(n-1))<tol
。
为了提供更多细节,我的公差函数如下。它划分y
成块,然后检查任何单独的分区是否在容差范围内具有范数差异,如果有,则应该停止最小化。
我的问题与此处的这个问题类似,但不同之处在于,该用户只需要 的当前迭代值y
,而我的自定义容差函数既需要 的当前迭代值,y
也需要先前的值。有谁知道我该怎么做?
python - Scipy 优化最小化总是返回初始猜测(SLSQP)
就像标题解释的那样,我的程序总是返回最初的猜测。
就上下文而言,该计划正试图找到在多个商店中分配某些产品的最佳方式。每家商店都有他们预计在接下来几天内销售的商品的预测 (sales_data)。这个预测不一定是整数,或者大于 1(很少是这样),它是统计意义上的预期。因此,如果一家商店的 sales_data = [0.33, 0.33, 0.33] ,则预计 3 天后,他们将售出 1 件产品。
我想尽量减少出售我分配的单位所需的总时间(我想以最快的速度出售它们),我的限制是我必须分配我可用的单位,并且我不能分配负数的产品到一家商店。我现在可以进行非整数分配。对于我的初始分配,我在所有商店中平均分配我可用的单位。
以下是我遇到问题的代码的较短版本:
优化成功完成,只有 1 次迭代,无论我如何更改参数,它总是返回初始的guess_allocs。
有什么建议吗?
python - ValueError:tnc:来自最小化函数的无效梯度向量
我正在自学 ML,当我尝试在 python 中编写逻辑回归时出现错误。这是来自斯坦福在线课程。我尝试了很多次,包括将 grad 更改为 grad.ravel()/grad.fatten(),但都没有奏效。
输入:
输出:
python - .minimize 功能在运行程序后卡住
我正在创建一个使用图像作为输入的简单神经网络。一切都完成了,除了我必须最小化我的成本函数,但是当我运行 scipy.optimize.minimize 时,它就在那里。我认为它不应该花很长时间,因为我通过的数据量不是很大。我的问题是为什么它不会成功终止以及为什么它不会引发错误。运行程序后它也几乎使用了我所有的 cpu 使用量,但几个小时后它仍然不会终止。
python-3.x - 可以在 scipy.optimize.fmin_cg 的 args 中使用 scipy 稀疏矩阵吗?
我正在使用 scipy.optimize.fmin_cg 最小化一个函数。在“args”中,可以提供完全指定函数所需的附加固定参数,并且它是导数。我想使用一些参数的稀疏表示,scipy.sparse.csr_matrix。我用稀疏矩阵和密集 ndarray 编码了相同的函数。我注意到解决方案的差异。
有谁知道 scipy.optimize.fmin_cg 是否接受“args”中的稀疏矩阵?
谢谢!