我有背包问题,具有重量容量和所需的物品组合。这里的设置:目标是当权重(w)的总和上限为5000时最大化效用(p),但背包只能包含8个项目,并且对项目有特定要求。背包必须包含以下5个独特项目的组合:
Item_1 = Type_1
Item_2 = Type_2
Item_3 = Type_3
Item_4 = Type_4
Item_5 = Type_5
Item_6 = Type_1 or Type_2
Item_7 = Type_3 or Type_4
Item_8 = Type_1 or Type_2 or Type_3 or Type_4 of Type_5
我一直在R中使用lpSolve
并拥有以下代码:
library(lpSolve)
p <- c(40,50,30,20,10,20,15,20,35,40)
w <-c(100,200,300,400,500,400,300,300,400,200)
cap<-5000
exact.num.elt <- 8
mod<-lp(direction="max",objective.in=p,
const.mat= rbind(w,rep(1, length(p))),const.dir=c("<=","="),const.rhs=c(cap,exact.num.elt),all.bin=TRUE)
which(mod$solution>=0.999)
这不考虑组合要求。有没有办法解释这个?我还希望看到前20种组合进行比较。