使用string的Excel求解器
我将尽力解释这一点,我可以做到最好。
现在我有一个电子表格,里面有一个足球运动员名单,每个人都有一个分配的薪水和本周的总分数。
我的目标是使用求解器或其他方法来确定最佳组合,最大限度地提高预测点总数,同时保持工资上限。
在这个例子中,我有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来最大化投影点总数,但在这种情况下的variables字段将是玩家的名字,它似乎像variables字段需要是一个数字,而不是一个string列表。
有任何想法吗?
我最喜欢的一种问题:)
这里是模型设置:
- 上表显示了决策variables :
= 1
如果选手i = A, B, ..., N
L = QB, .., TE
则select列表L = QB, .., TE
否则=0
。 - 列
R
条目(顶部表格旁边)是每行的总和。 这些必须受到T
列中的数字的限制。 单元格R7
是玩家的总数,应该是9:2灵活的,并且按照个人名单的要求是7。 - 中间表显示薪水(在5万到15万之间随机产生)。
Sum of Salaries
公式是=SUMPRODUCT(C11:P14,C3:P6)
。 这里的想法是只考虑select的球员的薪水。 这个SUMPRODUCT
应该受到T14
单元格的预算约束。 对于我的实验,我把它等于所有工资总额的80%
。 - 目标 :底部表格显示每个玩家的投射点数。 在单元格
R22
的公式是=SUMPRODUCT(C19:P22,C3:P6)
(与上面的工资相同的逻辑)。 这是最大化的价值。
求解器模型如下所示:
我build议selectSimplex LP
并转到Options
并将Integer Optimality
设置为零(0)。
结果 :
求解器设法find最佳解决scheme。 问题非常小,而且非常快。 求解器可以处理多达200个variables和100个约束,对于需要(商业)扩展版本的大问题:
当然,您可以订购真实的玩家名称,以便它们适合这个设置。 例如,如果按字母顺序对每个列表的玩家进行sorting,则(Player A, QB) = first player of team QB
等
我希望这有帮助! 让我知道你是否希望我为你上传文件。
最好的,Ioannis
Excel的求解器是基于数值方法build立的。 应用于由离散值组成的域(如string或足球运动员)可能会失败。 你应该考虑用一种“真正的”编程语言编写一个蛮力解决scheme,比如c#,java,python,ruby或者javascript。 如果存在性能问题,那么从那里进行优化。
求解器不能在这里工作,因为它不是你所追求的数字解决scheme。
制作一个电子表格,每行可以包含所有可能的位置参与者(符合您的标准)。 然后制作一个Excel公式,根据该行中的玩家计算投射点总数。 按投影点列对电子表格进行sorting。