该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
程序如下:
clear all
clc
tic
popsize=15;
lanti=10;
maxgen=50;
cross_rate=0.4;
mutation_rate=0.1;
a0=0.7;
zpopsize=5;
bestf=0;
nf=0;
number=0;
I=imread('C:\Users\Yu\Pictures\feiji.jpg');
if numel(I)>2
I=rgb2gray(I);
end
[m,n]=size(I);
p=imhist(I);
p=p';
p=p/(m*n);
figure(1);
subplot(1,2,1);
imshow(I);
title('yuantu');
hold on
pop=2*rand(popsize,lanti)-1;
pop=hardlim(pop);
for gen=1:maxgen
[fitness,yuzhi,number]=fitnessty(pop,lanti,I,popsize,m,n,number);
if max(fitness)>bestf
bestf=max(fitness);
nf=0;
for i=1:popsize
if fitness(1,i)==bestf
v=i;
end
end
yu=yuzhi(1,v);
elseif max(fitness)==bestf
nf=nf+1;
end
if nf>=20
break;
end
A=shontt(pop);
f=fit(A,fitness);
pop=select(pop,f);
pop=coss(pop,corss_rate,popsize,lanti);
pop=mutation_compute(pop,mutation_rate,lanti,popsize);
a=shonqt(pop);
if a>a0
zpop=2*rand(zpopsize,lanti)-1;
zpop=hardlim(zpop);
pop(popsize+1,popsize+zpopsize)=zpop(:,:);
[fitness,yuzhi,number]=fitnessty(pop,lanti,I,popsize,m,n,number);
A=shontt(pop);
f=fit(A,fitness);
pop=select(pop,f);
end
if gen==maxgen
[fitness,yuzhi,number]=fitnessty(pop,lanti,I,popsize,m,n,number);
end
end
imshow(I);
subplot(1,2,2);
fresult(I,yu);
title('fazhifengehou');