2013-05-30 106 views
7

我試圖使用scipy.optimize包來優化離散優化問題(全局優化)。根據文檔,在scipy.optimize.anneal中執行的模擬退火應該是相同的一個很好的選擇。但我不知道如何強制優化器僅搜索搜索空間的整數值。有人可以幫忙嗎?python中的離散優化

一個說明性的例子:

f(x1,x2) = (1-0.4*x1)^2 + 100*(0.6*x2 -0.4*x1^2)^2

where, $x1, x2 \in I$

回答

4

我檢查scipy.optimize.anneal,我看不到的方式來使用離散值。自己實現它的方法是創建一個自定義的「移動」功能,但是您必須指定日程安排(通過字符串)的方式阻止您這樣做。

我認爲這是一個很大的錯誤,如果你可以通過一個自定義的時間表類作爲參數,你可以定製它使用離散變量和更多的東西。

我找到的解決方案是使用這個其他執行,而不是:因爲你要提供修改狀態的功能 https://github.com/perrygeo/python-simulated-annealing

,你有什麼價值可以有控制,或者如果它們是不連續的或連續。

希望它有幫助。

+0

非常感謝..超級:我正在尋找這樣的東西。與此同時,我自己實施了SA以獲得您所說的控制權 – goofd