2016-05-31 135 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

好點 - 過去一年訂單的大小在求解過程中無關緊要(任何影響都可以預先計算)。只有計劃訂單的數量大小。 –