/* Copyright 2025, Gurobi Optimization, LLC *//* This example formulates and solves the following simple QP model: minimize x^2 + x*y + y^2 + y*z + z^2 + 2 x subject to x + 2 y + 3 z >= 4 x + y >= 1 x, y, z non-negative It solves it once as a continuous model, and once as an integer model.*/importcom.gurobi.gurobi.*;publicclassQp{publicstaticvoidmain(String[]args){try{GRBEnvenv=newGRBEnv("qp.log");GRBModelmodel=newGRBModel(env);// Create variablesGRBVarx=model.addVar(0.0,1.0,0.0,GRB.CONTINUOUS,"x");GRBVary=model.addVar(0.0,1.0,0.0,GRB.CONTINUOUS,"y");GRBVarz=model.addVar(0.0,1.0,0.0,GRB.CONTINUOUS,"z");// Set objectiveGRBQuadExprobj=newGRBQuadExpr();obj.addTerm(1.0,x,x);obj.addTerm(1.0,x,y);obj.addTerm(1.0,y,y);obj.addTerm(1.0,y,z);obj.addTerm(1.0,z,z);obj.addTerm(2.0,x);model.setObjective(obj);// Add constraint: x + 2 y + 3 z >= 4GRBLinExprexpr=newGRBLinExpr();expr.addTerm(1.0,x);expr.addTerm(2.0,y);expr.addTerm(3.0,z);model.addConstr(expr,GRB.GREATER_EQUAL,4.0,"c0");// Add constraint: x + y >= 1expr=newGRBLinExpr();expr.addTerm(1.0,x);expr.addTerm(1.0,y);model.addConstr(expr,GRB.GREATER_EQUAL,1.0,"c1");// Optimize modelmodel.optimize();System.out.println(x.get(GRB.StringAttr.VarName)+" "+x.get(GRB.DoubleAttr.X));System.out.println(y.get(GRB.StringAttr.VarName)+" "+y.get(GRB.DoubleAttr.X));System.out.println(z.get(GRB.StringAttr.VarName)+" "+z.get(GRB.DoubleAttr.X));System.out.println("Obj: "+model.get(GRB.DoubleAttr.ObjVal)+" "+obj.getValue());System.out.println();// Change variable types to integerx.set(GRB.CharAttr.VType,GRB.INTEGER);y.set(GRB.CharAttr.VType,GRB.INTEGER);z.set(GRB.CharAttr.VType,GRB.INTEGER);// Optimize againmodel.optimize();System.out.println(x.get(GRB.StringAttr.VarName)+" "+x.get(GRB.DoubleAttr.X));System.out.println(y.get(GRB.StringAttr.VarName)+" "+y.get(GRB.DoubleAttr.X));System.out.println(z.get(GRB.StringAttr.VarName)+" "+z.get(GRB.DoubleAttr.X));System.out.println("Obj: "+model.get(GRB.DoubleAttr.ObjVal)+" "+obj.getValue());// Dispose of model and environmentmodel.dispose();env.dispose();}catch(GRBExceptione){System.out.println("Error code: "+e.getErrorCode()+". "+e.getMessage());}}}
Help and Feedback