I'm looking to optimize a square of data (maximum score), where each row is chosen without replacement. Here's a small example, but I'd like an algorithm which would allow for a 30x30 table.
opt_table = data.frame(player = c('A', 'B', 'C'),
first = c(0.5, 0.4, 0.4),
second = c(0.4, 0.7, 0.2),
third = c(0.2, 0.4, 0.3))
The maximum score would be the highest total when adding the chosen scores by column. Here, it would be 0.5 (A) + 0.7 (B) + 0.3 (C) = 1.5. You can't solve it algorithmically by always taking the maximum row of a given column, because it is without replacement.