2016-05-31 90 views
1

客户曾要求我使用Drools开展项目工作。看着Drools文档,我认为他们正在谈论OptaPlanner。适用于大型数据集的OptaPlanner

该公司接受来自许多客户的运输订单,并将这些订单链接到多个承运人的预订。去年的订单超过了10万。目前发生的“优化”是基于服务,分配和费率的,并且是线性的(每个订单使用约束分配给承运人,但不考虑周边订单)。需求是将非关键订单保留在一个池中几天,并使用相同的约束条件优化池中的订单以获得最低成本。

最初他们想要运行“假设”而不是去年的订单来微调约束条件。如果这个练习是成功的,他们想在现场系统中使用它。

我的问题是OptaPlanner是否是这项任务的正确工具,如果有的话,如果有一个例子可以让我开始。

回答

1

看看vehicle routing videos,因为它听起来像你有车辆路线问题。

如果您只使用Drools分配订单,您基本上会构建构建启发式(=贪婪算法)。如果您使用OptaPlanner分配订单(以及Drools计算解决方案的质量(=分数)),那么您会得到更好的解决方案。了解原因,请参见false assumptions on vehicle routing

要扩展到10万个订单(=计划实体),请使用Nearby Selection(最高可达10k)和分区搜索(即a sign of weakness,但需要10k以上)。

+0

恭维杰弗里的伟大工作,我想知道是否缩放到100K真的是马克问题的一个问题。由于他的顾客永远不会同时获得这么多订单,所以问题的大小会减少(已经交付的订单不能进一步优化)。即使对过去一年订单的分析也应考虑订单到达情况。 – Marco

+0

好点 - 过去一年订单的大小在求解过程中无关紧要(任何影响都可以预先计算)。只有计划订单的数量大小。 –