/* Copyright 2025, Gurobi Optimization, LLC *//* Use parameters that are associated with a model. A MIP is solved for a few seconds with different sets of parameters. The one with the smallest MIP gap is selected, and the optimization is resumed until the optimal solution is found.*/importcom.gurobi.gurobi.*;publicclassParams{publicstaticvoidmain(String[]args){if(args.length<1){System.out.println("Usage: java Params filename");System.exit(1);}try{// Read model and verify that it is a MIPGRBEnvenv=newGRBEnv();GRBModelm=newGRBModel(env,args[0]);if(m.get(GRB.IntAttr.IsMIP)==0){System.out.println("The model is not an integer program");System.exit(1);}// Set a 2 second time limitm.set(GRB.DoubleParam.TimeLimit,2);// Now solve the model with different values of MIPFocusGRBModelbestModel=newGRBModel(m);bestModel.optimize();for(inti=1;i<=3;++i){m.reset();m.set(GRB.IntParam.MIPFocus,i);m.optimize();if(bestModel.get(GRB.DoubleAttr.MIPGap)>m.get(GRB.DoubleAttr.MIPGap)){GRBModelswap=bestModel;bestModel=m;m=swap;}}// Delete the extra model, reset the time limit and// continue to solve the best model to optimalitym.dispose();bestModel.set(GRB.DoubleParam.TimeLimit,GRB.INFINITY);bestModel.optimize();System.out.println("Solved with MIPFocus: "+bestModel.get(GRB.IntParam.MIPFocus));// Dispose of bestModel and envbestModel.dispose();env.dispose();}catch(GRBExceptione){System.out.println("Error code: "+e.getErrorCode()+". "+e.getMessage());}}}
Help and Feedback