分段。R
# #这个例子考虑了以下可分离凸问题狗万app足彩:# # #最小化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,所有真实的你。#制定和解决简单的LP模型和分段线性函数近似f和g。然后,它通过否定f的近似值将模型#转换为MIP,从而得到一个非凸分段线性函数,并再次求解它。库(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)模型$/ /第一个分段线性函数:f(x) = exp(-x) pwl1 <- list() pwl1; / /第一个分段线性函数:f(x) = exp(-x) pwl1 <- list() pwl1$Var <- 1 pwl1$X <- u pwl1$y <- sapply(u, function(x) exp(-x)) #第二个分段线性函数:g(z) = 2 z^2 - 4 z pwl2 <- list() pwl2$Var <- 3 pwl2$X <- u pwl2$Y <- sapply(u,函数(z) 2 * z * z - 4 * z)模型$Pwlobj <- list(pwl1, pwl2) result <- gurobi(model) print(result$objval)打印(结果$x) #否定x上的分段线性函数,使其为非凸模型$pwlobj [[1]]$Y <- sapply(u, function(x) -exp(-x)) result <- gurobi(model) gurobi_write(model, "pwl.lp") print(result . p)$objval)打印(结果$x) #清除空间rm(模型,pwl1, pwl2,结果)