使用R,使用 lpSolve
和 lpSolveAPI
包进行线性编程非常容易。现在,我希望在满足部分约束的情况下进行线性编程。说,80%的约束都满足。它不能预定义应该满足哪些约束。如何使用R?
这里有一个例子。有100种不同的组织样本,每个样本表达10000~20000个基因。现在,我想选择最多10个样本,目的是覆盖尽可能多的基因。基于 lpSolve
的一种解决方案将100个样本设置为变量,将20000个基因设置为约束。首先,手动过滤基因,然后进行lp
,直到溶液达到10个样本。然而,这是费力的,而不是最优的。
set.seed(123)
t.mt <- matrix(sample(c(0,1),100000,rep=TRUE),nr=1000)
f.obj <- rep(1,100)
f.dir <- rep(">=",1000)
f.rhs <- rep(1,1000)
t.lp <- lp("min",f.obj,t.mt,f.dir,f.rhs,all.int=TRUE,all.bin=TRUE)
t.lp$solution
是否有可能使用R来解决此问题?
谢谢!