我想解决以下问题,我想知道“值”列中的哪些数字加起来为“查找”值(129.18)。
我想使用numpy的lingprog函数解决这个问题,我将指定0或1作为乘数,这样解决方案将给出值4.28& 124.90,其余值为0。乘数值只能是0或1(整数)。
问题是我没有数学背景,我认为我不理解http://www.vision.ime.usp.br/~igor/articles/optimization-linprog.html中的示例以及https://docs.scipy.org下的文档
Values Multiplier Product Find: 129.18
4.28 ** 1 4.28
135.81 1 135.81
124.90 ** 1 124.90
293.51 1 293.51
7981.13 1 7981.13
我到目前为止的代码是:
import numpy as np
from scipy.optimize import linprog
from numpy.linalg import solve
A = np.array([[1,1,1,1,1]])
B = np.array([129.18])
c = np.array([4.28, 135.81, 124.9, 293.51, 7981.13])
res = linprog(c,
A_eq=A,
b_eq=B,
bounds=(0, 1)
)
print('Optimal value:', res.fun, '\nX:', res.x)
print(res)
显然这不起作用。我应该如何更改代码以使其符合我的标准?
第一次发布海报,但很久以来stackoverflow的受益者:) - 感谢您对此问题的任何帮助!
干杯,