我会尽力解释这个问题。
现在我有一个包含足球运动员名单的电子表格,每个足球运动员都有一个指定的工资和本周预计的总分。
我的目标是使用Solver或其他方法来确定最佳玩家组合,以便在保持工资上限的同时最大化预计总分。
在这个例子中,我有4个单独的播放器列表,如下所示:
QB:玩家A,玩家B,玩家C ......玩家N. RB:玩家a,玩家b,玩家c ...玩家N. WR:玩家X,玩家Y,玩家Z ......玩家N. TE:玩家x,玩家y,玩家z ...玩家N
我需要最好的组合,包括2个QB,2个RB,2个WR,1个TE和2个“Flex”,这意味着任何RB / WR / TE。
我尝试使用Solver来最大化投影点总数,但在这种情况下,变量字段将是玩家的名称,似乎变量字段需要是一个数字,而不是字符串列表。
有什么想法吗?
答案 0 :(得分:2)
我最喜欢的问题:)
以下是模型设置:
= 1
的播放器i = A, B, ..., N
,则{@ 1}显示 决策变量 :L = QB, .., TE
否则。=0
中的条目(顶部表旁边)是每行的总和。这些必须使用R
列中的数字进行约束。单元格T
是玩家的总和,灵活性应为9:2,根据个人列表要求为7。R7
公式为Sum of Salaries
。这里的想法是只考虑所选玩家的工资。此=SUMPRODUCT(C11:P14,C3:P6)
应受预算限制,该预算位于单元格SUMPRODUCT
中。对于我的实验,我把它等于所有工资总额的T14
。80%
中的公式为R22
(与上面的工资相同)。这是要最大化的价值。解算器模型如下所示:
我建议选择=SUMPRODUCT(C19:P22,C3:P6)
并转到Simplex LP
并将Options
设置为零(0)。
<强>结果强>:
Solver设法找到最佳解决方案。问题非常小,而且非常快。 Solver最多可处理200个变量和100个约束,对于需要(商业)扩展版本的大问题:
当然,您可以订购真实的玩家名称,使其符合此设置。例如,如果您按字母顺序对每个列表的玩家进行排序,则Integer Optimality
等等
我希望这有帮助!如果您希望我为您上传文件,请与我们联系。
最佳, 扬
答案 1 :(得分:0)
Excel的求解器基于数值方法。应用于由离散值组成的域(如字符串或足球运动员)可能会失败。你应该考虑用“真正的”编程语言编写一个强力求解器,比如c#,java,python,ruby或javascript。如果存在性能问题,请从那里进行优化。
答案 2 :(得分:0)
Solver在这里不起作用,因为它不是你想要的数字解决方案。
制作一个电子表格,其中每一行都有可能的位置播放器组合(符合您的标准)。然后制作一个Excel公式,根据该行中的玩家计算投影点总数。按投影点列对电子表格进行排序。