写入文件: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");