簡體   English   中英

此會議安排方案是否有很好理解的算法或解決方案模型?

[英]Is there a well understood algorithm or solution model for this meeting scheduling scenario?

我有一個復雜的問題,我想知道是否存在或適用現有的解決方案模型,例如Traveling Salesman問題。

輸入

  • N個時間事件的日歷,由開始和結束時間以及地點定義。
  • 每個會議場所的容納人數(可同時容納的最大人數)
  • 一組指示(Ai,Aj)的對,指示出席者Ai希望與出席者Aj見面,而Aj接受了邀請。

輸出

  • 對於每個助理A ,他將參加的所有活動的時間表。 主要標准是每位服務員都應與盡可能多的接受邀請的服務員會面,以滿足空間限制。

到目前為止,我們考慮過使用回溯求解(嘗試所有可能的解決方案),以及使用線性編程(即定義模型並使用單純形算法求解)

更新:如果Ai在某些情況下已經見過Aj ,那么他們就不再需要見面了(他們已經見面了)。

您的問題間隔圖中的最小最大匹配問題一樣困難,wlog假設會議室的容量為2表示他們只能及時處理一次會議。 您可以使用時間間隔圖對問題進行建模,每個時間間隔(針對每個人)是一個節點。 同樣,如果A_i和A_j擁有共同的時間並且他們也想彼此見面,則將邊緣的權重設置為他們應該彼此見面的時間。 如果在此圖中找到最小最大匹配,則可以找到受限情況的解決方案。 但是請注意,該圖是n部分,每個部分也是間隔圖。

PS:請注意,如果固定了人們彼此之間相處的時間,這將比加權在一起更容易。

如果您可以使用一個好的MIP求解器(通過Acedamic主動程序進行cplex / gurobi,但是coin OR和LP_solve是開源的,也不錯),我肯定會嘗試一下simplex。 我看過將您的問題表達為混合整數程序,我的感覺是它將有很強的松弛度,因此分支和剪切以及價格對您來說將大有幫助。 這些求解器提供了當今可擴展的解決方案,尤其是商業解決方案。 優勢在於它們還提供了一個上限,因此您可以了解解決方案質量,而啟發式方法則並非如此。

公式:

將z(i,j)(二進制)定義為一個變量,該變量指示在{1,2,...,N}中的至少一個事件n中,i和j在一起。 定義z(i,j,n)(二進制)以指示它們在事件n中在一起。 定義z(i,n)表示我正在參加n。 Z(i,j)和z(i,j,m)僅在應該滿足i和j的情況下存在。

對於每個t,M ^ t是同時保留的時間事件的子集。 因此,如果事件1是9到11,事件2是10到12,事件3是11到13,則M ^ 1 = {事件1,事件2)和M ^ 2 = {事件2,事件3} 。 即沒有人可以同時參加1和2或2和3,但是1和3可以。

Max sum Z(i,j)                      

z(i,j)<= sum_m z(i,j,m)   
(every i,j)(i and j can meet if they are in the same location m at least once)

z(i,j,m)<= z(i,m)   (for every i,j,m) 
(if i and j attend m, then i attends m)

z(i,j,m)<= z(j,m)     (for every i,j,m) 
(if i and j attend m, then j attends m)

sum_i z(i,m) <= C(m)   (for every m) 
(only C(m) persons can visit event m)

sum_(m in M^t) z(i,m) <= 1  (for every t and i)  
(if m and m' are both overlapping time t, then no person can visit them both. )

正如@SaeedAmiri指出的那樣,這似乎是一個復雜的問題。

我的猜測是,您正在考慮的回溯線性編程選項會隨着助手數量的增加而激增(可能大約為幾十個助手)。

如果最優性不是必需的,也許您應該考慮采用(元)啟發式方法,或者通過約束編程來構建初始模型並查看其縮放比例。

為了給您更精確的答案,您為什么需要解決這個問題? 典型的參加人數是多少? 房間的數量?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM