📄 example61.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% 初始化
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%v=[0 0 0];
va=str2num(va);
vb=str2num(vb);
vc=str2num(vc);
T_start=str2num(T_start);
lanmda=str2num(lanmda);
v=[va vb vc];
W=[0 0.55 0.45;0.55 0 0.2;0.45 0.2 0];
B=[0.65 0.3 0.4];
Energy=[];
Wend=100;
% T_start=3;
T_end=0.5;
% lanmda=0.8;
T=T_start;
x=round(rand*3);
if x==0
x=3;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% 模拟退火
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
while(T>=T_end)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% 随机抽样过程
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
while (Wend>=0)
x=round(rand*3);
if x==0
x=3;
end;
if x==1
uvx=v(2)*W(1,2)+v(3)*W(1,3)-B(1);
end;
if x==2
uvx=v(1)*W(2,1)+v(3)*W(2,3)-B(2);
end;
if x==3
uvx=v(1)*W(1,3)+v(2)*W(2,3)-B(3);
end;
if (uvx>=0)|((uvx<0)&((1/(1+exp(-uvx/T)))>rand/2))
v(x)=1;
end;
Ene=-W(1,2)*v(1)*v(2)-W(1,3)*v(1)*v(3)-W(2,3)*v(2)*v(3)+B(1)*v(1)+B(2)*v(2)+B(3)*v(3);
Energy=[Energy Ene];
[ss zz]=size(Energy);
if zz>=6
if (Energy(zz)==Energy(zz-1))&(Energy(zz-1)==Energy(zz-2))&(Energy(zz-2)==Energy(zz-3))&(Energy(zz-3)==Energy(zz-4))&(Energy(zz-4)==Energy(zz-5))
break;
break;
end;
end;
Wend=Wend-1;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% 退火过程
%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
T=T*lanmda;
end;
figure('name','能量曲线','numbertitle','off');
i=1:zz;
plot(i,Energy)
title('E');
xlabel('steps');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -