2017-01-26 45 views
2

我正在製作一個小組生成器,在這裏學生向他們提交想要成爲一個小組的成員提交偏好:1是最好的,2是次好的,等等。然後,我計算出一種方法,即計算兩名學生的匹配程度,這是基於您的偏好以及您過去與這個人在一起的頻率。它只是返回一個整數。如果這個數字很低,那麼你匹配得很好,如果它很高,不是那麼多。組生成算法?

組大小被傳入並且組被創建。

我不知道如何去做的事情是使用該方法來製作組,以確保學生匹配儘可能與數字相關。是否有任何預先存在的算法?

順便說一句,學生的剩餘只是分佈在前幾組。

+2

最大重量匹配。 –

+0

@Aᴍɪʀ謝謝,它絕對看起來像我可以使用的東西,儘管我儘量減少**學生之間的價值,但這應該不成問題。但是,請您詳細說明一下嗎?我的情況如何符合算法? – Martin

+0

你想優化什麼?我的意思是最佳組合的特點是什麼?學生的偏好?還是組內學生的「善」? –

回答

2

模擬退火適用於這些類型的優化問題。能量是學生對該組中每個其他學生的等級的總和,並且希望將其最小化,同時保持所有組的平等(加上對剩餘學生的欺騙)。

你必須擺弄程序才能正確地獲得溫度和冷卻時間表。但如果你不堅持一個完美的結果,你應該很容易得到一個好的結果。

2

你可以蠻力生成所有「好團體」(得分不錯的團體)。

然後使用線性整數規劃,其中變量Gi爲1或0,這意味着第i組G存在或不存在。

要最大化的目標函數是Gi變量的總和。對於任何兩個組Gi和Gj,如果兩個組都包含同一個學生,則約束爲Gi + Gj = 0。

編輯:我已經找到一種方法來完成線性整數編程。

Maximize sum(Cij * Xij)(i和j乘以1或0基於當它們被配對或不配對學生的成本,Xij = 1 or 0

約束對於每個組,Gk = SUM(Gk.ij) == group size

約束SUM(Gk.ij) over all k & j == 1(每個學生是在一組中)