您的位置:首页 > 编程语言 > MATLAB

matlab实现蒙特卡洛方法求解线性规划问题

2018-02-01 22:27 651 查看
蒙特卡洛法:

    某些问题而言,利用穷举法,会导致计算量过大。蒙特卡洛就是随机生成很多解,然后不断寻找更好的解。到了一定次数,结果就会很接近。

具体问题:

目标函数写成Max

条件:条件<=0(代码里面假设有四个)

代码:

首先根据目标和条件给定函数mengte()

function  [f,g]=mengte(x);

f=目标函数

g=[条件1

条件2

条件3

条件4

]

然后,再写出关于蒙特卡洛的具体程序M

p0=0;

for i=1:10^6

x=99*rand(5,1)
%5行1列的随机数,由于x的范围在1~99,所以乘99

x1=floor(x0);x2=ceil(x0);
%floor向下求整,ceil向上求整,符合整数要求

[f,g]=mengte[x1];

     if  sum(g<=0)==4
%满足规划要求条件

          if p0<f

             x0=x1;p0=f;       %如果有更好地结果,进行替换

         end 

      end 

[f,g]=mengte[x2];

     if  sum(g<=0)==4

          if p0<f

             x0=x1;p0=f

         end 

      end 

end

x0,p0

end

程序参考:《数模大全》司守奎
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐