我目前正在开发一个预订系统,并且需要基于某些条件和预定义值为公司参与者分配座位的算法。表/座位分配算法
的条件是:
- 从每个不同的公司,至少两个参与者必须放置在相同的表。 (鉴于该公司至少有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