将此公式化为具有二进制变量的整数规划优化问题,其目标函数是最大化所选组合的对比度总和:
A <- as.matrix(dcast(melt(DT[, rn := .I], id.vars=c("rn", "Contraste")),
value ~ rn, length)[, value := NULL])
ones <- rep(1L, nrow(A))
ci <- DT$Contraste
library(CVXR)
x <- Variable(ncol(A), integer=TRUE)
prob <- Problem(Maximize(sum(ci * x)), list(x >= 0L, x <= 1L, A %*% x == ones))
result <- solve(prob)
ans <- DT[result$getValue(x)[,1L]==1L]
输出:
Macho Femea Contraste rn
1: Parental 02 Parental 15 0.061991665 2
2: Parental 01 Parental 08 0.048031588 5
3: Parental 13 Parental 17 0.044067325 10
4: Parental 06 Parental 14 0.036371303 24
5: Parental 09 Parental 20 0.032768889 29
6: Parental 03 Parental 16 0.032268296 31
7: Parental 11 Parental 12 0.027911306 48
8: Parental 18 Parental 19 0.018569118 91
9: Parental 04 Parental 07 0.011845178 151
10: Parental 05 Parental 10 0.009025032 169
数据:
library(data.table)
DT <- fread("Macho,Femea,Contraste
Parental 08,Parental 15,0.0628225489
Parental 02,Parental 15,0.061991665
Parental 11,Parental 15,0.0520751086
Parental 14,Parental 15,0.0484917425
Parental 01,Parental 08,0.0480315879
Parental 08,Parental 20,0.0480098916
Parental 02,Parental 13,0.0472494129
Parental 13,Parental 15,0.0469532789
Parental 06,Parental 13,0.0443463611
Parental 13,Parental 17,0.0440673254
Parental 13,Parental 20,0.0440401616
Parental 09,Parental 15,0.0440300929
Parental 03,Parental 13,0.0411739654
Parental 01,Parental 13,0.0404547979
Parental 15,Parental 20,0.0401336641
Parental 08,Parental 12,0.0394015975
Parental 07,Parental 15,0.0386226841
Parental 03,Parental 08,0.0383263954
Parental 12,Parental 14,0.0378848729
Parental 08,Parental 17,0.0375066354
Parental 02,Parental 12,0.0372399494
Parental 06,Parental 15,0.0371236654
Parental 03,Parental 15,0.0370775111
Parental 06,Parental 14,0.0363713029
Parental 01,Parental 15,0.033741815
Parental 02,Parental 18,0.033672345
Parental 04,Parental 08,0.0333046361
Parental 06,Parental 08,0.0330964111
Parental 09,Parental 20,0.0327688886
Parental 14,Parental 17,0.032388575
Parental 03,Parental 16,0.0322682961
Parental 15,Parental 19,0.0320306079
Parental 11,Parental 13,0.0310351879
Parental 18,Parental 20,0.0301425641
Parental 01,Parental 14,0.0298570025
Parental 01,Parental 09,0.0297884969
Parental 06,Parental 09,0.0296563441
Parental 05,Parental 15,0.0294868041
Parental 02,Parental 08,0.0293625029
Parental 02,Parental 16,0.029328745
Parental 12,Parental 20,0.0293102311
Parental 14,Parental 20,0.0287686166
Parental 03,Parental 09,0.0287177614
Parental 12,Parental 13,0.0286484275
Parental 10,Parental 15,0.0286466789
Parental 09,Parental 17,0.0283792994
Parental 04,Parental 14,0.0280999379
Parental 11,Parental 12,0.0279113064
Parental 16,Parental 20,0.0278745041
Parental 04,Parental 13,0.0273011461
Parental 06,Parental 20,0.0272814079
Parental 15,Parental 16,0.027085715
Parental 13,Parental 18,0.0270359189
Parental 01,Parental 18,0.026398205
Parental 02,Parental 09,0.0263392669
Parental 03,Parental 14,0.0254937186
Parental 02,Parental 14,0.0247185575
Parental 08,Parental 18,0.0247149889
Parental 06,Parental 16,0.0245681054
Parental 01,Parental 16,0.024503945
Parental 11,Parental 16,0.0244933286
Parental 01,Parental 06,0.0243846764
Parental 09,Parental 12,0.0239216225
Parental 01,Parental 12,0.0236921844
Parental 10,Parental 14,0.0232265864
Parental 02,Parental 03,0.0229462741
Parental 04,Parental 15,0.0224715954
Parental 01,Parental 02,0.022084705
Parental 15,Parental 17,0.0220288775
Parental 08,Parental 10,0.021820915
Parental 03,Parental 19,0.0217755316
Parental 08,Parental 16,0.0216927489
Parental 14,Parental 16,0.0213960225
Parental 08,Parental 11,0.0211196179
Parental 05,Parental 20,0.021003835
Parental 16,Parental 17,0.0206815325
Parental 16,Parental 18,0.020545525
Parental 10,Parental 20,0.0204840466
Parental 02,Parental 10,0.0204325379
Parental 11,Parental 18,0.0203889386
Parental 14,Parental 18,0.0203474925
Parental 02,Parental 20,0.0196904061
Parental 12,Parental 15,0.0196137154
Parental 09,Parental 11,0.0194371989
Parental 04,Parental 09,0.0194044341
Parental 06,Parental 19,0.0189968425
Parental 02,Parental 05,0.0188568211
Parental 03,Parental 05,0.0187945954
Parental 09,Parental 18,0.0187184929
Parental 07,Parental 13,0.0185991266
Parental 18,Parental 19,0.0185691179
Parental 02,Parental 04,0.0183240164
Parental 01,Parental 10,0.0181668329
Parental 05,Parental 06,0.0179954229
Parental 02,Parental 19,0.0177346789
Parental 15,Parental 18,0.01766378
Parental 07,Parental 08,0.0176254366
Parental 05,Parental 12,0.0176104961
Parental 11,Parental 17,0.0176028341
Parental 03,Parental 12,0.0174225989
Parental 01,Parental 05,0.0173943561
Parental 10,Parental 13,0.017378285
Parental 08,Parental 19,0.0173748686
Parental 07,Parental 20,0.017370305
Parental 04,Parental 18,0.0173107154
Parental 02,Parental 06,0.0173067314
Parental 01,Parental 11,0.0172857116
Parental 03,Parental 10,0.0168571154
Parental 01,Parental 19,0.0167556189
Parental 06,Parental 07,0.0166236929
Parental 05,Parental 17,0.0165157486
Parental 03,Parental 04,0.0163582541
Parental 01,Parental 17,0.0160588725
Parental 07,Parental 12,0.0159444261
Parental 17,Parental 20,0.0158487086
Parental 04,Parental 11,0.0158466766
Parental 12,Parental 19,0.0158133941
Parental 07,Parental 17,0.0156970886
Parental 12,Parental 16,0.0155570654
Parental 03,Parental 17,0.0154600816
Parental 19,Parental 20,0.0154020154
Parental 10,Parental 11,0.0153543329
Parental 02,Parental 17,0.0153298425
Parental 07,Parental 16,0.0147681941
Parental 14,Parental 19,0.0147026854
Parental 17,Parental 19,0.0145014764
Parental 02,Parental 07,0.0144241111
Parental 13,Parental 14,0.0143882414
Parental 11,Parental 14,0.0142568561
Parental 06,Parental 11,0.0140660016
Parental 11,Parental 20,0.0139582379
Parental 07,Parental 18,0.0136964941
Parental 03,Parental 20,0.0136794654
Parental 17,Parental 18,0.0135845075
Parental 12,Parental 17,0.0134814669
Parental 06,Parental 18,0.0133580354
Parental 13,Parental 19,0.0132965386
Parental 01,Parental 07,0.0131285661
Parental 10,Parental 18,0.0130803889
Parental 08,Parental 13,0.01300787
Parental 05,Parental 18,0.0128600741
Parental 05,Parental 11,0.0127498329
Parental 04,Parental 20,0.0126882129
Parental 11,Parental 19,0.0124082541
Parental 06,Parental 12,0.0123851016
Parental 05,Parental 08,0.0123368266
Parental 03,Parental 18,0.0122895611
Parental 09,Parental 10,0.012112935
Parental 05,Parental 13,0.0119385966
Parental 04,Parental 06,0.011926075
Parental 04,Parental 07,0.0118451779
Parental 03,Parental 06,0.0117328441
Parental 13,Parental 16,0.0117187989
Parental 03,Parental 07,0.0115854554
Parental 01,Parental 03,0.0113626541
Parental 07,Parental 11,0.0113482429
Parental 07,Parental 14,0.0111467616
Parental 06,Parental 10,0.0110053261
Parental 12,Parental 18,0.0108939654
Parental 01,Parental 04,0.0104474414
Parental 10,Parental 17,0.0103543454
Parental 09,Parental 16,0.0100886079
Parental 08,Parental 14,0.0098108714
Parental 02,Parental 11,0.0097862866
Parental 03,Parental 11,0.0095965925
Parental 04,Parental 05,0.0095426279
Parental 07,Parental 19,0.0094508454
Parental 05,Parental 14,0.0090346516
Parental 05,Parental 10,0.0090250316
Parental 04,Parental 16,0.0089898154
Parental 10,Parental 16,0.0085557289
Parental 04,Parental 12,0.0083324666
Parental 09,Parental 19,0.0083103066
Parental 07,Parental 10,0.0081216816
Parental 06,Parental 17,0.0078817689
Parental 07,Parental 09,0.0068987486
Parental 09,Parental 14,0.0067795554
Parental 08,Parental 09,0.006367985
Parental 04,Parental 17,0.0063674089
Parental 05,Parental 07,0.00624117
Parental 09,Parental 13,0.005527955
Parental 10,Parental 19,0.0055111486
Parental 04,Parental 19,0.0055037925
Parental 10,Parental 12,0.0054729425
Parental 05,Parental 16,0.0050151741
Parental 05,Parental 09,0.0048141286
Parental 01,Parental 20,0.0040794111
Parental 04,Parental 10,0.0040748511
Parental 05,Parental 19,0.0037029054
Parental 16,Parental 19,0.0035545129")