r - ompr : 当我向我的模型添加一些约束时出现错误消息
问题描述
向我的 OMPR 模型添加约束时出现错误消息(它像这样正常工作)
n = dim(note_mpg)[1]
nb_joueurs = 18
perf = scale(note_mpg$performance_beta)
cote = note_mpg$cote_alpha
poste = note_mpg$Poste
note_mpg$Buts[is.na(note_mpg$Buts)] <- 0
buts = scale(note_mpg$Buts)
results = MIPModel() %>%
add_variable(z[i], i = 1:n, type = "binary") %>%
set_objective(sum_expr((perf[i] + buts[i]) * z[i], i = 1:n), "max") %>%
add_constraint(sum_expr(z[i], i = 1:n) == nb_joueurs) %>%
# add_constraint(sum_expr( (poste[i] == "G") * z[i], i = 1:n) == 2) %>%
# add_constraint(sum_expr( (poste[i] == "D") * z[i], i = 1:n) == 6) %>%
# add_constraint(sum_expr( (poste[i] == "M") * z[i], i = 1:n) == 6) %>%
# add_constraint(sum_expr( (poste[i] == "A") * z[i], i = 1:n) == 4) %>%
add_constraint(sum_expr(cote[i] * z[i], i = 1:n) <= 500) %>%
solve_model(with_ROI(solver = "glpk")) %>%
get_solution(z[i]) %>%
filter(value > 0)
如果我添加一个/一些约束(我在评论中删除我的#),poste
我会收到消息
Error in check_for_unknown_vars_impl(model, the_ast) :
The expression contains a variable that is not part of the model.
非常感谢 :)
解决方案
感谢@cookesd 的回答,抱歉耽搁了。
终于找到办法了,但是不是很干净……
results= MIPModel() %>%
add_variable(z[i], i = 1:n, type = "binary") %>%
set_objective(sum_expr((perf[i] + buts[i]) * z[i], i = 1:n), "max") %>%
add_constraint(sum_expr(z[i], i = 1:n) == nb_joueurs) %>%
add_constraint(sum_expr(cote[i] * z[i], i = 1:n) <= 500) %>%
add_constraint( sum_expr(z[i], i = 1:n, poste[i] == "G") == as.numeric(input$gardiens)) %>%
add_constraint( sum_expr(z[i], i = 1:n, poste[i] == "D") == as.numeric(input$def)) %>%
add_constraint( sum_expr(z[i], i = 1:n, poste[i] == "M") == as.numeric(input$mil)) %>%
add_constraint( sum_expr(z[i], i = 1:n, poste[i] == "A") == as.numeric(input$att))
contraint3 = as.expression(sum_expr(z[i], i = 1:n, poste[i] == "G"))
contraint4 = as.expression(sum_expr(z[i], i = 1:n, poste[i] == "D"))
contraint5 = as.expression(sum_expr(z[i], i = 1:n, poste[i] == "M"))
contraint6 = as.expression(sum_expr(z[i], i = 1:n, poste[i] == "A"))
results$constraints[[3]]$lhs =contraint3
results$constraints[[4]]$lhs =contraint4
results$constraints[[5]]$lhs =contraint5
results$constraints[[6]]$lhs =contraint6
我手动添加的值results$constraints[[k]]$lhs
对于您的问题,我检查了打印值时一切正常......我不明白这个错误,如果您有任何其他想法,请不要犹豫。
推荐阅读
- javascript - 加载外部 JS 并在同步后立即运行脚本
- sml - 遍历 SML 中的列表
- c# - 使用 texbox 控件插入数字时 ASP.NET 挂起
- javascript - 不知道计数器在javascript中的作用是什么
- javascript - 如何在 Phaser 3 中实现滑动?
- ios - 从 CLPlacemark 获取企业名称
- python - 如何使用 matplotlib 绘制不同长度的熊猫系列?
- php - 无法在 ubuntu 18.04、php 5.6 apache2 中访问 phpmyadmin
- c++ - Issues with the BranchCallbackI in C++ with concert
- python - 格雷斯科特模型