Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.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.basinhoing,目标函数的非数值参数_Python_Numpy_Scipy_Mathematical Optimization - Fatal编程技术网

Python scipy.optimize.basinhoing,目标函数的非数值参数

Python scipy.optimize.basinhoing,目标函数的非数值参数,python,numpy,scipy,mathematical-optimization,Python,Numpy,Scipy,Mathematical Optimization,我正在尝试使用模拟退火/basinhopping来找到语法对象的最小描述长度,并根据该语法找到数据 我自己定义语法对象,以及take_step(这是语法上的一种变异): 问题:我得到一个错误: File "C:\Users\Sefi\Anaconda3\lib\site-packages\scipy\optimize\optimize.py", line 556, in _approx_fprime_helper grad[k] = (f(*((xk + d,) + args)) - f

我正在尝试使用模拟退火/basinhopping来找到语法对象的最小描述长度,并根据该语法找到数据

我自己定义语法对象,以及
take_step
(这是语法上的一种变异):

问题:我得到一个错误:

File "C:\Users\Sefi\Anaconda3\lib\site-packages\scipy\optimize\optimize.py", line 556, in _approx_fprime_helper
    grad[k] = (f(*((xk + d,) + args)) - f0) / d[k]
TypeError: unsupported operand type(s) for +: 'Grammar' and 'float'
如何使算法单独引用take step函数,以便找到目标函数当前值附近的邻居?此处无法定义小步长

也许盆地跳跃无法处理非数值参数?
如果是这样的话,您是否知道Python中的广义模拟退火算法可以做到这一点(我可以自己编写一个,但它的效率远远低于scipy…)

Basinhopping不适合离散优化,因为局部最小化步骤要求目标函数是连续的。如果你想走模拟退火的路线,你也许可以试试这个软件包。A也可能有意义。如果不了解更多关于您试图解决的具体问题的信息,就不可能提出有意义的建议。明白。谢谢你的回答和参考!你所说的在实践中或多或少是正确的。但原则上,只要选择能够处理离散函数的局部极小化子,basinhopping就可以用于离散优化。basinhopping不适用于离散优化,因为局部极小化步骤要求目标函数是连续的。如果你想走模拟退火的路线,你也许可以试试这个软件包。A也可能有意义。如果不了解更多关于您试图解决的具体问题的信息,就不可能提出有意义的建议。明白。谢谢你的回答和参考!你所说的在实践中或多或少是正确的。但原则上,只要选择一个能够处理离散函数的局部极小值,basinhopping就可以用于离散优化。
File "C:\Users\Sefi\Anaconda3\lib\site-packages\scipy\optimize\optimize.py", line 556, in _approx_fprime_helper
    grad[k] = (f(*((xk + d,) + args)) - f0) / d[k]
TypeError: unsupported operand type(s) for +: 'Grammar' and 'float'