📄 danchunxing.m
字号:
u=1.6;v=0.4;h=0.1;
x0=[10 11 10 1];
e1=[1 0 0 0];
e2=[0 1 0 0];
e3=[0 0 1 0];
e4=[0 0 0 1];
x1=x0+h*e1;
x2=x0+h*e2;
x3=x0+h*e3;
x4=x0+h*e4;
A=[x0 x1 x2 x3 x4]; %设初值
N=0;qh=1;ql=2; %循环次数
while abs(qh-ql)>0.001*abs(ql) | N<=100
q1=Q(A(1),A(2),A(3),A(4));
q2=Q(A(5),A(6),A(7),A(8));
q3=Q(A(9),A(10),A(11),A(12));
q4=Q(A(13),A(14),A(15),A(16));
q5=Q(A(17),A(18),A(19),A(20));
q=[q1,q2,q3,q4,q5]; %计算目标函数值
[xh,i]=max(q);[xl,j]=min(q); %计算最好点和最坏点
[xg,m]=second(q1,q2,q3,q4,q5); %计算次坏点
k=1;
xG=[];xH=[];xL=[];
for k=1:4
xH(k)=A(4*i-4+k);
end;
for k=1:4
xG(k)=A(4*m-4+k);
end;
for k=1:4
xL(k)=A(4*j-4+k);
end;
for k=1:4
xc(k)=(A(k)+A(k+4)+A(k+8)+A(k+12)+A(k+16)-xH(k))/4;
end;
xR=2*xc-xH; %计算反射点
qr=Q(xR(1),xR(2),xR(3),xR(4));
ql=Q(xL(1),xL(2),xL(3),xL(4));
qg=Q(xG(1),xG(2),xG(3),xG(4));
qh=Q(xH(1),xH(2),xH(3),xH(4));
if qr<qg
xE=(1-u)*xH+u*xR;
for k=1:4
A(4*i-4+k)=xE(k);
end;
end;
if qr>qg
xS=(1-v)*xH+u*xR;
qs=Q(xS(1),xS(2),xS(3),xS(4));
if qs>qg
for k=1:4
A(k)=(xL(k)+A(k))/2;
A(k+4)=(xL(k)+A(k+4))/2;
A(k+8)=(xL(k)+A(k+8))/2;
A(k+12)=(xL(k)+A(k+12))/2;
A(k+16)=(xL(k)+A(k+16))/2;
end;
end;
end; %得到新的单纯形
N=N+1;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -