In Evolutionary Multiobjective Optimization (EMO), an algorithm produces a set of points in the performance space as an estimation of the Pareto front. A quantitive measure is desired to estimate the closeness of the estimated data points to the true Pareto front.
One of such measures is the hypervolume indicator, which gives the hypervolume between the estimated Pareto front (P) and a reference point (R). However, to rigorously calcuate the indicator is time-consuming. This tool uses a Monte Carlo approach to estimate the hypervolume by calculating the percentage of a set of random points in the performance space to be dominated by the Pareto front.
The code was developed in response to a request made by Timo Aittokoski, who used the Pareto Front code developed by the Author.
Sir I have few doubts regarding Hypervolume metric and your code. It will be helpful to me if you clarify these doubts:
1. According to this figure Hypervolume metric value will be higher if we get a better approximation of Pareto Front. But in case performace metric calculation we should get less values for better Pareto front approximations..
2. Since we are using N number of random points as reference so we get different values in each run. The how consider actual values.
3. This code gives Hypervolume metric value =0 if any objective function value is negative in Pareto front. Why?
Md Abu Talhamainuddin Ansary
Department of Mathematics
I I T Kharagpur
i am still waiting the your answer
how we can call this function in algorthim
i mean i have
an pareto fron any example 100 by 10
and my result any example 90 by 10
how we can take the hypervolume a simple please
Thanks a lot for the code!
thank you very much
Thank you, it's perfect!
As I indicated, the code is developed in R2008a. bsxfun was introduced since R2007a. If you use earlier version, you have change these two lines (45 and 49) to some other approaches, such as repmat or, for example, change line 45 to,
and change line 49 to
??? Undefined command/function 'bsxfun'.
Error in ==> hypervolume at 45
fcheck=all(bsxfun(@gt, C, lB),2);