Why is normalised hyper volume (S metric) zero for a rectangle with ref point at the extreme?

240 views Asked by At

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.

1

There are 1 answers

1
pouya aghaeipour On

There could be several things going wrong here.

First of all, try to normalize the points before calculating the hypervolume. This way, your reference points always become (1,1) so it is easier to analyze or visualize the results. Then, if you visualize the two points and the reference point, you will see that they are too close to the boundaries and they basically are not dominating any area... and the results that you are getting from pygmo are accurate.