MilaNedic / moarchiving

This repository contains the description and corresponding files for the "Computing and updating Hypervolume" project
MIT License
0 stars 0 forks source link

Sampling nondominated points for testing the functions #4

Closed naceee closed 3 months ago

naceee commented 3 months ago

Time complexity of functions is usually dependent on the number of points is the archive. Randomly sampling a large set of points might still produce a low number of nondominated points.

I first (somehow naively) sampled 3D nondominated points like this, which produces nondominated ponts, but the pareto front, probably doesn't represent real world problems:

x = np.random.rand(n_points, 1)
return np.hstack([np.sin(x * np.pi / 2) , np.cos(x * np.pi / 2), x])

newplot(30)

I improved the sampling to be done like this and visually it already looks much better, but I'm still not sure if there is some way in which it is usually done? Also the timing results in this case are very different to the previous case, so I guess it is important to pay some attention to it.

x = np.random.rand(n_points, 1)
y = np.random.rand(n_points, 1)
return np.hstack([(1 - np.sin(x * np.pi / 2)) * y, (1 - np.cos(x * np.pi / 2)) * y, np.power(1 - y, 2)])

newplot(33)

ttusar commented 3 months ago

You can create linear and spherical approximation sets using the algorithms from here (see page 17).

naceee commented 3 months ago

I implemented the two algorithms for 3D, now the point clouds look like this. newplot(34)

newplot(35)

ttusar commented 3 months ago

The distributions seem a bit off from what I remember (especially the spherical one), but for the purpose of your tests they should be just fine.

naceee commented 3 months ago

Yeah I think the spherical was wrong, this one should be better: newplot(36)

naceee commented 3 months ago

Both algorithms are now implemented in 3D and 4D and used for testing the performance, so I am closing this issue.