Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python scipy.optimize_scalar()给出;UnboundLocalError:局部变量';fu';作业前参考“;_Python_Scipy - Fatal编程技术网

Python scipy.optimize_scalar()给出;UnboundLocalError:局部变量';fu';作业前参考“;

Python scipy.optimize_scalar()给出;UnboundLocalError:局部变量';fu';作业前参考“;,python,scipy,Python,Scipy,我正在解决一些消费者的问题,优化一些选择。我正在尝试使用scipy中的optimize.minimize_scalar()函数,但出现错误: Traceback (most recent call last): File "/Users/User/Documents/GitHub/dynamic_programming/model_our_paper.py", line 238, in <module> sol_C, sol_V = model.solve() Fil

我正在解决一些消费者的问题,优化一些选择。我正在尝试使用scipy中的optimize.minimize_scalar()函数,但出现错误:

Traceback (most recent call last):
  File "/Users/User/Documents/GitHub/dynamic_programming/model_our_paper.py", line 238, in <module>
    sol_C, sol_V = model.solve()
  File "/Users/User/Documents/GitHub/dynamic_programming/model_our_paper.py", line 69, in solve
    obj_func, bounds=[0, k], method='bounded'
  File "/Users/User/opt/anaconda3/lib/python3.7/site-packages/scipy/optimize/_minimize.py", line 790, in minimize_scalar
    return _minimize_scalar_bounded(fun, bounds, args, **options)
  File "/Users/User/opt/anaconda3/lib/python3.7/site-packages/scipy/optimize/optimize.py", line 1880, in _minimize_scalar_bounded
    if np.isnan(xf) or np.isnan(fx) or np.isnan(fu):
UnboundLocalError: local variable 'fu' referenced before assignment
我尝试了以下方法,效果很好:

from scipy import optimize

f = lambda x: (x - 2)*x*(x - 1)**2
k = 10
res = optimize.minimize_scalar(f, bounds=[0, k], method='bounded')
print(res.x)

我使用的是更新版MacOS的Macbook。尝试更新Scipy,并重新安装了我从Anaconda获得的python版本。

感谢@rpoleski和@WarrenWeckesser帮助我解决了这个问题。这似乎是边界相等时发生的错误,事实就是如此。这个bug似乎有更新,但它似乎仍在开发中

所以我的工作就是在上限上加一点。有趣的是,这不起作用:

result = optimize.minimize_scalar(
                        obj_func, bounds=[0, k+1.0e-5], method='bounded'
                    )
但是这个起作用了

result = optimize.minimize_scalar(
                        obj_func, bounds=[0, k+1.0e-4], method='bounded'
                    )

我建议:1)打印
t,L,k_I,k
,看看哪些有效,哪些产生了问题;2) 尝试扩展5行代码,使其产生错误;3) 打印所有
V_guess
值以查看问题何时发生。@rpoleski这是一些很好的建议!我会的!WarrenWeckesser啊,好吧,是的,因为当我试图看它时,它似乎与函数本身有关。我会检查是否有可能下载开发版本?
result = optimize.minimize_scalar(
                        obj_func, bounds=[0, k+1.0e-4], method='bounded'
                    )