Movatterモバイル変換


[0]ホーム

URL:


ContentsMenuExpandLight modeDark modeAuto light/dark mode
Gurobi Example Tour
Light LogoDark Logo
Gurobi
Back to top

Qcp.java#

/* Copyright 2025, Gurobi Optimization, LLC *//* This example formulates and solves the following simple QCP model:     maximize    x     subject to  x + y + z = 1                 x^2 + y^2 <= z^2 (second-order cone)                 x^2 <= yz        (rotated second-order cone)                 x, y, z non-negative*/importcom.gurobi.gurobi.*;publicclassQcp{publicstaticvoidmain(String[]args){try{GRBEnvenv=newGRBEnv("qcp.log");GRBModelmodel=newGRBModel(env);// Create variablesGRBVarx=model.addVar(0.0,GRB.INFINITY,0.0,GRB.CONTINUOUS,"x");GRBVary=model.addVar(0.0,GRB.INFINITY,0.0,GRB.CONTINUOUS,"y");GRBVarz=model.addVar(0.0,GRB.INFINITY,0.0,GRB.CONTINUOUS,"z");// Set objectiveGRBLinExprobj=newGRBLinExpr();obj.addTerm(1.0,x);model.setObjective(obj,GRB.MAXIMIZE);// Add linear constraint: x + y + z = 1GRBLinExprexpr=newGRBLinExpr();expr.addTerm(1.0,x);expr.addTerm(1.0,y);expr.addTerm(1.0,z);model.addConstr(expr,GRB.EQUAL,1.0,"c0");// Add second-order cone: x^2 + y^2 <= z^2GRBQuadExprqexpr=newGRBQuadExpr();qexpr.addTerm(1.0,x,x);qexpr.addTerm(1.0,y,y);qexpr.addTerm(-1.0,z,z);model.addQConstr(qexpr,GRB.LESS_EQUAL,0.0,"qc0");// Add rotated cone: x^2 <= yzqexpr=newGRBQuadExpr();qexpr.addTerm(1.0,x,x);qexpr.addTerm(-1.0,y,z);model.addQConstr(qexpr,GRB.LESS_EQUAL,0.0,"qc1");// 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();// Dispose of model and environmentmodel.dispose();env.dispose();}catch(GRBExceptione){System.out.println("Error code: "+e.getErrorCode()+". "+e.getMessage());}}}

Help and Feedback


[8]
ページ先頭

©2009-2025 Movatter.jp