Why is normalised hyper volume for this zero?
The Pareto front has two points (415, 110929)
and (78, 258337)
. The reference point is [max(X)+1, max(Y)+1]
The following code in python calculates the normalised hyper volume
X = [415, 78]
Y = [110929, 258337]
df = pd.DataFrame(data=zip(X, Y))
ref_point = [max(X)+1, max(Y)+1]
data = df.to_numpy()
hyp = pg.hypervolume(data)
print(hyp.compute(ref_point))
hv_normlalised = hyp.compute(ref_point) / np.prod(ref_point)
print(hv_normlalised)
My Reasoning: As you can see the normalised hypervolume, in this case should be around 0.125 (This area dominated is a ~one-eighth the rectangle of size (258337-0)*(415-0)
. The dominated area should be around (258337-110929)*(415-78) / 2
giving hyper volume as 0.125
)
But in fact, the hyper volume in this case is 0.0001
!
More details on hyper volume can be found on PyGMO website and in the following paper:
Zitzler, Eckart, and Simon Künzli. "Indicator-based selection in multiobjective search." International conference on parallel problem solving from nature. Springer, Berlin, Heidelberg, 2004.