Рюкзак динамический в R
Я пытаюсь реализовать код sudo из википедии, чтобы решить проблему ранца, но мой код не работает. Моя функция принимает в качестве входных данных фрейм данных X с 2 столбцами, первый был весами, а второй значения
weights value
10 110
20 150
15 180
30 170
18 130
knapsnack_dyn<-function(X,W){
w<-c(0,X[,1])
v<-c(0,X[,2])
n<-nrow(X)
m<- matrix(0,nrow=n+1,ncol=W+1)
keep<-m
res<-c()
for (i in 1:n+1){
for (j in 0:W+1){
if (w[i]>j ){
m[i,j]<-m[i-1,j]
keep[i,j]<-0
}else{
m[i,j]<-max(m[i-1, j], m[i-1, j-w[i]] + v[i])
keep[i,j]<-1
}
}
}
K=W+1
for (i in n+1:1){
if(keep[i,K]==1){
res[i]<-i
K=K-w[i]
}
}
return(c(res,m[n+1,W+1]))
}