我是R中LP建模的新手。我正在使用lpSolveAPI。当我尝试一个带有两个决策变量的小例子并打印模型时,它会打印出完整的模型。
{
"_id": ObjectId("55bf803b69702d0603000000"),
"email": "sample@gmail.com",
"encrypted_password": "5a2U.62pm6.fsdfdsfdsvNrf.akZ4la45ixpgqB20n6uu",
"sign_in_count": 4,
"provider": "facebook",
"uid": "113569521332134112514",
"reset_password_token": null,
"reset_password_sent_at": null,
}
{
"_id": ObjectId("55c157a5506f638652000000"),
"email": "sample@gmail.com",
"encrypted_password": "$sdfgg,so51lkpe7P5DDKwz3hTrqFE7MsfRw0lEa",
"sign_in_count": 1,
"provider": "facebook",
"uid": "10000014141261376741",
}
但是当我尝试使用25个决策变量的模型并添加一些约束后,如果我尝试打印模型,那么它只是说:
library(lpSolveAPI)
lprec <- make.lp(nrow=0,ncol=2,verbose="full")
set.objfn(lprec,c(6,5))
lp.control(lprec,sense="max")
add.constraint(lprec,c(1,1),"<=",5)
add.constraint(lprec,c(3,2),"<=",12)
set.bounds(lprec,lower=c(0,0),columns = c(1,2))
RowNames <- c("A","B")
ColNames <- c("R1","R2")
dimnames(lprec) <- list(RowNames, ColNames)
print(lprec)
# Model name:
# R1 R2
#Maximize 6 5
#A 1 1 <= 5
#B 3 2 <= 12
#Kind Std Std
#Type Real Real
#Upper Inf Inf
#Lower 0 0
请建议如何展示更大型号。
答案 0 :(得分:2)
使用write.lp
打印更大的LP。
write.lp(lprec, filename="test.lp")
将生成一个文本文件,您可以使用任何文本编辑器进行检查。
答案 1 :(得分:0)
我可以用一个简单的LP重现这个:
library(lpSolveAPI)
lprec <- make.lp(nrow=0,ncol=25,verbose="full")
add.constraint(lprec, rep(1, 25), "<=", 1)
add.constraint(lprec, c(1, rep(0, 24)), "<=", 5)
print(lprec)
# Model name:
# a linear program with 25 decision variables and 2 constraints
从?print.lpExtPtr
开始,打印函数的所有其他参数似乎都会被忽略:
用法
##类的方法&#39; lpExtPtr&#39; print(x,...)
参数
x lpSolve线性程序模型对象。
...忽略其他参数。
因此,您最好的选择可能是提取各条信息并输出。例如:
# Rows and columns
nr <- dim(lprec)[1]
nc <- dim(lprec)[2]
# Constraint matrix
sapply(1:(dim(lprec)[2]), function(x) {
ret <- rep(0, nr)
c <- get.column(lprec, x)
ret[c$nzrow] <- c$column
ret
})
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19]
# [1,] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
# [2,] 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
# [,20] [,21] [,22] [,23] [,24] [,25]
# [1,] 1 1 1 1 1 1
# [2,] 0 0 0 0 0 0
# Constraint directions
get.constr.type(lprec)
# [1] "<=" "<="
# Right-hand sides
get.constr.value(lprec)
# [1] 1 5