- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试深入优化,并且一直在摆弄 lpSolveAPI 包。示例将演示我的简单设置。
数据(每行保存不同的变量):
dput(test.df)
structure(list(objective = c(-0.162235888601422, -0.168597233981057,
-0.165558234725657, -0.156096491294958, -0.15294764940114), constrain1 = c(1.045,
1.259, 1.792, 2.195, 2.802)), .Names = c("objective", "constrain1"
), row.names = c(NA, -5L), class = "data.frame")
library(lpSolveAPI)
创建空模型,包含 5 个变量(test.df 中的行),我想最大化我的目标。
test.lp <- make.lp(0, NROW(test.df))
set.objfn(test.lp, test.df$objective)
lp.control(test.lp,sense='max')
让我们添加一些约束。
add.constraint(test.lp, test.df$constrain1, "=", 2)
add.constraint(test.lp, rep(1, nrow(test.df)), "=", 1)
set.bounds(test.lp, upper = rep(0.5, nrow(test.df)))
set.bounds(test.lp, lower = rep(0, nrow(test.df)))
RowNames <- c("constraint1", "constraint2")
ColNames <- paste0("var", seq(1, nrow(test.df)))
dimnames(test.lp) <- list(RowNames, ColNames)
我想创建一个约束,即在求解中仅使用 x 个变量。因此,如果我将其设置为 2,它将使用其中 2 个变量创建最佳解决方案。我尝试过 set.type = "binary"
但没有成功。
最佳答案
我认为你想添加一个约束,将非零变量 x(i)
的数量限制为 2。计数实际上不能在 LP 中完成,但可以将其表示为 MIP .
标准公式是引入二元变量y(i)
:
x(i) <= y(i)*xup(i) (implication: y(i)=0 => x(i)=0)
sum(i, y(i)) <= 2
0 <= x(i) <= xup(i) (bounds)
y(i) in {0,1} (binary variables)
对于较大的问题,这比解决每种可能的组合要有效得多。虽然 N
中的 k=2
并没有那么糟糕:N 选择 k = N*(N-1)/2
可能的组合。
关于r - 在 lpSolveAPI R 中添加计数约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43737666/
我在 RStudio 中使用 lpsolveAPI。当我输入一个决策变量很少的模型名称时,我可以读取模型中当前约束的打印输出。例如 > lprec Model name: COL
我正在尝试在 R 中构建逻辑回归模型,并且我也在使用“safeBinaryRegression”包。当我输入我的型号代码并按回车键时,我收到以下消息: 分隔符错误(X,Y,目的=“查找”): lpSo
我正在尝试深入优化,并且一直在摆弄 lpSolveAPI 包。示例将演示我的简单设置。 数据(每行保存不同的变量): dput(test.df) structure(list(objectiv
library(lpSolveAPI) lprec1 <- make.lp(0,nrow(df) add.constraint(lprec1, c(1,0,0,0,0,0,0,0,0,0,0,0,
可重现示例: 我描述了一个简单的0/1-Knapsack lpSolveAPI 的问题在 R ,它应该返回 2 个解决方案: library(lpSolveAPI) lp_model= make.lp
我是一名优秀的程序员,十分优秀!