2014-09-11 53 views
0

隨着所有日常奇幻遊戲的出現,我期待着看看我是否可以輕鬆實現一個平臺,以幫助確定基於幻想聯盟的最佳陣容在每個球員的工資帽和投射點上。根據工資帽/積分尋找最佳陣容的公式/類

如果有500人蔘加比賽,你需要在最高工資帽限制內找到最高得分陣容。 1季度回到 2跑 3寬接收 1緊經 1踢球 1國防部

每個玩家被分配一個工資(更改每週)和我將指派投影點的那些球員。我在MySQL數據庫中有這樣的信息,如果這是計算這個值的最佳選擇,我寧願使用PHP/Pear或JQuery。

表看起來是這樣的

player_id name   position salary ranking projected_points 
1   Joe Smith QB  1000 2  21.7 
2   Jake Plummer QB  2500 6  11.9 

我試着通過投影點排序,並在名冊填寫,但它顯然將提供得分最高的球隊,但也超過了工資帽。我想不出一種能夠聰明地移除球員並且繼續循環並根據薪水限制找到最高得分陣容的方法。

那麼,是否有任何PHP或Pear類,你知道這將有助於「解決」這種類型的問題?你可以指點我參考的任何文章?我並沒有要求某人這樣做,但我一直在Googleing一段時間,現在最好的解決方案就是這樣。 http://office.microsoft.com/en-us/excel-help/pick-your-fantasy-football-team-with-solver-HA001124603.aspx,這是使用Excel和限制爲200個對象。

+0

您需要一個算法來爲您執行計算。一個基本的算法可以讓你添加性能最好的球員,然後檢查工資帽,泡沫,沖洗,重複。如果下一位球員工資超過工資上限,則轉到下一個球員工資,然後等等等等。 – 2014-09-11 12:55:25

回答

1

我會提出兩個解決這個問題的方法。

首先是動態規劃。對於蠻力,我們可以初始化一個包含空的部分團隊的列表,然後對於每個連續的玩家,對於當前在列表中的每個部分團隊,假設這個新的部分團隊尊重該部分團隊的副本,位置和預算限制。這是一種指數時間算法,但我們可以將運行時間減少很多(假設所有貨幣值均爲整數,則爲O(#部分位置細分*預算*#播放器),如果我們丟棄最好的對於部分職位細分和預算的每種組合,目前爲止都是可能的

第二個是找到一個可從PHP調用的整數編程庫,它的工作方式與Excel的求解器相似。它看起來像(例如)lpsolve帶有一個PHP接口。然後我們可以像這樣制定一個整數程序。

maximize sum_{player p} value_p x_p 
subject to 
sum_{quarterback player p} x_p <= 1 
sum_{running back player p} x_p <= 2 
... 
sum_{defense player p} x_p <= 1 
sum_{player p} cost_p <= budget 
for each player p, x_p in {0, 1} (i.e., x_p is binary) 
+0

我將嘗試ipsolve路線,這是我正在尋找的。謝謝! – OrganizedChaos 2014-09-12 16:05:52