📄 untitled3.m
字号:
close all
clear
clc
s=sprintf('程序运行中...')
T1=clock;
L=-2*pi;R=2*pi;h=0.01;disp(s)
X=qujian(L,R,h);
if X==0
fprintf('方程在区间[%g,%g]内无实根\n',L,R)
return
else
pause(1)
[m,n]=size(X);
for M=1:m
N=1;T=100;T0=0.001;k=100;
a=0.5;step=0.005;
L=X(M,1);H=X(M,2);
x1=L+rand*(H-L);
while T>T0
for t=1:k
f1=abs(f(x1));
x2=x1+step*(rand-0.5);
while x2<L|x2>H
x2=x1+step*(rand-0.5);
end
f2=f(x2);
if (f2-f1)<0
x1=x2;
elseif exp((f1-f2)/T)>rand
x2=x2;
end
temp(t,1)=x1;temp(t,2)=abs(f(x1));
end
[V i]=min(temp(:,2));
x1=temp(i,1);ret(N)=x1;
se(N)=V;N=N+1;
T=a*T;step=a*step;
end
[fmin I]=min(se);x=ret(I);
solution(M,:)=[x,fmin];
tt=1:N-1;
if M==m
plot(tt,se)
xlabel('进化代数')
ylabel('目标函数值')
figure
plot(tt,ret)
xlabel('进化代数')
ylabel('搜索变量值')
end
end
T2=clock;
CoseTime=T2-T1;
if CoseTime(6)<0
CoseTime(6)=CoseTime(6)+60;
CoseTime(5)=CoseTime(5)-1;
end
if CoseTime(5)<0
CoseTime(5)=CoseTime(5)+60;
CoseTime(4)=CoseTime(4)-1
end
solution
str4=sprintf('程序运行耗时%d时%d分%d秒',CoseTime(4),CoseTime(5),CoseTime(6));
disp(str4);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -