【发布时间】:2021-01-16 20:20:54
【问题描述】:
我有一个优化问题,我试图找到一个需要同时优化两个函数的数组。
在下面的最小示例中,我有两个已知数组 w 和 x 和一个 unknown 数组 y。我将数组 y 初始化为仅包含 1。
然后我指定函数np.sqrt(np.sum((x-np.array)**2) 并想在哪里找到数组y
np.sqrt(np.sum((x-y)**2) 接近5
np.sqrt(np.sum((w-y)**2) 接近8
下面的代码可用于针对单个数组成功优化y,但我想找到同时针对x 和y 优化y 的解决方案,但是我不确定如何指定这两个约束。
y 应该只包含大于 0 的值。
关于如何解决这个问题的任何想法?
w = np.array([6, 3, 1, 0, 2])
x = np.array([3, 4, 5, 6, 7])
y = np.array([1, 1, 1, 1, 1])
def func(x, y):
z = np.sqrt(np.sum((x-y)**2)) - 5
return np.zeros(x.shape[0],) + z
r = opt.root(func, x0=y, method='hybr')
print(r.x)
# array([1.97522498 3.47287981 5.1943792 2.10120135 4.09593969])
print(np.sqrt(np.sum((x-r.x)**2)))
# 5.0
【问题讨论】:
标签: python numpy optimization scipy scipy-optimize