java - Gurobi - 构建约束时的问题(Java)
问题描述
我目前在实施约束时遇到问题。我有两组特定的 GRBVars(s1 和 s2)并尝试实现以下约束:
Sum(s1) - Sum(s2) + constantValue <= someValue
我的实现(为便于阅读而修改):
GRBVar[][] vars;
....
GRBLinExpr expr1 = new GRBLinExpr();
GRBLinExpr expr2 = new GRBLinExpr();
for (Edge edge : s1) {
expr1.addTerm(1.0, vars[edge.getVertex1][edge.getVertex2]);
}
for (Edge edge : s2) {
expr2.addTerm(-1.0, vars[edge.getVertex1][edge.getVertex1]);
}
expr1 += expr2 + 50;
最后一行 expr1 += expr2 + 50 被标记为错误,没有任何有用的信息。根据文档(https://www.gurobi.com/documentation/9.0/refman/cs_lex.html)应该是可能的。我错过了什么?有没有更好的方法来实现这个约束?
此致
解决方案
表达式 likeexpr1 += expr2 + 50
仅由支持运算符重载的编程语言支持,如文档中所示:
在支持运算符重载的 .NET 语言中,通常使用重载运算符构建线性表达式。[...]
链接https://www.gurobi.com/documentation/9.0/refman/cs_lex.html引用了.NET 语言的.NET API 详细信息。您想查看用于Java API 详细信息的https://www.gurobi.com/documentation/9.0/refman/java_lex.html。那里有文档,您可以使用添加两个表达式/术语的方法。add*()
推荐阅读
- python - xml到csv python 3
- salesforce - 我想将商机订单项从父商机复制到子商机
- javascript - 在表单中放置表单不起作用
- python - 如何在python中打印偶数键值对
- android - Crashlytics 错误:E/FirebaseCrashlytics:获取设置时出错。与 Firebase 服务器 API 通信需要有效的 Firebase 项目 ID
- python - 构建具有基本事实的非图像分类器
- python - 如何在python中使用request和beautifulsoup在网页中搜索多个预定义字符串
- javascript - Laravel DatePicker 一直推送上个月而不是选择的月份?
- node.js - Twilio 循环赛
- android - Unity IAP:亚马逊不支持购买