我有一个擅长的表格,有一个体育运动员列表,他们的职位,分配给这些球员的薪水,以及一个预计的积分。

我目前正在使用Solver创建最佳的体育运动者组,具有某些位置限制和预定义的薪资帽。

在我的具体示例中,不同的播放器位置是:pg,sg,sf,pf,c,g和f。注意,g可以是pg或sg,并且f可以是sf或pf。

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

是否有任何方法可以在求解器功能中解释这一点,以便有问题的播放器可以在任一插槽中使用?

要帮助解释,我将提供正在使用的数据的一些示例。这是播放器列表的一个小样本:

Position Player             Salary     Game                Points   Pos 1   Pos 2
PF/C    Kevin Love          $10,400     Pho@Min 09:30PM ET  53.17    PF      C
PG/SG   Stephen Curry       $10,000     GS@Bkn 07:30PM ET   47.50    PG      SG
SG/SF   James Harden        $9,500  LAL@Hou 08:00PM ET  41.13    SG      SF 
PF/C    LaMarcus Aldridge   $9,500  Orl@Por 10:00PM ET  45.22    PF      C
PF/C    Anthony Davis       $9,200  Was@NO 08:00PM ET   42.97    PF      C
PF/C    Blake Griffin       $9,000  Bos@LAC 10:30PM ET  42.66    PF      C
PG      John Wall           $8,900  Was@NO 08:00PM ET   42.09    PG
PF/C    Dwight Howard       $8,700  LAL@Hou 08:00PM ET  41.19    PF      C
SG/SF   Paul George         $8,600  Ind@Atl 07:30PM ET  40.06    SG      SF
PF      Paul Millsap        $8,400  Ind@Atl 07:30PM ET  37.96    PF
PF/C    Al Horford          $8,300  Ind@Atl 07:30PM ET  37.33    PF      C
. 要解决g和f问题,我有一个标志的列表,它略有“选定”的播放器,并且该列表每个都有min / max。所以在这个例子中,我需要1 pg,1 sg和1g。因此,我有一个pg列,min为1和max 2,sg列,min为1,最大2,以及m min列,它在一起添加pg / sg的pg / sg,min为3和最大3.那么求解器标准的一部分都是min / max必须匹配。

我已将第一列拆分为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)适合标准。显然总共不合适,所以这不是一个可行的解决方案,但这只是一个例子。

希望我提供了足够的细节,但如果不是,请告诉我,我很乐意进一步解释。提前致谢。

有帮助吗?

解决方案

您的问题仍然有点模糊,因为您的薪资帽是50,000美元,但您展示了63,000美元的球员选择。

假设:
1.你想要5名球员,因为这是玩家楼层的数量和获得由您的玩家组成的团队的唯一方法,低于50,000美元。这可能是幻想箍,你想要7或8,但解决方案仍然应该为8名球员工作,具有更广泛的选项和较低工资。
2.我还假设这里没有VBA,因为您没有提供任何 - 或至少需要调整的VBA。

我的解决方案(仍在测试中)是将POS1和POS2投掷(或VBA等效)到位置编号的文本(即,1= PG,2= SG等)。

接下来,生成播码代码,使得pg是11,pg / sg是12等(“g”也是这个场景中的11个,这可能会在我的逻辑中放置故障)。

使用min / max / cur值更改您的位置表看起来像这样:

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  
.

(值是我自己的)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top