私はいくつかの問題を提供している最適化の問題があります。RGLPK制約の問題
次のコードを実行すると、最適な解決策が得られます。
objective <- DK$DK.proj
objective.variable.types <- rep("B", length(DK$player))
constraint.matrix <- rbind(as.numeric(DK$pos == "SP"),
as.numeric(DK$pos == "C"),
as.numeric(DK$pos == "1B"),
as.numeric(DK$pos == "2B"),
as.numeric(DK$pos == "SS"),
as.numeric(DK$pos == "3B"),
as.numeric(DK$pos == "OF"),
DK$salary)
constraint.directions <- c(
"==", # SP
"==", # C
"==", # 1B
"==", # 2B
"==", # SS
"==", # 3B
"==", # OF,
"<=") # max salary
rhs <- c(
2, # SP
1, # C
1, # 1B
1, # 2B
1, # SS
1, # 3B
3, # OF
50000) # max salary
Rglpk_solve_LP(obj = objective, mat = constraint.matrix, dir = constraint.directions, rhs = rhs,
types = objective.variable.types, max = TRUE)
しかし、データフレームの中には、複数のポジションがあるため、データフレーム内の一部のプレイヤーが重複しているという問題があります。同じプレイヤーの行は2列あり、位置の列は違っていますが、各プレイヤーは一度しか使用できません。だから私は次のような制約を加えました。
objective <- DK$DK.proj
objective.variable.types <- rep("B", length(DK$player))
constraint.matrix <- rbind(as.numeric(DK$pos == "SP"),
as.numeric(DK$pos == "C"),
as.numeric(DK$pos == "1B"),
as.numeric(DK$pos == "2B"),
as.numeric(DK$pos == "SS"),
as.numeric(DK$pos == "3B"),
as.numeric(DK$pos == "OF"),
DK$salary,
n_distinct(DK$player))
constraint.directions <- c(
"==", # SP
"==", # C
"==", # 1B
"==", # 2B
"==", # SS
"==", # 3B
"==", # OF,
"<=", # max salary
"==") # max players
rhs <- c(
2, # SP
1, # C
1, # 1B
1, # 2B
1, # SS
1, # 3B
3, # OF
50000, # max salary
10) # max players
Rglpk_solve_LP(obj = objective, mat = constraint.matrix, dir = constraint.directions, rhs = rhs,
types = objective.variable.types, max = TRUE)
そして、私は実現可能な解決法を得ることができません。他の制約を守りながら、私は常に10人のユニークで重複していない選手を持つことができるように、私は制約をどのように変更すべきかに関する提案はありますか?
恐ろしく、これは素晴らしい作品です! – NateN