zoukankan      html  css  js  c++  java
  • 蒙特卡洛法

    蒙特卡洛法

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

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

    撒豆子

    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
  • 相关阅读:
    python主要探索函数
    数据分析分析方法
    监控hadoop任务结果shell脚本
    shell编程
    hadoop介绍
    数据探索
    Python数据分析简介
    数据挖掘基础篇之整体思路
    sqlAlchemy
    python md5 加密
  • 原文地址:https://www.cnblogs.com/TreeDream/p/8297803.html
Copyright © 2011-2022 走看看