日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蒙特卡洛模型——有约束的非线性规划问题

發布時間:2023/12/31 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蒙特卡洛模型——有约束的非线性规划问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

蒙特卡洛模型——有約束的非線性規劃問題

題目:

例:求f(x)=x1?x2?x3的最大值s.t{?x1+2x2+2x3?0x1+2x2+2x3?7210?x2?20x1?x2=10\text{例:求}f\left( x \right) =x_1\cdot x_2\cdot x_3\text{的最大值} \\ s.t\begin{cases} -x_1+2x_2+2x_3\geqslant 0\\ x_1+2x_2+2x_3\leqslant 72\\ \,\, 10\leqslant x_2\leqslant 20\\ \,\, x_1-x_2=10\\ \end{cases} :f(x)=x1??x2??x3?的最大值s.t???????????x1?+2x2?+2x3??0x1?+2x2?+2x3??7210?x2??20x1??x2?=10?
蒙特卡洛模型的思路:
1.求變量受限的大致范圍;
2.在上述的范圍中用隨機數生成若干組實驗點,先驗證是否滿足所有約束條件。若滿足則將其劃分到行組,再從組中找到的函數的最大值(最小值)。

matlab代碼部分

蒙特卡洛模擬實現代碼

clc;clear tic n=10000000; x1=unifrnd(20,30,n,1); x2=x1-10; x3=unifrnd(-10,16,n,1); fmax=-inf; for i=1:nx=[x1(i),x2(i),x3(i)];if -x(1)+2*x(2)+2*x(3)>=0 && x(1)+2*x(2)+2*x(3)<=72result=x(1)*x(2)*x(3);if result>fmaxfmax=result;X=x;endend end disp(['蒙特卡洛模擬的結果為:',num2str(fmax)]); disp(['此時x1,x2,x3的值為',num2str(X)]); toc

代碼輸出結果

我用一個表格來表示這次求出來的結果

類型Value
最大值3445.5138
x122.6222
x212.6222
x312.0666

收獲與心得

在求解非線性規劃的問題時,我們還可以通過蒙特卡洛方法來解決,我們可以對比兩次的結果幾乎差不多,尤其是在蒙特卡洛模擬次數n較大時,模擬的結果更加貼近現實。還有為了提高結果的運算過程和精度,我們可以通過縮小隨機生成變量的范圍來實現,大家還可以通過for循環來優化算法。還有蒙特卡洛算法具有隨機性,所以每一次的結果有差異,但是差異可以忽略,結果幾乎差不多。
剛開始寫博客,作為一名預備碼農,數理愛好者,希望和廣大數模愛好者、matlab愛好者等交流、分享學習過程,共同進步!

總結

以上是生活随笔為你收集整理的蒙特卡洛模型——有约束的非线性规划问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。