2016-07-27 233 views
-1

我們的情況與車輛路線示例類似。不同之處在於我們希望能夠即時添加車輛。當通過問題事件更改添加車輛時(使用BeforeEntityAdded & AfterEntityAdded)日誌會驗證問題事實是否已更改,但規劃人員似乎沒有考慮新車輛。它使用下面的代碼完成(倉庫是現有的倉庫)。任何想法如何解決這一問題?將車輛添加到車輛路線示例中

Vehicle vehicle = new Vehicle(); 
vehicle.setId(id); 
vehicle.setCapacity(5); 
vehicle.setDepot(depot); 
scoreDirector.beforeEntityAdded(vehicle); 
solution.getVehicleList().add(vehicle); 
scoreDirector.afterEntityAdded(vehicle); 
scoreDirector.triggerVariableListeners(); 

感謝

+0

您需要對vehicleList進行淺層克隆,以避免以前的最佳解決方案事件的最佳解決方案在其他線程(如UI線程)中使用時發生改變。 –

回答

0

如果你看看下一個最好的解決方案時,這個問題其實變化後,和它在列表中的車輛,應該可以使用。你確定容量足夠高,並且有一種方法可以使用車輛來獲得更好的分數?

嘗試解決一個容量少於需求的VRP集,然後添加一輛車 - 它應該立即使用,因爲使用它會提高硬分數。