为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用多个数组优化函数?

如何使用多个数组优化函数?

互换的青春 2021-06-27 14:15:32
给定数组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?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 164 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信