写入文件:Java中Gurobi GRBModel的约束和变量 我考虑整数线性程序的一些代码,它按预期执行(参见问题的结尾)。现在,我正在寻找一个过程,让我将ILP写入一个文件,以便人类可以读取它,例如,在文件中,它应该读取如下内容: maximize x + y + 2 z c0: x + 2 y + 3 z <= 4 c1: x + y >= 1 x binary y binary z binary 最大化x+y+2 z c0:x+2 y+3 z=1 x二进制 y二进制 z二进制
确切的格式并不重要,我只需要能够阅读它。我怎样才能做到这一点 代码:写入文件:Java中Gurobi GRBModel的约束和变量 我考虑整数线性程序的一些代码,它按预期执行(参见问题的结尾)。现在,我正在寻找一个过程,让我将ILP写入一个文件,以便人类可以读取它,例如,在文件中,它应该读取如下内容: maximize x + y + 2 z c0: x + 2 y + 3 z <= 4 c1: x + y >= 1 x binary y binary z binary 最大化x+y+2 z c0:x+2 y+3 z=1 x二进制 y二进制 z二进制,java,gurobi,Java,Gurobi,确切的格式并不重要,我只需要能够阅读它。我怎样才能做到这一点 代码: import gurobi.*; public class Mip1 { public static void main(String[] args) { try { // Create empty environment, set options, and start GRBEnv env = new GRBEnv(true); env.set("logFile", "mip1.log"); en
import gurobi.*;
public class Mip1 {
public static void main(String[] args) {
try {
// Create empty environment, set options, and start
GRBEnv env = new GRBEnv(true);
env.set("logFile", "mip1.log");
env.start();
// Create empty model
GRBModel model = new GRBModel(env);
// Create variables
GRBVar x = model.addVar(0.0, 1.0, 0.0, GRB.BINARY, "x");
GRBVar y = model.addVar(0.0, 1.0, 0.0, GRB.BINARY, "y");
GRBVar z = model.addVar(0.0, 1.0, 0.0, GRB.BINARY, "z");
// Set objective: maximize x + y + 2 z
GRBLinExpr expr = new GRBLinExpr();
expr.addTerm(1.0, x); expr.addTerm(1.0, y); expr.addTerm(2.0, z);
model.setObjective(expr, GRB.MAXIMIZE);
// Add constraint: x + 2 y + 3 z <= 4
expr = new GRBLinExpr();
expr.addTerm(1.0, x); expr.addTerm(2.0, y); expr.addTerm(3.0, z);
model.addConstr(expr, GRB.LESS_EQUAL, 4.0, "c0");
// Add constraint: x + y >= 1
expr = new GRBLinExpr();
expr.addTerm(1.0, x); expr.addTerm(1.0, y);
model.addConstr(expr, GRB.GREATER_EQUAL, 1.0, "c1");
// Optimize model
model.optimize();
// Dispose of model and environment
model.dispose();
env.dispose();
} catch (GRBException e) {
System.out.println("Error code: " + e.getErrorCode() + ". " +
e.getMessage());
}
}
}
导入gurobi.*;
公共类Mip1{
公共静态void main(字符串[]args){
试一试{
//创建空环境,设置选项,然后启动
GRBEnv env=新GRBEnv(真);
环境集(“日志文件”、“mip1.log”);
env.start();
//创建空模型
GRB模型=新GRB模型(env);
//创建变量
GRBVar x=model.addVar(0.0,1.0,0.0,GRB.BINARY,“x”);
GRBVar y=model.addVar(0.0,1.0,0.0,GRB.BINARY,“y”);
GRBVar z=model.addVar(0.0,1.0,0.0,GRB.BINARY,“z”);
//设定目标:最大化x+y+2 z
GRBLinExpr expr=新GRBLinExpr();
表达式addTerm(1.0,x);表达式addTerm(1.0,y);表达式addTerm(2.0,z);
模型设定目标(表达式、GRB最大化);
//添加约束:x+2 y+3 z=1
expr=新GRBLinExpr();
expr.addTerm(1.0,x);expr.addTerm(1.0,y);
模型addConstr(expr,GRB.GREATER_EQUAL,1.0,“c1”);
//优化模型
model.optimize();
//模型与环境的处理
model.dispose();
环境处置();
}捕获(GRBEException e){
System.out.println(“错误代码:”+e.getErrorCode()+”+
e、 getMessage());
}
}
}
您可以通过将模型写入LP文件来完成此操作。LP文件格式在不同的解算器中没有标准化,但通常它与您描述的格式非常匹配
在gurobijavaapi中,我们可以使用该方法将模型写入文件。例如,如果我们添加model.write(“mip1.lp”)
在调用GRBModel.optimize()
之前,Gurobi直接创建包含以下内容的文件mip1.lp
:
\ LP format - for model browsing. Use MPS format to capture full model detail.
Maximize
x + y + 2 z
Subject To
c0: x + 2 y + 3 z <= 4
c1: x + y >= 1
Bounds
Binaries
x y z
End
GRBModel model = new GRBModel(env, "mip1.lp");