1. 程式人生 > >04 Monte Carlo方法求解非線性規劃(02)

04 Monte Carlo方法求解非線性規劃(02)


0.說明

  • 本文是雞年新年計劃的內容之一:每週學習一個數學模型,寫一篇總結,記錄自己學到的東西和遇到的問題。
  • 這些文章並不是相關模型的全面介紹,也不是從最基礎的開始,所以不一定適合數學模型的beginner,但都是些很實際的技術,希望能幫到你。
  • 本文的重點是,分析一個具體的Monte Carlo方法得到的非線性規劃的最優解、最優值和執行時間的特點。

1.向大家求助的問題

關於下面的這些問題,我迫切的需要你的幫助,哪怕是一些網址和資訊,所以,感謝你給我發郵件

[email protected]或直接加我QQ好友:117829132(請一定註明“幫助你”)或直接在評論中留言。

1.Monte Carlo方法求解非線性規劃,取多少個點是至關重要的,歡迎你告訴我更多實用的、確定點數的方法。

2.一個線性規劃模型記為M,限制其中某些(或全部)決策變數只能取整數後得到一個整數線性規劃,記為M’。即使M有最優解,M’也有可能甚至沒有可行解,為什麼?

本文所述的程式和題目可以見03 Monte Carlo方法求解非線性規劃(01)

1. 每個單次的執行時間分析

全部3000個單次的執行時間如下圖:其中橫軸是每個單次的序號,縱軸是每個單次的執行時間。
每個單次的執行時間


上圖顯示出了幾個現象:
1.在全部3000個單次中,大部分單次的執行時間都是12.3秒左右,但前200次的執行時間差異較大。

原因未知,但猜測的原因可能是與MATLAB的隨機數生成演算法有關,或者,與程式中每個單次開始前初始化隨機數種子rand( ‘state’, sum(clock));有關。

如果是因為MATLAB隨機數生成演算法的原因,那麼,在以後的模擬當中,如果要使用單次執行時間估計全部的執行時間,那麼應該先執行幾個單次,然後取平均值。03 Monte Carlo方法求解非線性規劃(01)的例子就是使用了一個單次的時間乘以3000進行估計的,估計的時間比實際用時多了5%左右(共多了30多分鐘)。

2.每隔800次左右就會出現一個明顯的”坑“(如上圖中三個黑色圓圈所示),執行時間明顯下降,且兩個坑之間的間隔非常規律,始終是800次左右。

原因同樣未知,但同樣猜測,原因可能是與MATLAB的隨機數生成演算法有關,或者,與程式中每個單次開始前初始化隨機數種子rand( ‘state’, sum(clock));有關。