1
我正在研究R中的一些代碼來優化我的幻想足球陣容,但是我遇到了一些限制。我基本上有一個球員名單,他們的位置,預期的點數和成本。R多重整數線性規劃中的約束
名冊必須包括:
1 QB 2 RB 2 WR 1 TE 1 FLEX(無論是RB,WR,或TE) 總在$ 200
我的問題的成本是我的代碼希望選擇FLEX位置作爲WR,RB或TE已選擇的播放器。這裏是我正在使用的代碼,我有一張表,我輸入了用於播放器,位置,點數和成本的列。在表中,任何RB,WR或TE都與FLEX一樣位置重複。我試圖改變將pos ==「FLEX」設置爲pos ==「WR」|| pos ==「RB」|| pos ==「TE」的那一行,但那不起作用,我唯一的想法是運行代碼,如果它複製了FLEX播放器,我將它從源表中刪除。雖然這有點痛苦。
任何想法,不勝感激。
name <- mydata$name
pos <- mydata$pos
pts <- mydata$pts
cost <- mydata$cost
num.players <- length(name)
f <- pts
var.types <- rep("B", num.players)
A <- rbind(as.numeric(pos=="QB")
, as.numeric(pos=="RB")
, as.numeric(pos=="WR")
, as.numeric(pos=="TE")
, as.numeric(pos=="FLEX")
,cost)
dir <- c("=="
,"=="
,"=="
,"=="
,"=="
,"<=")
b <- c(1
, 2
, 2
, 1
, 1
, 200)
library(Rglpk)
sol <- Rglpk_solve_LP(obj = f
, mat = A
, dir = dir
, rhs = b
, types = var.types
, max=TRUE)
sol
name[sol$solution == 1]
咄,那是很容易的。感謝您的幫助,我知道我正在推翻它。 – user1723699 2014-10-01 21:14:08