It is motivated by Gianluca Dorini's isParetoSetMember program. The new m-file version is much faster than the C version because of the more elegant algorithm. The efficiency is significantly improved in version 3. By implementing a new sorting scheme and recoding to reduce overhead, the code is even faster than the mex version, paretomember, where sorting is not adopted. However, it puzzles me that the performance of mex code does not affected by sorting. Follow the links bellow to download these two codes for comparison.
A more efficient version available in
Yi Cao (2020). Pareto Set (https://www.mathworks.com/matlabcentral/fileexchange/15181-pareto-set), MATLAB Central File Exchange. Retrieved .
I suppose that this package doesn't work correct. For example, for objectiveMatrix
x= [ 1 0
0 0 ]
I obtain membership as [1 1 0 0]'.
Tried on 2011a 64bit and didn't get corret results (only two points). Seems that default dimensions changed the fix is adding the ',2' for the max direction.
Corrected: line 23 of pretoset.m
Should be ok now.
example : if X=[3 1;3 1;3 1],and membership=paretoset(X)...
Warning: Divide by zero.
In paretoset at 23
The bug has been fixed. It should be avialble for download in a few days. Thanks for pointing out this.
example : if X=[3 1;3 2;3 1],and membership=paretoset(X)...
Warning: Divide by zero
In paretoset at 22
Thanks for pointing out the bug. The bug now has been corrected and performance has been slightly improved (for some problems).
example,if X=[3 1;1 2;2 1],and membership=paretoset(X),then membership
=[1 1 1].elseif X=[1 2;2 1;3 1],then
membership=[1 1 0].
isParetosetMember function can be obtained from http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=15172&objectType=FILE
Why I can't find isParetoSetMember function?
Add the link to paretomember
Version 3 implemented a new sorting scheme to improve speed plus recoding to reduce overhead.
Version 2: a bug corrected with slightly improved performance.