要设置我的示例,假设我已经使用4个变量(A
,B
,C
,D
)执行了简单的线性优化,其中“权重”每次运行的“和”值具有随机分量(意味着每次运行可能具有不同的最优解)。鉴于25次运行的结果,我可以创建一个虚拟矩阵,告诉我每个变量是否包含在每个变量的最优解中。使用以下作为示例:
library(dplyr)
set.seed(123)
Run <- 1:25
A <- sample(c(0,1), 25, T)
B <- sample(c(0,1), 25, T)
C <- sample(c(0,1), 25, T)
D <- sample(c(0,1), 25, T)
df <- data.frame(Run, A, B, C, D)
现在我有了这个结果的虚拟矩阵,我希望能够精确选择10行,这样选定的10行符合A
,B
,{{1 }和C
(会有多个解决方案)。例如,假设我要选择10行,使D
包含5次以上,其他3个变量包含2到7次,是否有可自动执行此操作的库或算法?
我觉得我可以诚实地做另一个A
优化,但我很难想到如何构建它以获得10(或lpsolve
)个结果。优化也不会有目标或方向。我可以再创建两个n
和v1
虚拟变量v2
,然后说rep(1, 25)
必须等于10,目标是最大化v1
(总是10)?当然还有我的其他限制。
感谢您提出的所有建议。