2

在Microsoft Solver Foundation中,我想知道是否可以添加一個參數,其值取決於決策值。取決於MSF決策的參數

I.e.我想要TSP模型的一些東西,但它也應該考慮從一點到另一點的流量。請注意:流量取決於銷售人員在該路線上行駛的時間。

這裏是模型:

我有一個城市之間所有可能組合的矩陣。

決策變量是銷售人員路線的Order。 0是第一個,1秒,...

我有一個屬性timeToTravel這是綁定到一個屬性,計算的時間,從Order價值的路線將發生,它返回的旅行時間,包括交通一天中的時間。

在我看來,調用Solve函數時,參數值被讀取一次並緩存,我正確嗎?如果是的話,有沒有人有任何建議來解決這個問題?

最初我問這個問題on the MSF forum但我認爲它會得到更多的關注堆棧溢出。此外,我對除MSF以外的其他解算器開放,但我更願意留在.NET環境中。

+0

是否建立了此特定TSP問題的理論? –

回答

1

有一篇關於使用Solver Foundation here解決「靜態」旅行推銷員問題的好文章。如果你還沒有自己的實現,也許你可以將解決方案基於該代碼。

這是從文章中提到的目標配方:

// Goal: minimize the length of the tour. 
Goal goal = model.AddGoal("TourLength", GoalKind.Minimize, 
    Model.Sum(Model.ForEach(city, i => 
     Model.ForEachWhere(city, 
      j => dist[i, j] * assign[i, j], j => i != j)))); 

如果我理解正確的話,在你的問題兩個城市之間旅行的時間取決於時間的最一天嗎?

我不相信您可以在優化過程中動態更新dist[,]double陣列。但是,使用Model類的構建塊應該可以將dist[,]數組重新定義爲一組取決於已經移動的總距離/時間的函數。

爲了完整起見,here是另一篇關於使用OML的TSP制定的有趣文章。