Lpmod.java


/ * 2023年版权,Gurobi优狗万app足彩化,LLC * / / *这个例子从文件读取一个LP模型并解决它。如果模型可以解决,那么它找到最小的积极的变量,其上限设置为零,并解决了模型两个方面:首先是一个先进的开始,那么没有一个先进的(即开始。“从头开始”)。* /进口gurobi。*;公开课Lpmod{公共静态空main (String [] args){如果(args)。长度< 1){system . out。println(“用法:java Lpmod文件名”);system . exit (1);}尝试{/ /读取模型和确定它是一个LP GRBEnv env = new GRBEnv ();GRBModel模型= new GRBModel (env, args [0]);如果(model.get (GRB.IntAttr.IsMIP) ! = 0) {system . out。println(“不是一个线性规划模型”); System.exit(1); } model.optimize(); int status = model.get(GRB.IntAttr.Status); if (status == GRB.Status.INF_OR_UNBD || status == GRB.Status.INFEASIBLE || status == GRB.Status.UNBOUNDED ) { System.out.println("The model cannot be solved because it is " + "infeasible or unbounded"); System.exit(1); } if (status != GRB.Status.OPTIMAL) { System.out.println("Optimization was stopped with status " + status); System.exit(0); } // Find the smallest variable value double minVal = GRB.INFINITY; GRBVar minVar = null; for (GRBVar v : model.getVars()) { double sol = v.get(GRB.DoubleAttr.X); if ((sol > 0.0001) && (sol < minVal) && (v.get(GRB.DoubleAttr.LB) == 0.0)) { minVal = sol; minVar = v; } } System.out.println("\n*** Setting " + minVar.get(GRB.StringAttr.VarName) + " from " + minVal + " to zero ***\n"); minVar.set(GRB.DoubleAttr.UB, 0.0); // Solve from this starting point model.optimize(); // Save iteration & time info double warmCount = model.get(GRB.DoubleAttr.IterCount); double warmTime = model.get(GRB.DoubleAttr.Runtime); // Reset the model and resolve System.out.println("\n*** Resetting and solving " + "without an advanced start ***\n"); model.reset(); model.optimize(); double coldCount = model.get(GRB.DoubleAttr.IterCount); double coldTime = model.get(GRB.DoubleAttr.Runtime); System.out.println("\n*** Warm start: " + warmCount + " iterations, " + warmTime + " seconds"); System.out.println("*** Cold start: " + coldCount + " iterations, " + coldTime + " seconds"); // Dispose of model and environment model.dispose(); env.dispose(); } catch (GRBException e) { System.out.println("Error code: " + e.getErrorCode() + ". " + e.getMessage()); } } }