运行R的ompr优化代码时出现x,y变量冲突报错的原因是什么
报错触发原因
这个报错是ompr包的内置冲突检查机制触发的:你当前的R全局工作环境中已经存在名为x、y的已定义变量(可能是之前运行其他代码生成的数值、向量、函数等任意类型对象),而你在MIP模型中定义的决策变量名恰好也是x和y,ompr为了避免后续计算中误调用环境变量替代模型变量、引发不易排查的逻辑错误,主动抛出了该提示。
解决方案
- 方案1(最推荐):运行模型前清理冲突的环境变量,执行代码:
rm(x, y)
如果这两个变量的内容需要保留,提前改名备份即可。清理后再运行你给出的完整代码,就能正常得到计算结果:x为11,y为0.25。
- 方案2:修改模型决策变量的命名,换成不会和现有环境变量冲突的名称,比如将
x改为mip_x、y改为mip_y,同步修改目标函数、约束、取解步骤里的变量名即可。 - 方案3(不推荐新手使用):如果你完全确认不会混淆环境变量和模型变量,可以临时关闭ompr的冲突检查,在
solve_model代码行前添加:
options(ompr.skip_conflict_check = TRUE)
内容的提问来源于stack exchange,提问作者Tatanik501
相关产品推荐
相关产品推荐

