这是我的问题:我想从n个中选择k个个体,以使所选个体之间的距离最大化,并且其给定变量的平均值也最大化。
理想情况下,我想获得一套与“ pareto front”相对应的解决方案。
计算加权指数可能是一种选择,但是我不确定如何正确缩放两个客观值。
下面是使用R的数据示例。
## create a n*m matrix, with samples as rows, variables as columns
## possible values are 0 and 1
n = 100
m = 300
set.seed(1L)
rows = lapply(1:n, function(x){
p = runif(1)
sample(0:1, m, replace = TRUE, prob = c(p, 1 - p))
})
## matrix samples*variables
mat = do.call(rbind, rows)
## Compute a distance matrix
D = as.matrix(dist(mat))
## Create random values 'S'
S = rnorm(n)
## idx = sample of individuals
idx = sample(1:n, 20)
## objective:
# select nsel among n maximizing S and maximizing D
# i.e. find the optimal subset idx that maximizes mean(S[idx]) and mean(D[idx, idx])
我研究了mco或kofnGA之类的不同R包。它看起来不合适,但我可能错过了一些东西。也欢迎使用Python解决方案。
谢谢。