我们正在尝试解决下一个线性优化问题: 我们有:
Pij, i=1:3, j=1:30000, Pij are positive
Bi, i=1:3, integer positive
搜索结果是3 x 30000
二进制值Xij
的矩阵,具有以下条件:
约束:
For each j =1:30000, Sum (by index of i=1:3)Xij=1
For each i =1:3, Sum by index of (j=1:30000) Xij≤Bi
目标:优化:
Maximize (Sum (by index of i=1:3) Sum (by index of j=1:30000) Pij *Xij)
决定将此任务简化为线性编程任务。因此,我们为3 x 3*j
约束构建一个具有Bi
维度的矩阵,为j x 3*j
约束构建一个矩阵Xij
维度。然后,两个矩阵应垂直组合作为任务约束 - 接收矩阵为3+j x 3*j
维。对象向量由Pij
构造,但作为向量3*j x 1
构建。 rhs约束是Bi (1 x 3)
和1 (1 x j)
向量之间的组合 - 向量是1 x 3+j
。
它适用于lp或Rglpk_solve_LP。
我用几种组合检查了这个。它适用于j=5000
,但它对j=10000
无效。我们应该将它用于30000
个案例。矩阵变得太大了。
是否有可能以另一种方式解决这个问题?
我的电脑有8GB内存。矩阵的大小为15.6GB。返回的错误是:
错误:无法分配大小为15.6 Gb的矢量
线性编程程序有哪些限制?
它们只来自计算机的RAM和矩阵的大小吗?