image thumbnail
from Knapsack problem by Pradeep
solved the knapsack problem using the concept of dynamic programming

knapsackori.m
v=[50 40 30 50 30 24 36];
w=[5 4 6 3 2 6 7];
W=20;
n=length(v);
for i=1:n+1;
    for j=1:W+1;
        if(i==1 | j==1)
            V(i,j)=0;
        end
    end
end
for i=2:n+1;
    for j=2:W+1;
        if(w(i-1)>=j)
            V(i,j)=V(i-1,j);
            else
        a=[V(i-1,j) v(i-1)+V(i-1,j-w(i-1))];
        V(i,j)=max(a);
        if(V(i,j)==a(2))
        s(i,j)=1;
        else
            s(i,j)=0;
    end
        end
   
    end
end
K=W+1;

for i=n+1:-1:2
    if(s(i,K)==1)
         p(i-1)=1;
            K=K-w(i-1);
    else
        p(i-1)=0;
    end
end

sol=p;
opt_value=V(n+1,W+1);

Contact us