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

蒙特卡洛法:

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

具体问题:

目标函数写成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

程序参考:《数模大全》司守奎

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值