File Exchange

image thumbnail

Hypervolume Indicator

version 1.0 (1.63 KB) by

A tool to estimate the hypervolume indicator

4.57143
7 Ratings

19 Downloads

Updated

View License

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.

Comments and Ratings (10)

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?
Thanking you
Md Abu Talhamainuddin Ansary
Department of Mathematics
I I T Kharagpur
Kharapur, India

ozgur

ozgur (view profile)

i am still waiting the your answer

ozgur

ozgur (view profile)

hello

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

jamosquera

Thanks a lot for the code!

ilpazzo

Thank you!

Ninh Duong

thank you very much

Matteo

Matteo (view profile)

Thank you, it's perfect!

V. Poor

Yi Cao

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,

fcheck=all(C>lB(ones(N,1),:),2);

and change line 49 to

f=all(C(fcheck,:)>P(k(ones(sum(fcheck),1)),:),2);

HTH.

liudaohai liudaohai

??? Undefined command/function 'bsxfun'.

Error in ==> hypervolume at 45
fcheck=all(bsxfun(@gt, C, lB),2);

MATLAB Release
MATLAB 7.6 (R2008a)
Acknowledgements

Inspired: Hypervolume approximation

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Win prizes and improve your MATLAB skills

Play today