Java Reference
In-Depth Information
if
(!chosen[i] &&w+W[ i ]
<
=wKnapsack)
System . out . println ( i+
" Weight "
+W[ i ]+
" Utility "
+U [ i ] +
"
Gain["
+i+
"]="
+gain [ i ]) ;
}
// Search best gain in the remaining collection of objects
for
(i=0;i
<
n ; i ++)
if
(! chosen [ i ] && gain [ i]
>
g && wKnapsack
−
(w+W[ i ] )
>
=0)
{
g=gain [ i ]; winner=i ;
}
// Can we add this object to the knapsack
if
(winner!=
−
1&&w+W[ winner]
<
wKnapsack)
u+=U[ winner ] ;
w+=W[ winner ] ;
chosen [ winner]=
true
;
nSel++;
System . out . println (
"Selected object "
+winner+
", updating
#weights="
+w+
" #utility="
+u ) ;
}
else break
;
}
}
}
Running the greedy knapsack heuristic on the set of above items, we get the
following output at the console:
Maximum weight of the knapsack:20
0 Weight 3 Utility 5 Gain[0]=1.6666666666666667
1 Weight 5 Utility 3 Gain[1]=0.6
2 Weight 2 Utility 8 Gain[2]=4.0
3 Weight 4 Utility 12 Gain[3]=3.0
4 Weight 7 Utility 5 Gain[4]=0.7142857142857143
5 Weight 3 Utility 7 Gain[5]=2.3333333333333335
6 Weight 2 Utility 9 Gain[6]=4.5
7 Weight 3 Utility 2 Gain[7]=0.6666666666666666
8 Weight 5 Utility 3 Gain[8]=0.6
9 Weight 7 Utility 6 Gain[9]=0.8571428571428571
Selected object 6, updating #weights=2 #utility=9
0 Weight 3 Utility 5 Gain[0]=1.6666666666666667
1 Weight 5 Utility 3 Gain[1]=0.6
2 Weight 2 Utility 8 Gain[2]=4.0
3 Weight 4 Utility 12 Gain[3]=3.0
4 Weight 7 Utility 5 Gain[4]=0.7142857142857143
5 Weight 3 Utility 7 Gain[5]=2.3333333333333335
7 Weight 3 Utility 2 Gain[7]=0.6666666666666666
8 Weight 5 Utility 3 Gain[8]=0.6
9 Weight 7 Utility 6 Gain[9]=0.8571428571428571
Selected object 2, updating #weights=4 #utility=17
0 Weight 3 Utility 5 Gain[0]=1.6666666666666667
1 Weight 5 Utility 3 Gain[1]=0.6
3 Weight 4 Utility 12 Gain[3]=3.0
4 Weight 7 Utility 5 Gain[4]=0.7142857142857143
Search WWH ::
Custom Search