最小化依赖于两个数组的函数

问题描述

是否可以使用 Scipy 最小化器最小化依赖于两个数组的函数 fun(x,y)

(x 和 y 是两个不同长度的一维数组,例如 x=np.array([1,2,3,1,52,5])y=np.array([4,8,9]))

我正在考虑类似的事情:

minimize(fun,[x,y],method="Powell",tol=1e-3)

这是正确的方法吗?

谢谢。

解决方法

定义一个函数来显示 minimize 提供的参数及其形状:

In [300]: def fun(x):
     ...:     print(x,x.shape)
     ...:     return np.sum(x)**2
     ...: 
     ...: 

使用二维数组调用最小化:

In [301]: minimize(fun,np.arange(6).reshape(2,3))
[0. 1. 2. 3. 4. 5.] (6,)
[1.49011612e-08 1.00000000e+00 2.00000000e+00 3.00000000e+00
 4.00000000e+00 5.00000000e+00] (6,)
[0.         1.00000001 2.         3.         4.         5.        ] (6,)
[0.         1.         2.00000001 3.         4.         5.        ] (6,)
[0.         1.         2.         3.00000001 4.         5.        ] (6,)
[0.         1.         2.         3.         4.00000001 5.        ] (6,)
[0.         1.         2.         3.         4.         5.00000001] (6,)
....

请注意,最初的 x0 (2,3),已经分解为 (6,)。

我想你是从那里开始的。