Movatterモバイル変換


[0]ホーム

URL:


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

GenconstrNL.java#

/* Copyright 2025, Gurobi Optimization, LLC *//* This example formulates and solves the following simple nonlinear model:     minimize    y1 + y2     subject to  y1 = x2 ^2                 y2 = sin(2.5 * x1) + x2                 y1, y2 free                 -1 <= x1, x2 <= 1*/importcom.gurobi.gurobi.*;publicclassGenconstrNL{publicstaticvoidmain(String[]args){try{// Create environmentGRBEnvenv=newGRBEnv("genconstrnl.log");// Create empty modelGRBModelmodel=newGRBModel(env);// Create variables, only y variables have an objective coefficientGRBVary1=model.addVar(-GRB.INFINITY,GRB.INFINITY,1.0,GRB.CONTINUOUS,"y1");GRBVary2=model.addVar(-GRB.INFINITY,GRB.INFINITY,1.0,GRB.CONTINUOUS,"y2");GRBVarx1=model.addVar(-1.0,1.0,0.0,GRB.CONTINUOUS,"x1");GRBVarx2=model.addVar(-1.0,1.0,0.0,GRB.CONTINUOUS,"x2");// Array representation of first expression tree for x2 ^2intopcode1[]=newint[]{GRB.OPCODE_POW,GRB.OPCODE_VARIABLE,GRB.OPCODE_CONSTANT};doubledata1[]=newdouble[]{-1.0,x2.index(),2.0};intparent1[]=newint[]{-1,0,0};// Add first nonlinear constraint y1 = x2 ^2model.addGenConstrNL(y1,opcode1,data1,parent1,"univariate_constraint");// Array representation of second expression tree for sin(2.5 * x1) + x2intopcode2[]=newint[]{GRB.OPCODE_PLUS,GRB.OPCODE_SIN,GRB.OPCODE_MULTIPLY,GRB.OPCODE_CONSTANT,GRB.OPCODE_VARIABLE,GRB.OPCODE_VARIABLE};doubledata2[]=newdouble[]{-1.0,-1.0,-1.0,2.5,x1.index(),x2.index()};intparent2[]=newint[]{-1,0,1,2,2,0};// Add second nonlinear constraint y2 = sin(2.5*x1) + x2model.addGenConstrNL(y2,opcode2,data2,parent2,"multivariate_constraint");// Optimize modelmodel.optimize();System.out.println(y1.get(GRB.StringAttr.VarName)+" "+y1.get(GRB.DoubleAttr.X));System.out.println(y2.get(GRB.StringAttr.VarName)+" "+y2.get(GRB.DoubleAttr.X));System.out.println(x1.get(GRB.StringAttr.VarName)+" "+x1.get(GRB.DoubleAttr.X));System.out.println(x2.get(GRB.StringAttr.VarName)+" "+x2.get(GRB.DoubleAttr.X));System.out.println("Obj: "+model.get(GRB.DoubleAttr.ObjVal));// 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