蒙特卡洛法
其實所謂的蒙特卡洛法就是我們的隨機化算法啊,最簡單的應用就是撒豆子求面積了。
那就舉兩個栗子,一個就是撒豆子,一個是非線性整數規劃問題。
撒豆子
?
clc,clear x = unifrnd(0,12,[1,1e7]); y = unifrnd(0,9,[1,1e7]); ? cnt = sum(y<x.^2&x<=3) + sum(y<12-x&x>=3); s = 12*9*cnt/1e7;?
?
非線性整數規劃
可以算一個概率,假設目標函數落在高值區域的概率為? 、? ,則當枚舉? 個點后,至少有一個點能落在高值區域的概率為:
?
% mente.m function [f,g] = mente(x) f = x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)^2-8*x(1)-2*x(2)-3*x(3)-x(4)-2*x(5); g = [sum(x)-400x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-8002*x(1)+x(2)+6*x(3)-200x(3)+x(4)+5*x(5)-200];% test.m rand('state',sum(clock)); p0 = 0; tic for i = 1:10^6x = randi([0,99],1,5);[f,g] = mente(x);if all(g<=0)if p0<fx0 = x;p0 = f;endend end toc?
轉載于:https://www.cnblogs.com/TreeDream/p/8297803.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
- 上一篇: JavaScript学习-1
- 下一篇: 【easy】206. Reverse L