我在R中使用lpsolveAPI并且想要为指定的列和行设置系数(指定约束数和决策变量数的系数) .
但是,虽然我可以添加新列(新决策变量)或设置现有列,但我无法编辑该列,因为该选项将删除该列中的所有先前系数 .
例如,让它成为5个约束和2个决策变量 . 然后:
lps.model
#set coefficients for the first 3 constraint for both variables
for (i in seq(1,2)) set.column(lps.model, i, c(1,2,3), indices = c(1,2,3))
该模型如下所示:
Model name:
C1 C2 C3 C4
Minimize 0 0 0 0
R1 1 1 0 0 free 0
R2 2 2 0 0 free 0
R3 3 3 0 0 free 0
R4 0 0 0 0 free 0
R5 0 0 0 0 free 0
Kind Std Std Std Std
Type Real Real Real Real
Upper Inf Inf Inf Inf
Lower 0 0 0 0
现在我想为第4和第5个约束添加系数 .
for (i in seq(1,2)) set.column(lps.model, i, c(4,5), indices = c(4,5))
代码将重写模型,因为set.column函数将函数参数中未列出的所有系数设置为0 .
Model name:
C1 C2
Minimize 0 0
R1 0 0 free 0
R2 0 0 free 0
R3 0 0 free 0
R4 4 4 free 0
R5 5 5 free 0
Kind Std Std
Type Real Real
Upper Inf Inf
Lower 0 0
我有一个很大的约束和决策变量矩阵,需要为不同的变量集运行相同的循环 . 有没有办法编辑现有的列而不重写它们?