% ----------------------- README ------------------------------------------
%% 清空环境
clc
clear
close all
%% 载入图像及其计算
I = imread('KimSoHyun.jpg');
% I=imread('Barbara.tif');
% I=imread('lena.bmp');
[~,~,n] = size(I);
if n==3 % 彩色灰度化
I = rgb2gray(I);
end
garynum = 255; % 灰度级为255
hist = imhist(I);
total = 0;
for i=0:255
total = total+hist(i+1);
end
hist1 = hist/total;
HT = 0;
for i=0:255
if hist1(i+1)==0
temp = 0;
else
temp = hist1(i+1)*log(1/hist1(i+1));
end
HT = HT+temp;
end
tic
%% 遗传算法参数
maxgen=500; %进化代数
sizepop=500; %种群规模
pcross=[0.9]; %交叉概率
pmutation=[0.2]; %变异概率
eps=1; % 二进制个数需要
bound=[0 255]; %变量范围
NC = size(bound,1);
num=max(ceil(log2((bound(2)-bound(1))/eps + 1)));
lenchrom=NC*num; %变量字串长度
trace=[];
%% 个体初始化
individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %种群结构体
avgfitness=[]; %种群平均适应度
bestfitness=[]; %种群最佳适应度
bestchrom=[]; %适应度最好染色体
% 初始化种群
for i=1:sizepop
individuals.chrom(i,:)=Code(lenchrom,bound); %随机产生个体
x=individuals.chrom(i,:);
individuals.fitness(i)=fun(x,I,bound,lenchrom,hist1,HT); %个体适应度
end
%找最好的染色体
[bestfitness bestindex]=max(individuals.fitness);
bestchrom=individuals.chrom(bestindex,:); %最好的染色体
avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度
% 记录每一代进化中最好的适应度和平均适应度
chrom = [];
%% 进化开始
for i=1:maxgen
% 选择操作
individuals=Select(individuals,sizepop);
avgfitness=sum(individuals.fitness)/sizepop;
% 交叉操作
individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);
% 变异操作
individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,bound);
% 计算适应度
for j=1:sizepop
x=individuals.chrom(j,:);
individuals.fitness(j)=fun(x,I,bound,lenchrom,hist1,HT);
end
%找到最小和最大适应度的染色体及它们在种群中的位置
[newbestfitness,newbestindex]=max(individuals.fitness);
[worestfitness,worestindex]=min(individuals.fitness);
% 代替上一次进化中最好的染色体
if bestfitness<newbestfitness
bestfitness=newbestfitness;
bestchrom=individuals.chrom(newbestindex,:);
end
individuals.chrom(worestindex,:)=bestchrom;
individuals.fitness(worestindex)=bestfitness;
avgfitness=sum(individuals.fitness)/sizepop;
chrom = [chrom;bestchrom];
% trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度
trace(i) = bestfitness;
end
%进化结束
toc
%% 结果显示
[r ~]=size(trace);
gen = 1:maxgen;
plot(gen,trace(1,:),'Color','#1A3B30','LineWidth',3);
% hold on
% plot(gen,trace(2,:),'-.','Color','#509579','LineWidth',3);
% plot(gen,trace(3,:),'--','Color','#99BDBD','LineWidth',3);
% plot(gen,trace(4,:),':','Color','#C6E3D8','LineWidth',3);
xlabel('Generation','FontName','Times New Roman','FontSize',12);
ylabel('Fitness Value','FontName','Times New Roman','FontSize',12);
title('SGA','FontName','Times New Roman','FontSize',12);
% legend('1','2','3','4','FontName','Times New Roman','FontSize',11)
[x,y] = size(I);
img = zeros(x,y);
bestchrom=Dec1(bestchrom,bound(1),bound(2),lenchrom);
bestchrom
for i=1:x
for j=1:y
if I(i,j)<bestchrom
img(i,j) = 0;
else
img(i,j) = 255;
end
end
end
figure
subplot(121)
imshow(I);
subplot(122)
imshow(img)
Matlab领域
- 粉丝: 3w+
- 资源: 3764
最新资源
- 风力发电MPPT并网模型的策略模块封装及步长选择策略:变步长与固定步长两种策略对比,风力发电mppt并网模型,策略模块已mask封装,可以选定步长和变步长2种策略 ,核心关键词:风力发电; MPP
- 基于51单片机的Proteus仿真:人数检测显示与报警系统实战应用,基于51单片机的人数检测显示及报警检测Proteus仿真 ,基于51单片机;人数检测显示;报警检测;Proteus仿真,"基于51单
- 基于STM32F系列开发的高效稳定企业级变频器方案-原理图与硬件设计说明大全,基于STM32开发变频器-企业级成熟量产方案 包含:变频控制板-原理图、PCB 变频逆变器功率板-原理图 PCB 控制板
- 基于事件触发模型的倒立摆控制仿真实验-Simulink模型与详细参考文献,【有参考文献】事件触发模型 可实现倒立摆控制仿真实验 simulink模型可直接运行 含详细参考文献 ,关键词:事件触发模
- 智能小车路径规划算法:融合RRT与Dubins及A*方法的创新路径规划策略,智能小车路径规划 算法:RRT与Dubins相结合的方法,混合A*与Dubins相结合的方法 实现智能小车最短路径规划
- 基于FOC、SMO与PLL融合技术的Simlink仿真模型研究,FOC+SMO+PLL的Simlink仿真模型 ,关键词:FOC(Field Oriented Control);SMO(Smooth
- 三相异步电机矢量控制仿真模型的构建与性能分析,三相异步电机矢量控制仿真模型 ,核心关键词:三相异步电机;矢量控制;仿真模型;分号分隔的关键词为:三相异步电机;矢量控制技术;仿真模型构建 ,三相异步电
- 模拟IC设计学习与实战:探索知名大厂DCDC电路,高转换效率标准单元库器件与Cadence环境下的原理图实战应用,模拟IC模拟IC设计,集成电路,知名大厂的逆向DCDC电路(buck-boost功能)
- Boost电路电压闭环仿真研究:包含PI控制与零极点补偿器的模型及其性能分析,boost电路电压闭环仿真 有pi控制和零极点补偿器两种 仿真误差0.00705,仿真波形如图二所示 所搭建的模型输入电压
- TCR+FC型SVC无功补偿双封装Simulink仿真模型详解与实例资料集锦,TCR+FC型svc无功补偿simulink仿真模型,一共两个仿真,如下图所示,两个其实大致内容差不多,只是封装不同,有详
- COMSOL模拟动水条件下裂隙注浆扩散过程:粘度时变影响研究,COMSOL模拟动水条件联系裂隙注浆扩散,考虑粘度时变 ,核心关键词:COMSOL模拟; 动水条件; 裂隙注浆扩散; 粘度时变; 注浆扩散
- 分布式电源接入对配电网的潮流影响分析:Matlab程序模拟的探索与探索 ,分布式电源接入对配电网的影响(matlab程序) 分布式电源的接入使得配电系统从放射状无源网络变为分布有中小型电源的有源网络
- XC7V2000T与TMS320C6678设计文件集:原理图、PCB等齐全,验证通过,直接生产使用,XC7V2000T+TMS320C6678设计文件,包含原理图,PCB等文件,已验证,可直接生产
- 基于STM32G431主控的最新磁链观测器优化方案:无感foc浮点运算,弦波pmsm无刷电机控制源代码集,卓越效果无库文件原理图解,磁链观测器,无感foc ,弦波 pmsm 无刷电机控制方案 最新优
- 基于Matlab的无线充电仿真:LCC谐振器与不同拓扑的磁耦合谐振无线电能传输系统解析与建模,无线充电仿真 simulink 磁耦合谐振 无线电能传输 MCR WPT lcc ss llc拓扑补偿
- 直流无刷电机:高效磨头加工利器,直径38mm,转速高达25000rpm,功率达200W,直流无刷电机,直径38mm,径向长23.8mm,转速25000rpm,功率200W,可用于磨头加工 ,核心关键
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈