Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.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_Python_Scipy_Mathematical Optimization - Fatal编程技术网

Python 带矩阵约束的scipy.optimize

Python 带矩阵约束的scipy.optimize,python,scipy,mathematical-optimization,Python,Scipy,Mathematical Optimization,关于矩阵约束Ax-b>=0,我如何告诉fmin_cobyla?它不会将其作为向量约束: cons = lambda x: dot(A,x)-b 谢谢。由于约束必须返回一个标量值,您可以这样动态定义标量约束: constraints = [] for i in range(len(A)): def f(x, i = i): return np.dot(A[i],x)-b[i] constraints.append(f) 例如,如果我们稍微修改 屈服 [-0.6

关于矩阵约束
Ax-b>=0
,我如何告诉
fmin_cobyla
?它不会将其作为向量约束:

cons = lambda x: dot(A,x)-b

谢谢。

由于约束必须返回一个标量值,您可以这样动态定义标量约束:

constraints = []
for i in range(len(A)):
    def f(x, i = i):
        return np.dot(A[i],x)-b[i]
    constraints.append(f)
例如,如果我们稍微修改

屈服

[-0.6  0.8]

另外,感谢@seberg指出了前面的一个错误。

由于约束必须返回标量值,您可以这样动态定义标量约束:

constraints = []
for i in range(len(A)):
    def f(x, i = i):
        return np.dot(A[i],x)-b[i]
    constraints.append(f)
例如,如果我们稍微修改

屈服

[-0.6  0.8]

另外,感谢@seberg指出了一个早期的错误。

实际上,文档中说的是
约束函数,它只需要一个函数列表,每个函数只返回一个值

因此,如果您想一次完成这一切,也许只需修改
fmin_cobyla
的纯python代码,您会发现它在函数周围定义了一个包装函数,因此很容易。。。不管怎么说,python代码确实很短,只是围绕着
scipy.optimize.\u cobyal.minimize
的小包装


另一方面,如果要优化的函数与约束一样是线性(或二次)的,那么可能会有更好的解算器。

实际上,文档中说的是
约束函数,它只需要一个函数列表,每个函数只返回一个值

因此,如果您想一次完成这一切,也许只需修改
fmin_cobyla
的纯python代码,您会发现它在函数周围定义了一个包装函数,因此很容易。。。不管怎么说,python代码确实很短,只是围绕着
scipy.optimize.\u cobyal.minimize
的小包装

另一方面,如果要优化的函数与约束一样是线性(或二次)的,那么可能会有更好的解算器