奇怪的是,这里有一个具体的,但我们开始。我帮助管理一个每周活动的场地,我们试图填补某些排的每一个座位。我们有一个常客名单,我们用来填补这些座位,沿着每个人喜欢的座位或排(如果有的话)。我们也有一些排是更重要的,其他人填补-就像如果是在前排有一个空座位和第二排有一个空座位之间,我们会希望前排坐满。当然,不是每一个“常规”都是每周都有。
目前,我们只是根据需要手动安排每个人的位置,但我想尽可能地自动化这一点。我想一旦我们确定了某个星期参加活动的人员名单,我想运行程序,让它根据他们的偏好和我们的偏好自动将每个人放在理想的位置。
一个巨大的额外好处将是能够考虑意外的客人或没有出现。例如,如果有人回复两个人,但他们带来了第三个,这将是惊人的,如果程序可以重新计算最佳地点搬迁他们的党(甚至可能提出不同的选择与利弊。即“这个解决方案移动的人数最少”或“这个解决方案保持最重要的行填充”)
到目前为止,我只是每周手动添加人,这很有效,但很耗时,而且当有人带来一个意想不到的客人或不得不在最后一刻取消时,总是令人头痛。
我意识到这可能是一个非常具体的用例,我当然不是要求任何人为我写它。但是抽象一点,有没有一个术语可以描述这种思维/编程,我可以研究一下?我试图解决一个座位问题,得到最好的解决方案,同时满足尽可能多的“偏好”条件。
感谢您的指导!
1条答案
按热度按时间p1iqtdky1#
搜索短语入门建议:“多目标优化”、“启发式优化”
从我的头脑中,我认为使用NSGA-II的进化算法可能符合这些标准,像DEAP这样的Python库应该提供一个实现。棘手的部分可能是编写一个合适的目标函数,可以很好地捕捉多个人的偏好。