scipy-optimize-minimize - Scipy Optimize 最小化缺少 1 个必需的位置参数
问题描述
我正在尝试学习如何使用 scipy.optimize.minimize。我将需要它来处理两个变量的函数,每个变量都有大约一千个术语;所以我首先想出了一个简单的例子:
from scipy.optimize import minimize
def test_function(x,y):
return x*(x-1)+y*(y-1)
mins=minimize(test_function,x0=(0,0),bounds=[(0,1),(0,1)])
所以我希望得到 x=0.5, y=0.5 的答案。
不幸的是,我收到以下错误:
TypeError: test_function() missing 1 required positional argument: 'y'
我的测试函数缺少位置参数是什么意思?
解决方案
设计向量必须是可迭代的。您可以在目标函数中将其解包到您的x和y变量中。下面的示例假设x和y是代码片段中的标量,如果它们是向量,则需要获取与design_variables
变量长度相对应的切片。
from scipy.optimize import minimize
def test_function(design_variables):
x = design_variables[0]
y = design_variables[1]
return x*(x-1)*y*(y-1)
mins = minimize(test_function, x0=(0,0), bounds=[(0,1),(0,1)])
print(mins)
优化结果:
fun: 0.0
jac: array([0., 0.])
message: 'Optimization terminated successfully.'
nfev: 4
nit: 1
njev: 1
status: 0
success: True
x: array([0., 0.])
推荐阅读
- javascript - Req.body 在 node.js 中始终为空,即使使用 body-parser
- javascript - 如何将网站的某个区域嵌入到另一个网页中?
- mysql - 在存储过程中运行的 MySQL 查询的输出不正确
- machine-learning - NLP 使用置信值对细节进行分类
- reactjs - 生产中的 Material UI CSS 问题
- javascript - javascript将数组作为值添加到对象
- java - Aws Lambda -“errorMessage”:“没有名为 'entityManagerFactory' 的 bean 可用”
- python - 尝试修复 TypeError:freqRolls() 缺少 1 个必需的位置参数:'sides' python
- performance - 更快的迭代
- angular - ionic3 谷歌地图未显示在导航堆栈中