您可以将问题划分为z=0 和z>=0。对于第二个子问题,您可以这样设置和解决问题:
library(lpSolveAPI)
# create object
lprec <- make.lp(0,3)
invisible(lp.control(lprec, sense="max")) # sense defaults to "min"
# add objective and constraints
set.objfn(lprec, obj=c(150,92,41.1), indices=c(1,2,3))
add.constraint(lprec, 1, type="<=", rhs=600, indices=1)
add.constraint(lprec, 1, type=">=", rhs=200, indices=1)
add.constraint(lprec, 1, type="<=", rhs=600, indices=2)
add.constraint(lprec, 1, type=">=", rhs=200, indices=2)
add.constraint(lprec, c(1,1,1), type="<=", rhs=600, indices=c(1,2,3))
add.constraint(lprec, c(1,1), type=">=", rhs=200, indices=c(1,2))
# solve
print(lprec)
solve(lprec)
get.variables(lprec)
请注意,我假设您在问题中指的是0<=y<=600。另请注意,设置“lpSolveAPI默认假设决策变量的非负性,因此假设z>=0。
第一个子问题可以类似地解决。如您所知,在这种情况下z=0,决策变量的数量减少到2。
问题的解决方案是两个子解决方案中最好的。正如@RHertel 已经评论的那样,这是您在x 上尽可能多地投入的解决方案,因此y 和z 为0。