lpSolve线性程序选择子集并选择权重

时间:2018-03-08 18:31:14

标签: linear-programming lpsolve

我正在尝试将lp与以下情况放在一起。

我有10个具有5个特征(C1-C5)的物体(O1-O10)。我想找到一组3个具有权重的对象,使得每个特征的总权重为Y.

这样的事情: O1 * C1 + O1 * C2 + ... + O1 * C5 = Y. 。 。 。 O5 * C1 + O5 * C2 + ... + O5 * C5 = Y

只有3个O1-O10大于0。

这可能吗?

1 个答案:

答案 0 :(得分:1)

你需要更精确。我会尝试迈出第一步。我假设我们需要选择每个对象的整数来说x(i)。我们只想要3个不同的对象。即:

 0 <= x(i) <= MAXX * z(i)
 sum(i, z(i)) <= 3
 z(i) in {0,1} (binary variable)
 x(i) integer variable (make continuous if we can choose fractional values)

此处x(i)是所选类型i的对象数量,z(i)=0 or 1表示我们是否可以选择i类型的对象。这使问题不再是连续的LP问题,而是MIP。

条件O1*C1+O1*C2+...+O1*C5 = Y . . . O5*C1+O5*C2+...+O5*C5 = Y看起来很奇怪。我的意思是:

 x(i) * d(i) = z(i)*Y   for all i
 where d(i) = sum(j, c(i,j)) (constant)    

不知道目标是什么。