r2=unifrnd(0,10,100000,1); %产生x2的n*1随机矩阵 & L. B% C\" R& X+ S2 g$ S- B9 T
sol=[r1(1) r2(1)]; $ e8 L3 g6 A! L# F# V- j
z0=-inf; %z0初始化# Z& ?4 h, o2 P y5 b
f=inline('-2*x(1)^2-x(2)^2+x(1)*x(2)+8*x(1)+3*x(2)','x'); %目标函数# k1 r. d% B% W, o
for i=1:100000 9 J# v9 b; ^( r, l9 S
x1=r1(i);: ?3 J1 y\" A+ f; R$ o
x2=r2(i);+ o, ] M; e& E; u/ o3 d! v
y=yueshu([x1 x2]); . {0 M7 ]7 f9 j! K5 l
if y==1 %当满足约束条件时; E' H. v# Y\" U5 N
z=f([x1 x2]); , h& E T# e* x' k$ Z$ i\" c
if z>=z0 %求最大值 : f4 H( r% o. W; h
z0=z;\" ?& C1 s9 @7 O8 | K
sol=[x1 x2]; %最值解2 L' K5 v/ ]/ r5 V1 M# E# Q$ S
end7 V3 N6 [% c/ t1 H. p
end * h' a4 r Y/ B& f+ z; c
end, C: g5 [3 e5 b\" U j G. ?: [! p
sol 2 ~3 m/ |; }( T, [0 ^1 _% e
z0
复制代码
这个算法的基本思想是在指定的随机范围内随机生成大量的候选解,然后根据约束条件筛选出符合条件的解,并在这些解中找到目标函数的最大值。整个过程是一种蒙特卡洛随机搜索的思想,因此结果可能因为随机性而有一定的不确定性。这种方法的优点在于简单、易于实现,但缺点是可能收敛速度较慢。4 f/ a3 k. w* F0 ^6 O# @$ R: B u7 P: E
3 \& K4 ?0 A' [+ t* V: m' P7 m$ ^' \4 g( j" T6 {/ m. `! F4 ^
# [' o+ R2 P/ y