/* 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.*/usingSystem;usingGurobi;classqp_cs{staticvoidMain(){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=x*x+x*y+y*y+y*z+z*z+2*x;model.SetObjective(obj);// Add constraint: x + 2 y + 3 z >= 4model.AddConstr(x+2*y+3*z>=4.0,"c0");// Add constraint: x + y >= 1model.AddConstr(x+y>=1.0,"c1");// Optimize modelmodel.Optimize();Console.WriteLine(x.VarName+" "+x.X);Console.WriteLine(y.VarName+" "+y.X);Console.WriteLine(z.VarName+" "+z.X);Console.WriteLine("Obj: "+model.ObjVal+" "+obj.Value);// Change variable types to integerx.VType=GRB.INTEGER;y.VType=GRB.INTEGER;z.VType=GRB.INTEGER;// Optimize modelmodel.Optimize();Console.WriteLine(x.VarName+" "+x.X);Console.WriteLine(y.VarName+" "+y.X);Console.WriteLine(z.VarName+" "+z.X);Console.WriteLine("Obj: "+model.ObjVal+" "+obj.Value);// Dispose of model and envmodel.Dispose();env.Dispose();}catch(GRBExceptione){Console.WriteLine("Error code: "+e.ErrorCode+". "+e.Message);}}}
Help and Feedback