蒙特卡罗非线性规划求解-算法程序.pdf
文本预览下载声明
蒙特卡洛——非线性规划求解
蒙特卡洛原理及思想:
当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以
通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它
们作为问题的解。这就是蒙特卡罗方法的基本思想。蒙特卡罗方法通过抓住事物运动的几何
数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模
型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。可以把
蒙特卡罗解题归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立
各种估计量。
案例①求曲线围成的面积
2
y x 、y 12x x
与 轴在第一象限围成一个曲边三角形。设计一个随机实验,求该
图形面积的近似值。
随机试验思路:
[0,12][0,9] 7
在矩阵区域 上产生服从均匀分布的10 个随机点,统计随机点落在去边三
角形的频数,则曲边三角形的面积近似为上述矩形的面积乘以频率。
附录1 运行环境:Matlab2011a
Clear%该程序以二维图面积为例
clc%友情提示,运行后别点开x 和y 表格,否者matlab 会炸
x=unifrnd(0,12,[1,1000000]);%随机生成0 到12 一百万个数
y=unifrnd(0,9,[1,1000000]);%随机生成0 到9 一百万个数
pinshu=sum(y=x.^2x=3)+sum(y=12-xx=3);%条件
% y=x.^2x=3 为第一个函数,x3 为限制条件;y=12-xx=3 为第二个函数, x=3 为限制
条件。该步骤以sum ( )形式将函数和限制条件录入
apply_S=12*9*pinshu/10^6%结果,12*9 为 x 和 y 最大变量范围相乘,10^6 中的6 次方与
unifrnd(0,12,[1,1000000]) 中的1000000 对应
%画区域图其他函数参照以下画图程序即可,该图可不画,但画了更好
h1=ezplot(y-x.^2);
hold on
h2=ezplot(y-12+x);
a=0:0.01:12;
b=0:0.01:9;
[x0,y0]=meshgrid(a,b);
z1=y0-x0.^2;
z2=y0-12+x0;
ind=(z1=0z2=0);%y=x.^2 和y=12-x
h=plot(x0(ind),y0(ind),.r,MarkerSize,2);%画出非线性方程组区域
axis([0 12 0 9])%x,y 轴区间
title( 区域图)
legend([h1(1);h2(1);h], 曲线1,曲线2,可行域)
区域图及运行结果
apply_S=49.4874
案例②求非线性函数最优解
非线性整数规划:
max z x 2 x 2 3x 2 4x 2 2x 2 8x 2x 3x x 2x
1 2 3 4 5 1 2 3 4 5
0 x 99,i 1,...,5
i
x x x x x 400
1 2 3 4 5
s.t .x 2x 2x x 6x 800
显示全部