最小化后找到未使用的变量

问题描述 投票:0回答:1

最小化(Python/scipy)之后,我想知道如何在结果中找到未使用的变量。这是一个简单的示例,其中第三个变量保持不变。除了比较初始值与结果之外,是否有更好的方法来识别此类变量?

from scipy.optimize import minimize

def objective(x):
    return -x[0] - x[1]

x0 = 0, 0, 1.234
res = minimize(objective, x0,
               bounds = ([-10,+10], [-10,+10], [-10,+10]))
print(res.x)

# output: [10.    10.     1.234]
# res.x[2] has been left untouched compared to x0[2]
python scipy minimize
1个回答
0
投票

OptimizeResult
scipy.optimize.minimize
的返回对象)包含雅可比行列式(
jac
)。雅可比行列式中 0 的点对应于对结果没有影响的变量。您可以使用以下行检查它们的位置:

np.where(np.isclose(res.jac, 0.))[0]

在此示例中,它返回

np.array([2])
,因为
x[2]
对优化没有影响。

© www.soinside.com 2019 - 2024. All rights reserved.