给定数组a, b, 和c:import numpy as npa = np.array([100, 200, 300])b = np.array([[1, 0, 0], [1, 0, 1], [0, 1, 1], [1, 1, 1]])c = np.array([150, 300, 500, 650])我想进行优化a,以使每个值最小化c_prime.c_prime = c - np.sum(a*b, axis=1)print(c_prime)print(np.abs(c_prime).sum())[ 50 -100 0 50]200手动...通过更改 中的第一个元素a,c_prime开始达到预期的结果。a = np.array([150, 200, 300])c_prime = c - np.sum(a*b, axis=1)print(c_prime)print(np.abs(c_prime).sum())[ 0 -150 0 0]150现在,令人尴尬的是,我的问题是我怎样才能达到预期的结果?我已经试过了scipy.optimize.minimize,但很明显这段代码没有达到目标,而且这个函数在概念上可能完全不正确。def f(x, b, c): return np.abs(c - np.sum(x*b, axis=1)).sum()x0 = aminimize(f, x0, args=(b,c)) fun: 200.0 hess_inv: array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) jac: array([-1., 0., 1.]) message: 'Desired error not necessarily achieved due to precision loss.' nfev: 327 nit: 0 njev: 63 status: 2 success: False x: array([100., 200., 300.])鉴于从手动设置a[0]到150上述的改进结果,为什么这些结果返回非最佳x?
添加回答
举报
0/150
提交
取消