gpt4 book ai didi

r - 如何将 lp 对象写入 lp 文件?

转载 作者:行者123 更新时间:2023-12-04 19:06:21 28 4
gpt4 key购买 nike

我一直在使用 lpSolve 和 lpSolveAPI。我构建了我的约束矩阵、目标函数等并提供给 lp 函数,这工作得很好。我想使用 write.lp 将问题保存为 lp 文件,但遇到了问题。我不断收到错误消息,告诉我该对象不是 lp 对象。有任何想法吗?

> x1 = lp(direction = "min", cost, A , ">=",r,,3:13, , , ,FALSE)
> class(x1)
[1] "lp"
>write.lp(x1, filename, type = "lp",use.names = c(TRUE, TRUE))

Error in write.lp(x1, filename, type = "lp", use.names = c(TRUE, TRUE)) :
the lp argument does not appear to be a valid linear program record

最佳答案

我认为您不能在这两个包之间混合使用( lpSolveAPI 不导入或依赖于 lpSolve )。考虑 lpSolve 中的简单 LP :

library(lpSolve)
costs <- c(1, 2)
mat <- diag(2)
dirs <- rep(">=", 2)
rhs <- c(1, 1)
x1 = lp("min", costs, mat, dirs, rhs)
x1
# Success: the objective function is 3

基于 project websitelpSolveAPI ,你用类似的东西做同样的事情:
library(lpSolveAPI)
x2 = make.lp(0, ncol(mat))
set.objfn(x2, costs)
for (idx in 1:nrow(mat)) {
add.constraint(x2, mat[idx,], dirs[idx], rhs[idx])
}

现在,我们可以求解并观察解:
x2
# Model name:
# C1 C2
# Minimize 1 2
# R1 1 0 >= 1
# R2 0 1 >= 1
# Kind Std Std
# Type Real Real
# Upper Inf Inf
# Lower 0 0
solve(x2)
# [1] 0
get.objective(x2)
# [1] 3
get.variables(x2)
# [1] 1 1

回到这个问题,我们现在可以将它写到一个文件中:
write.lp(x2, "myfile.lp")

这是文件的内容:
/* Objective function */
min: +C1 +2 C2;

/* Constraints */
R1: +C1 >= 1;
R2: +C2 >= 1;

关于r - 如何将 lp 对象写入 lp 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23279581/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com