|
本规则是元胞自动机的退火规则,不是智能算法中的模拟退火法。
%元胞自动机退火规则(参见《物理系统的元胞自动机模拟》P28)
clear;clc;close all
n=200;
p=0.5;
P=rand(n)>p;
P0=zeros(n+2);
imh=imshow(1-P);
ti=title('迭代次数:','Fontsize',14,'Fontname','Times New Roman');
for t=1:n*2
P0(2:end-1,2:end-1)=P;
for i=2:n+1
for j=2:n+1
Sum(i,j)=P0(i-1,j-1)+P0(i-1,j+1)+P0(i-1,j)...
+P0(i,j-1)+P0(i,j)+P0(i,j+1)...
+P0(i+1,j-1)+P0(i+1,j)+P0(i+1,j+1);
switch Sum(i,j)
case {4,6,7,8,9}
P(i-1,j-1)=1;
otherwise
P(i-1,j-1)=0;
end
end
end
set(imh,'cdata',1-P)
set(ti,'String',['迭代次数:',num2str(t)]);
drawnow
pause(0.01)
if t==1
A=P;
elseif t==72
B=P;
elseif t==270
C=P;
end
end
figure
subplot(131)
imshow(1-A)
title('初始构形')
subplot(132)
imshow(1-B)
title('t=72')
subplot(133)
imshow(1-C)
title('t=270')
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-22 22:58
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社