r - 如何合并观察的极值点并仅选择主导单位?
问题描述
我需要建立一个算法,它将:
对于 2 个变量的 116 个现有观测值x1
和x2
(单独绘制:一个点)
- 通过合并 2 个现有观测值的极值点来创建新观测值(例如:观测值 117 将有 2 个极值点,(
x1_115
,x2_115
) 和 (x1_30
,x2_30
))。对所有组合执行此操作。如果,对于一个组合,一对支配另一个:x1_a
<x1_b
ANDx2_a
<x2_b
,只有 selecta
。 - 对于新创建的 116+n 个新变量集,按照与上述相同的逻辑删除支配对。
- 继续,直到我们无法创建新的非支配对。
我试图通过为每个操作创建独立的函数来解决这个问题。到目前为止,我已经创建了合并极值点的 ConvexUnion 函数(只是 2 个观测值的并集),但它还没有考虑到优势。
ConvexUnion <- function(a,b){
output = NULL
for (i in 1:ncol(a)) {
u = unique(rbind(a[,i],b[,i]), incomparables = FALSE)
output = cbind(output, u)
}
output #the extreme points of the newly created pair
}
a = matrix(c(50,70), ncol = 2)
b = matrix(c(60,85), ncol = 2)
v = ConvexUnion(a,b)
TRAFO LABOR DELLV CLIENTS
1 49 15023 180119 11828
2 54 3118 212988 13465
3 31 6016 81597 4787
4 39 8909 127263 10291
5 9 1789 30095 2205
6 59 8327 190405 12045
7 95 11985 288146 16379
8 54 11309 208009 12252
9 13 3844 53631 4426
10 148 26348 459371 39831
11 17 3968 48798 3210
12 157 20131 366409 27050
13 18 4614 60366 4673
14 17 5941 49042 3950
15 77 6449 226815 12584
在这里,新对的结果,即所谓的 a 和 b 的凸并集,将是 (50,70),因为 a 支配 b(两者x1
都x2
更小)。
我该如何解决这个问题?
解决方案
推荐阅读
- python - Django:UserCreationForm 未显示
- python - Python - sklearn.MLPClassifier:如何获得第一个隐藏层的输出
- c# - 特定 XML 元素的正则表达式
- azure - 当 azure 函数从队列中拉出消息后抛出异常时会发生什么?
- android - 在启动 Intent 之前检查 editText 的值
- tinymce - 如何更改 TinyMCE 图像插件中的属性文本?
- r - lapply 与分裂向量
- python - 在 matplotlib 注释文本中增加行分隔
- c# - 图像上的 WPF 链效果
- android - 无法在命令行中访问 C:\Program 文件