我目前正在開發一個預訂系統,並且需要基於某些條件和預定義值爲公司參與者分配座位的算法。表/座位分配算法
的條件是:
- 從每個不同的公司,至少兩個參與者必須放置在相同的表。 (鑑於該公司至少有2名參與者)
- 公司有競爭對手的定義。公司不能與競爭對手坐在同一張桌子上。
預定義的值是:
- 表和座位預定。
- 公司參與者和競爭對手的關係是預定義的。
實體的定義:
表: ID(中間體,PK), 描述(字符串), 號(INT),
TableSeat: ID(中間體,PK), Number(Int), TableID(FK), CustomerID(Nullable Int,FK)
公司: ID(PK) 名稱(字符串) DefaultNumberOfParticipants(INT) CompetitorID(FK)
Competior: ID(PK) CompanyID(FK) CompanyID2(FK)
所以,如果我,例如,有以下預設定義:
表:
- 表1具有6個座位
- 表2具有4個座位
- 表3具有6個座位
- 表4具有3個座位
公司/參加者:
- Company1有3個參與者,沒有競爭對手
- Company2 h作爲2名參與者和公司3作爲競爭對手
- 公司3有4名參與者和Company2的競爭對手的
我需要自動分配共有9人蔘加,從3家公司上4代表總數的19席。根據條件,公司2和公司3的參與者不能坐在同一張桌子上。此外,當一個參與者坐在桌旁時,他應該由同伴參與者陪同(如果可能的話)。
任何想法或指向一個合適的算法將不勝感激。謝謝。
如果你想快速編程,你可以嘗試'貪婪隨機'metaheuristics(GRASP)http://en.wikipedia.org/wiki/Greedy_randomized_adaptive_search_procedure – Seb 2014-10-30 13:01:24