码迷,mamicode.com
首页 > 其他好文 > 详细

蒙特卡洛法

时间:2018-01-17 00:18:26      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:svg   lock   span   图片   end   proc   state   fun   toc   

蒙特卡洛法

其实所谓的蒙特卡洛法就是我们的随机化算法啊,最简单的应用就是撒豆子求面积了。

那就举两个栗子,一个就是撒豆子,一个是非线性整数规划问题。

撒豆子

技术分享图片

 

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)-400
    x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800
    2*x(1)+x(2)+6*x(3)-200
    x(3)+x(4)+5*x(5)-200];
    
% test.m
rand(state,sum(clock));
p0 = 0;
tic
for i = 1:10^6
    x = randi([0,99],1,5);
    [f,g] = mente(x);
    if all(g<=0)
        if p0<f
            x0 = x;
            p0 = f;
        end
    end
end
toc

 

蒙特卡洛法

标签:svg   lock   span   图片   end   proc   state   fun   toc   

原文地址:https://www.cnblogs.com/TreeDream/p/8297803.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!