# Copyright 2025, Gurobi Optimization, LLC## This example formulates and solves the following simple bilinear model:# maximize# x# subject to# x + y + z <= 10# x * y <= 2 (bilinear inequality)# x * z + y * z = 1 (bilinear equality)# x, y, z non-negative (x integral in second version)library(gurobi)library(Matrix)model<-list()# Linear constraint matrixmodel$A<-matrix(c(1,1,1),nrow=1,byrow=T)model$rhs<-c(10.0)model$sense<-c('<')# Variable namesmodel$varnames<-c('x','y','z')# Objective function max 1.0 * xmodel$obj<-c(1,0,0)model$modelsense<-'max'# Bilinear inequality constraint: x * y <= 2qc1<-list()qc1$Qc<-spMatrix(3,3,c(1),c(2),c(1.0))qc1$rhs<-2.0qc1$sense<-c('<')qc1$name<-'bilinear0'# Bilinear equality constraint: x * z + y * z == 1qc2<-list()qc2$Qc<-spMatrix(3,3,c(1,2),c(3,3),c(1.0,1.0))qc2$rhs<-1.0qc2$sense<-c('=')qc2$name<-'bilinear1'model$quadcon<-list(qc1,qc2)# Solve bilinear model, display solution.result<-gurobi(model)print(result$x)# Constrain 'x' to be integral and solve againmodel$vtype<-c('I','C','C')result<-gurobi(model)print(result$x)
Help and Feedback