分段。R


# 2023年版权,Gurobi优化狗万app足彩,LLC # #这个例子考虑分离后,凸问题:# # # f (x)最小化- y + g (z) #话题# x + 2 y + 3 z < = 4 # x + y > = 1 # x, y, z < = 1 # # f (u) = exp (- u)和g (u) = 2 ^ 2 - 4 u,所有真正的u。#制定和解决简单的LP模型和分段线性函数近似f和g。然后它通过否定f的近似将模型#转换为MIP,这使#成为一个非凸分段线性函数,并再次求解它。Library (gurobi)模型<- list()模型< -矩阵(c(1、2、3、1 1 0),nrow = 2, byrow = T)模型Obj <- c(0,-1,0)模型Ub <- c(1,1,1)模型RHS <- c(4,1)模型sense <- c('<', '>') #在[0.0,1.0]u <- seq(from=0, to=1, by=0.01) #第一个分段线性函数:f(x) = exp(-x) pwl1 <- list() pwl1Var <- 1 pwl1X <- u pwl1y <- sapply(u, function(x) exp(-x)) #第二个分段线性函数:g(z) = 2z ^2 - 4z pwl2 <- list() pwl2Var <- 3 ppw2X <- u pwl2Y <- sapply(u, function(z) 2 * z * z - 4 * z)模型Pwlobj <- list(pwl1, pwl2) result <- gurobi(模型)print(结果objval)打印(结果x) #对x的分段线性函数求反,使其为非凸模型pwlobj [[1]]Y <- sapply(u, function(x) -exp(-x)) result <- gurobi(model) gu罗比_write(model, " poul .lp") print(result . pobjval)打印(结果x) #清除rm(模型,pwl1, pwl2,结果)