首页 > 解决方案 > 如何合并观察的极值点并仅选择主导单位?

问题描述

我需要建立一个算法,它将:

对于 2 个变量的 116 个现有观测值x1x2(单独绘制:一个点)

  1. 通过合并 2 个现有观测值的极值点来创建新观测值(例如:观测值 117 将有 2 个极值点,( x1_115, x2_115) 和 ( x1_30, x2_30))。对所有组合执行此操作。如果,对于一个组合,一对支配另一个:x1_a< x1_bAND x2_a< x2_b,只有 select a
  2. 对于新创建的 116+n 个新变量集,按照与上述相同的逻辑删除支配对。
  3. 继续,直到我们无法创建新的非支配对。

我试图通过为每个操作创建独立的函数来解决这个问题。到目前为止,我已经创建了合并极值点的 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(两者x1x2更小)。

我该如何解决这个问题?

标签: roptimizationconvex

解决方案


推荐阅读