matlab-整数规划(非线性规划之蒙特卡洛法,随机取样法

首先编写M 文件mengte.m 定义目标函数f 和约束向量函数g,程序如下:
function [f,g]=mengte(x);%定义目标函数f和约束向量函数g f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-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];注:文件名一定要与定义的函数名一致!
编写M文件mainint.m如下求问题的解:
rand(\'state\',sum(clock)); p0=0; tic %tic表示计时的开始,toc表示计时的结束 for i=1:10^6 x=99*rand(5,1) %rand函数产生0-1之间的随机数,表明了0=<xi<=99 x1=floor(x); %floor朝负无穷方向取整 x2=ceil(x); %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=x2;p0=f; end end end x0,p0 toc

MATLAB中四个取整函数具体使用方法如下:

Matlab取整函数有: fix, floor, ceil, round.

fix

朝零方向取整,如fix(-1.3)=-1; fix(1.3)=1;

floor

朝负无穷方向取整,如floor(-1.3)=-2; floor(1.3)=1;

ceil

朝正无穷方向取整,如ceil(-1.3)=-1; ceil(1.3)=2;

round

四舍五入到最近的整数,如round(-1.3)=-1;round(-1.52)=-2;round(1.3)=1;round(1.52)=2。