2014-01-09 33 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