Я новичок в R и имею конкретную проблему оптимизации спортивной команды в фантазии, которую я хотел бы решить. Я видел, что другие сообщения используют lpSolve для подобных проблем, но я, похоже, не склоняюсь вокруг кода. Пример таблицы данных ниже. Каждый игрок находится в команде, играет определенную роль, имеет зарплату и имеет очки очков за игру. Мне нужны ограничения, мне нужно ровно 8 игроков. Из одной команды может быть не более 3 игроков. Для каждой роли должен быть по крайней мере один игрок (из 5). А совокупная заработная плата не должна превышать 10 000 долларов США.R Team Roster Optimization w/lpSolve
Team Player Role Avgpts Salary
Bears A T 22 930
Bears B M 19 900
Bears C B 30 1300
Bears D J 25 970
Bears E S 20 910
Jets F T 21 920
Jets G M 26 980
[...]
В R, я пишу в следующем
> obj = DF$AVGPTS
> con = rbind(t(model.matrix(~ Role + 0, DF)), rep(1,nrow(DF)), DF$Salary)
> dir = c(">=",">=",">=",">=",">=","==","<=")
> rhs = c(1,1,1,1,1,8,10000)
> result = lp("max", obj, con, dir, rhs, all.bin = TRUE)
Этот код прекрасно работает в производстве оптимальной фантазии команды без Ограничением не более 3-х игроков может исходить от любой из команда. Вот где я застрял, и я подозреваю, что он относится к аргументу con
. Любая помощь приветствуется.
Спасибо! Прекрасно работает! – altaylor1123
Любая идея, как заставить игрока в составе? Я могу увидеть, как удалить их, обнуляя их в матрице модели con, но не уверен, как заставить include. – tcash21
Когда я пытаюсь просмотреть 'result', я получаю' Error: status -1'. Предполагается, что «результат» должен хранить результат решателя? – Keith