我在一家活动组织公司工作,我们的主要业务是组织买家(零售商和分销商)与食品和饮料制造商之间的“快速约会”会议。我们有为事件制定时间表的人员,我想以某种方式实现这个过程的自动化。
我会向一个网络应用程序寻求逻辑上的帮助,这个应用程序可以安排会议。
关于如何自动创建一个伟大的时间表,有什么建议吗?
对不起,如果我的问题不清楚,这是我的第一个堆栈溢出问题。
发布于 2020-08-31 02:18:44
我没有JavaScript解决方案,但这可以用数学优化工具来解决。
让我们从一些数据开始:
---- 11 SET b buyers
buyer1 , buyer2 , buyer3 , buyer4 , buyer5 , buyer6 , buyer7 , buyer8 , buyer9 , buyer10
---- 11 SET s sellers
seller1 , seller2 , seller3 , seller4 , seller5 , seller6 , seller7 , seller8 , seller9
seller10
---- 11 SET r rounds
round1, round2, round3, round4, round5, round6, round7, round8
---- 11 PARAMETER wantMeeting a meeting has been requested
seller1 seller2 seller3 seller4 seller5 seller6 seller7 seller8 seller9
buyer1 1 1
buyer2 1 1
buyer3 1 1
buyer4 1 1
buyer5 1 1 1
buyer6 1 1 1
buyer7 1 1 1 1
buyer8 1 1
buyer9 1 1 1
buyer10 1 1
+ seller10
buyer8 1 引入二进制变量:
x(b,s,r) = 1 if buyer b meets seller s in round r
0 otherwise我们只考虑wantMeeting=1的情况。隐式地,当wantMeeting=0时,我们假设x(b,s,r)=0。
制约因素:
这里是“这样”的数学表示法。
我还增加了一些限制,并提出了尽量减少所需回合次数的目标。得到的混合整数编程模型给出的结果如下:
---- 42 VARIABLE x.L meetings
round1 round2 round3 round4
buyer1 .seller1 1
buyer1 .seller9 1
buyer2 .seller5 1
buyer2 .seller7 1
buyer3 .seller3 1
buyer3 .seller4 1
buyer4 .seller1 1
buyer4 .seller3 1
buyer5 .seller2 1
buyer5 .seller4 1
buyer5 .seller6 1
buyer6 .seller5 1
buyer6 .seller6 1
buyer6 .seller9 1
buyer7 .seller1 1
buyer7 .seller2 1
buyer7 .seller5 1
buyer7 .seller6 1
buyer8 .seller3 1
buyer8 .seller8 1
buyer8 .seller10 1
buyer9 .seller2 1
buyer9 .seller5 1
buyer9 .seller6 1
buyer10.seller7 1
buyer10.seller9 1
---- 42 VARIABLE round.L round is used
round1 1, round2 1, round3 1, round4 1
---- 42 VARIABLE numRounds.L = 4 number of rounds needed我没有每轮的容量(假设有n张桌子)。这并不是很难补充。更多细节是这里。
有关这类模型的更多示例,请参见:
我可能会在服务器上解决这个问题,但是如果您坚持使用JavaScript解决方案,那么GLPK混合整数编程解决程序(链接)有一个JavaScript端口。您还可以查看约束编程解决程序(在JavaScript中有一些可用的)。
https://stackoverflow.com/questions/63662477
复制相似问题