A bug in IBEA has been fixed (thanks for Dimo Brockhoff for reporting it)
The calcHypervolumeIndicator() method contains this piece of code:
calcHypervolumeIndicator()
{ if (a < b) { volume = calcHypervolumeIndicator(p_ind_a, null, d - 1, maximumValues, minimumValues) * (b - a) / r; volume += calcHypervolumeIndicator(p_ind_a, p_ind_b, d - 1, maximumValues, minimumValues) * (max - b) / r; } else { volume = calcHypervolumeIndicator(p_ind_a, p_ind_b, d - 1, maximumValues, minimumValues) * (max - b) / r; } }
The bug is in the last sentence (the b should be a). The correct code then is:
b
a
{ if (a < b) { volume = calcHypervolumeIndicator(p_ind_a, null, d - 1, maximumValues, minimumValues) * (b - a) / r; volume += calcHypervolumeIndicator(p_ind_a, p_ind_b, d - 1, maximumValues, minimumValues) * (max - b) / r; } else { volume = calcHypervolumeIndicator(p_ind_a, p_ind_b, d - 1, maximumValues, minimumValues) * (max - a) / r; } }
Log in to post a comment.
The
calcHypervolumeIndicator()method contains this piece of code:The bug is in the last sentence (the
bshould bea). The correct code then is: