蒙特卡洛法非线性整数规划

在这里插入图片描述
code

function [f,g]=mengte(x);
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(1)=sum(x)-400;
g(2)=x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800;
g(3)=2*x(1)+x(2)+6*x(3)-200;
g(4)=x(3)+x(4)+5*x(5)-200;

main

rand('state',sum(clock));
p0=0;
tic
for i=1:10^7
   x1=randi([0,99],5,1);

    [f,g]=mengte(x1);
    if sum(g<=0)==4
       if p0<=f
          x0=x1;p0=f;
       end
    end
end
x0,p0
toc

采样10000000次,用时45s,精度2%。
精度不行啊。

猜你喜欢

转载自blog.csdn.net/qq_35608277/article/details/83926479