根据数学公式求解非线性规划
Max X=-2X12 -X22+X1X2+8X1+3X2S.t.Zhu.m为主程序文件Yueshu.m为约束文件返回1服从约束 返回0不服从function y=yueshu(x)if abs(3*x(1)+x(2)-10)<=0.5
y=1;
else
y=0;
end%MC搜索
%复杂度低随机性强
r1=unifrnd(0,10,100000,1); %产生x1的n*1随机矩阵
r2=unifrnd(0,10,100000,1); %产生x2的n*1随机矩阵
sol=;
z0=-inf; %z0初始化
f=inline('-2*x(1)^2-x(2)^2+x(1)*x(2)+8*x(1)+3*x(2)','x'); %目标函数
for i=1:100000
x1=r1(i);
x2=r2(i);
y=yueshu();
if y==1 %当满足约束条件时
z=f();
if z>=z0 %求最大值
z0=z;
sol=; %最值解
end
end
end
sol
z0这个算法的基本思想是在指定的随机范围内随机生成大量的候选解,然后根据约束条件筛选出符合条件的解,并在这些解中找到目标函数的最大值。整个过程是一种蒙特卡洛随机搜索的思想,因此结果可能因为随机性而有一定的不确定性。这种方法的优点在于简单、易于实现,但缺点是可能收敛速度较慢。
页:
[1]