python优化 - linprog

时间:2017-08-28 05:58:14

标签: python numpy optimization scipy linear-programming

我想解决以下问题,我想知道“值”列中的哪些数字加起来为“查找”值(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的受益者:) - 感谢您对此问题的任何帮助!

干杯,

0 个答案:

没有答案