2014-01-09 37 views
2

我有一张Excel表,其中包含运动员名单,他们的职位,分配给这些球员的薪水以及预计的积分数量。具有多个输入变量的Excel求解器

我目前正在使用求解器来创建最佳的运动员队伍,可能有一定的位置限制,并且在预定的工资帽内。

在我的具体例子中,不同的玩家位置是:PG,SG,SF,PF,C,G和F.请注意,G可以是PG或SG,而F可以是SF或PF。

此解算器目前正在使用,但在某些情况下,玩家可能有多个职位。因此,例如,玩家A可以用作SF或SG。

有没有什么办法可以解决Solver函数中的这个问题,以便有问题的玩家可以在任何一个插槽中使用?

为了帮助解释,我将提供一些正在使用的数据的示例。这里是玩家列表的小样本:

Position Player    Salary  Game    Points Pos 1 Pos 2 
PF/C Kevin Love   $10,400  [email protected] 09:30PM ET 53.17 PF  C 
PG/SG Stephen Curry  $10,000  [email protected] 07:30PM ET 47.50 PG  SG 
SG/SF James Harden  $9,500 [email protected] 08:00PM ET 41.13 SG  SF 
PF/C LaMarcus Aldridge $9,500 [email protected] 10:00PM ET 45.22 PF  C 
PF/C Anthony Davis  $9,200 [email protected] 08:00PM ET 42.97 PF  C 
PF/C Blake Griffin  $9,000 [email protected] 10:30PM ET 42.66 PF  C 
PG  John Wall   $8,900 [email protected] 08:00PM ET 42.09 PG 
PF/C Dwight Howard  $8,700 [email protected] 08:00PM ET 41.19 PF  C 
SG/SF Paul George   $8,600 [email protected] 07:30PM ET 40.06 SG  SF 
PF  Paul Millsap  $8,400 [email protected] 07:30PM ET 37.96 PF 
PF/C Al Horford   $8,300 [email protected] 07:30PM ET 37.33 PF  C 

为了解决G和F的问题,我有吻合的“选择”的玩家列表,该列表具有各自的最小/最大。所以在这个例子中我需要1个PG,1个SG和1个G,所以我有一个PG列,最小值为1,最大值为2,最小值为1,最大值为2的SG列,以及G列,它将PG/SG加在一起,其最小值为3,最大值为3.然后,解算器标准的一部分是所有最小/最大值必须匹配。

我已经将第一列分成POS1和POS2来分隔两个可能的位置,但我无法弄清楚如何在求解器函数中包含这两个位置。对于Kevin Love这样的球员,我希望解算者考虑到他可以被安置在PF,F或C点。

这里是一个表:

PG SG SF PF C G F Ttl 
Min 1 1 1 1 1 3 3 8 
Max 3 3 3 3 2 4 4 8 
Cur 1 3 1 2 1 4 3 8 

因此,例如,规划求解标准是:

Sum of Salary <= Salary Cap (50000) 
PG Cur >= PG Min 
Repeat for all Min 
PG Cur <= PG Max 
Repeat for all Max 
Maximize Points 

最后,这里有一个解决方案的示例:

PG Stephen Curry $10,000  47.5 
SG James Harden  $9,500  41.13 
SF Paul George  $8,600  40.06 
PF Dwight Howard $8,700  41.19 
C Blake Griffin $9,000  42.66 
G John Wall  $8,900  42.09 
F Al Horford  $8,300  37.33 
Total     $63,000  292.5 

每球员适合他们的插槽,因为他们的两个职位之一(POS1或POS2)符合标准。很显然总不适合,所以这不是一个可行的解决方案,但它只是一个例子。

希望我已经提供了足够的细节,但如果没有请让我知道,我会很乐意进一步解释。提前致谢。

+0

你可以上传一个理想结果的例子吗?还要用你在第一列中提到的拆分来更新你的表格?并且提供你目前使用的解算器的一些细节?这将有助于答复者指导他们的努力。 – guitarthrower

+1

感谢您的反馈。我更新了原来的问题......看起来好些吗? – fullOfQuestions

回答

1

你的问题仍然有点含糊,因为你的薪水上限是5万美元,但你显示的是63,000美元的选定玩家。

假设:
1.你想要5名球员,因为这是球员的数量,也是让你的球员名单组成的球队成为低于50,000美元的唯一方法。这可能是梦幻篮球,你想要7或8,但该解决方案仍然适用于8个球员,选择范围更广,薪水更低。
2.我还会假设这里没有VBA,因为你没有提供任何 - 或者至少没有需要调整的东西。

我的解决方案(仍在测试中)是对Pos1和Pos2的位置编号(即1 = PG,2 = SG等)进行投掷/投射(或VBA等效)。

接下来,=concatenate(Pos1, Pos2)这样一个PG是11,PG/SG是12等等(在这种情况下“G”也是11,这可能会在我的逻辑中产生一个小故障)。

改变位置,避免表最小/最大/姜黄素值看起来是这样的:

Pos. | PG | G | PG/SG | SG | SG/SF | SF/PF | F | PF | PF/C | C 
-------------------------------------------------------------------- 
Pos1 | 1 | 1 | 1  | 2 | 2  | 3  | 3 | 4 | 4 | 5 
Pos2 | 1 | 2 | 2  | 2 | 3  | 4  | 4 | 4 | 5 | 5 
PosNbr | 11 | 12 | 12 | 22 | 23 | 34 | 34 | 44 | 45 | 55 
-------------------------------------------------------------------- 
Min  | 1 | 3 | 3  | 1 |  | 3  | 4 | 1 |  | 1 
Max  | 3 | 4 | 4  | 3 |  | 4  | 4 | 3 |  | 2 
Curr | 1 | 1 | 1  | 0 | 0  | 0  | 0 | 0 | 3 | 0 

(值都是我自己)。

+1

所以我没有使用您的确切解决方案,但您的回复为我提供了一个简单的答案。我刚刚离开上市的职位为PG/SG,SG/SF等,并为他们添加了新的最小/最大数量。因此,除了PG/SG/SF/PF/C的最小值/最大值之外,PG/SG上的最小值为0,最大值为5(名册要求允许最大值为5 - PG,SG, G和2“任何球员”位置)。 工程就像一个魅力!感谢你的反应,它帮助我弄明白了! – fullOfQuestions

+0

很高兴为您服务。你的问题引发了我对之前没有用过的“求解器”的调查。 – Sam