Classify a set of nondominated points
Arguments
- pts
A set of non-dominated points. It is assumed that
ncol(pts)
equals the number of objectives ($p$).- direction
Ray direction. If i'th entry is positive, consider the i'th column of the
pts
plus a value greater than on equal zero (minimize objective $i$). If negative, consider the i'th column of thepts
minus a value greater than on equal zero (maximize objective $i$).
Value
The classification is extreme (se
), supported non-extreme (sne
) and unsupported us
nondominated points. Return the ND set with classification columns se
(true/false), sne
(true/false), us
(true/false) and cls
(se
, sne
or us
).
Examples
# \donttest{
pts <- matrix(c(0,0,1, 0,1,0, 1,0,0, 0.5,0.2,0.5, 0.25,0.5,0.25), ncol = 3, byrow = TRUE)
ini3D(argsPlot3d = list(xlim = c(min(pts[,1])-2,max(pts[,1])+2),
ylim = c(min(pts[,2])-2,max(pts[,2])+2),
zlim = c(min(pts[,3])-2,max(pts[,3])+2)))
plotHull3D(pts, addRays = TRUE, argsPolygon3d = list(alpha = 0.5), useRGLBBox = TRUE)
#> Warning: edge not found:1 2
#> Warning: edge not found:1 2
pts <- classifyNDSet(pts[,1:3])
plotPoints3D(pts[pts$se,1:3], argsPlot3d = list(col = "red"))
plotPoints3D(pts[pts$sne,1:3], argsPlot3d = list(col = "black"))
plotPoints3D(pts[pts$us,1:3], argsPlot3d = list(col = "blue"))
plotCones3D(pts[,1:3], rectangle = TRUE, argsPolygon3d = list(alpha = 1))
finalize3D()
3D plot
pts
#> z1 z2 z3 se sne us cls
#> 1 0.00 0.0 1.00 TRUE FALSE FALSE se
#> 2 0.00 1.0 0.00 TRUE FALSE FALSE se
#> 3 1.00 0.0 0.00 TRUE FALSE FALSE se
#> 4 0.50 0.2 0.50 FALSE FALSE TRUE us
#> 5 0.25 0.5 0.25 FALSE TRUE FALSE sne
pts <- matrix(c(0,0,1, 0,1,0, 1,0,0, 0.2,0.1,0.1, 0.1,0.45,0.45), ncol = 3, byrow = TRUE)
di <- -1 # maximize
ini3D(argsPlot3d = list(xlim = c(min(pts[,1])-1,max(pts[,1])+1),
ylim = c(min(pts[,2])-1,max(pts[,2])+1),
zlim = c(min(pts[,3])-1,max(pts[,3])+1)))
plotHull3D(pts, addRays = TRUE, argsPolygon3d = list(alpha = 0.5), direction = di,
addText = "coord")
#> Warning: edge not found:1 2
#> Warning: edge not found:1 2
pts <- classifyNDSet(pts[,1:3], direction = di)
plotPoints3D(pts[pts$se,1:3], argsPlot3d = list(col = "red"))
plotPoints3D(pts[pts$sne,1:3], argsPlot3d = list(col = "black"))
plotPoints3D(pts[pts$us,1:3], argsPlot3d = list(col = "blue"))
plotCones3D(pts[,1:3], rectangle = TRUE, argsPolygon3d = list(alpha = 1), direction = di)
finalize3D()
3D plot
pts
#> z1 z2 z3 se sne us cls
#> 1 0.0 0.00 1.00 TRUE FALSE FALSE se
#> 2 0.0 1.00 0.00 TRUE FALSE FALSE se
#> 3 1.0 0.00 0.00 TRUE FALSE FALSE se
#> 4 0.2 0.10 0.10 FALSE FALSE TRUE us
#> 5 0.1 0.45 0.45 FALSE TRUE FALSE sne
pts <- matrix(c(0,0,1, 0,0,1, 0,1,0, 0.5,0.2,0.5, 1,0,0, 0.5,0.2,0.5, 0.25,0.5,0.25), ncol = 3,
byrow = TRUE)
classifyNDSet(pts)
#> z1 z2 z3 se sne us cls
#> 1 0.00 0.0 1.00 TRUE FALSE FALSE se
#> 2 0.00 0.0 1.00 TRUE FALSE FALSE se
#> 3 0.00 1.0 0.00 TRUE FALSE FALSE se
#> 4 0.50 0.2 0.50 FALSE FALSE TRUE us
#> 5 1.00 0.0 0.00 TRUE FALSE FALSE se
#> 6 0.50 0.2 0.50 FALSE FALSE TRUE us
#> 7 0.25 0.5 0.25 FALSE TRUE FALSE sne
pts <- genNDSet(3,15)[,1:3]
ini3D(argsPlot3d = list(xlim = c(0,max(pts$z1)+2),
ylim = c(0,max(pts$z2)+2),
zlim = c(0,max(pts$z3)+2)))
plotHull3D(pts[, 1:3], addRays = TRUE, argsPolygon3d = list(alpha = 0.5))
#> Warning: edge not found:1 2
#> Warning: edge not found:1 2
pts <- classifyNDSet(pts[,1:3])
plotPoints3D(pts[pts$se,1:3], argsPlot3d = list(col = "red"))
plotPoints3D(pts[pts$sne,1:3], argsPlot3d = list(col = "black"))
plotPoints3D(pts[pts$us,1:3], argsPlot3d = list(col = "blue"))
finalize3D()
3D plot
pts
#> z1 z2 z3 se sne us cls
#> 1 50 2 39 TRUE FALSE FALSE se
#> 2 9 52 24 TRUE FALSE FALSE se
#> 3 50 13 18 TRUE FALSE FALSE se
#> 4 61 18 15 FALSE FALSE TRUE us
#> 5 29 6 53 TRUE FALSE FALSE se
#> 6 43 3 63 FALSE FALSE TRUE us
#> 7 5 39 34 TRUE FALSE FALSE se
#> 8 30 23 15 TRUE FALSE FALSE se
#> 9 19 13 57 TRUE FALSE FALSE se
#> 10 30 76 13 FALSE FALSE TRUE us
#> 11 60 21 12 TRUE FALSE FALSE se
#> 12 38 49 3 TRUE FALSE FALSE se
#> 13 33 41 5 TRUE FALSE FALSE se
#> 14 16 32 81 FALSE FALSE TRUE us
#> 15 33 4 56 TRUE FALSE FALSE se
pts <- genNDSet(3, 15, keepDom = FALSE, argsSphere = list(below = FALSE, factor = 10))[,1:3]
ini3D(argsPlot3d = list(xlim = c(0,max(pts$z1)+2),
ylim = c(0,max(pts$z2)+2),
zlim = c(0,max(pts$z3)+2)))
plotHull3D(pts[, 1:3], addRays = TRUE, argsPolygon3d = list(alpha = 0.5))
#> Warning: edge not found:1 2
#> Warning: edge not found:1 2
pts <- classifyNDSet(pts[,1:3])
plotPoints3D(pts[pts$se,1:3], argsPlot3d = list(col = "red"))
plotPoints3D(pts[pts$sne,1:3], argsPlot3d = list(col = "black"))
plotPoints3D(pts[pts$us,1:3], argsPlot3d = list(col = "blue"))
finalize3D()
3D plot
pts
#> z1 z2 z3 se sne us cls
#> 1 95 37 33 TRUE FALSE FALSE se
#> 2 38 37 96 TRUE FALSE FALSE se
#> 3 23 91 43 TRUE FALSE FALSE se
#> 4 85 17 61 TRUE FALSE FALSE se
#> 5 76 69 12 TRUE FALSE FALSE se
#> 6 36 57 97 FALSE FALSE TRUE us
#> 7 95 54 28 FALSE FALSE TRUE us
#> 8 63 13 81 TRUE FALSE FALSE se
#> 9 16 65 83 TRUE FALSE FALSE se
#> 10 34 92 30 TRUE FALSE FALSE se
#> 11 85 63 18 FALSE FALSE TRUE us
#> 12 49 92 24 FALSE FALSE TRUE us
#> 13 97 33 51 FALSE FALSE TRUE us
#> 14 69 91 29 FALSE FALSE TRUE us
#> 15 95 47 29 FALSE FALSE TRUE us
# }