2014-01-29 99 views
1

我得到了一個我無法解決的優化問題,因爲我沒有任何Python或解決問題的好技能。Python - 優化離散函數算法(適用於MS Excel)

在Excel中有一個解算器,在那裏我可以選擇對象小區是最大化,我的約束(只是整數0和1)和細胞(excactly )求解器應嘗試它演化算法(在Excel中需要大約2分鐘)。

我將Excel公式轉換爲Python,但現在我不知道如何在Python中實現求解器。

我得到一個函數,它的返回值應該最大化,我該怎麼做?

我的功能:earnings = energy_yield(cleanings) - cleaning_costs(# of cleanings)

energy_yield當清潔出現上升。當額外的清潔發生

cleaning_costs上升,我想找到最好的清潔日期(數量和確切日期,因此365個變量,每個vaiables一天)

0 = no cleaning 
1 = cleaning 

cleanings[]是365名單零,我必須填補與最好的位置。然後將 cleanings傳遞給我的函數。

感謝您的幫助。 Timo

+0

請發表您已經嘗試過的東西,你卡在哪裏以及你的期望輸出是什麼。 – IanAuld

+1

哪個求解器?它是做什麼的? – mojo

+0

我試過使用scipy.optimization.anneal函數,但我不知道在哪裏放置約束並告訴函數,哪些值是變化的變量。 – remi

回答

1

優化解算器是一項複雜的技術。 我認爲你不想實現它,而是你正在尋找一個爲你的特定問題實現一個優化求解器的庫。所以假設你的問題是「你可以爲我的問題推薦哪個優化庫」,我說如果不知道問題的確切性質(例如你的約束如何),很難回答。

例如,如果你的約束和目標函數是在輸入參數線性它們可以精確地與線性規劃解算器恰好的時間非常短的量來解決(例如形式C2 = Y2 + A2的公式)(應該是幾乎是即時的,只有少量的限制)。 如果是這樣的話,那麼你可能想要谷歌的「python線性規劃求解器」,我相信有相當多的免費庫。

現在一般來說,不可能解決任意約束的任意優化問題(嘗試所有可能性不足)。我不確定演化求解器如何在Excel中工作,但我認爲它使用某種形式的機器學習來給你一個近似的答案。 我不知道是否有一個流行的庫在python中實現這樣的算法,但是再一次,它值得Google搜索。