基于遗传算法的kmeans
Ⅰ matlab怎么运行基于遗传算法的vrp
function [x fx string]=fun_SuiJiSuanFa2(N,genLenth,Pc,Pm,downbound,upbound,generation)
%[x fx string]=fun_SuiJiSuanFa2(6,16,0.7,0.01,-3,3,100)
%f 表示函数
%N表示染色体种群大小
%genLenth表示染色体长度
%Pc表示交叉概率
%Pm表示突变概率
%downbound
%upbound
%generation循环代数
%进制编码,此处编写为二进制
num=2;
initdata=randi([0 num-1],N,genLenth);
%二进制编码的权值
weight=(num).^(genLenth/2-1:-1:0);
weights=repmat(weight,N,1);
%保存每代的最好值和平均值,
meanally=zeros(1,generation);
maxally=zeros(1,generation);
Nowx=zeros(generation,genLenth);
for k=1:generation
%解码后的整数
allx1=sum(initdata(:,1:genLenth/2).*weights,2);
allx2=sum(initdata(:,genLenth/2+1:end).*weights,2);
%映射到取值范围
delt=(upbound-downbound)/(num^(genLenth/2)-1);
allx1=allx1.*delt+downbound;
allx2=allx2.*delt+downbound;
%染色体的适应性
ally=f(allx1,allx2);
%平均值,最大值
meanally(k)=mean(ally);
maxally(k)=max(ally);
%找下标,确定是哪条染色体
index=find(ally==maxally(k));
Nowx(k,:)=initdata(index(1),:);
%最大值没有提高就取上次的
if(k>=2&&maxally(k)<maxally(k-1))
maxally(k)=maxally(k-1);
Nowx(k,:)=Nowx(k-1,:);
end
%染色体的适应性比率
ratio=ally./sum(ally);
%交叉,变异
%??交叉几个,从第几个开始。
%此处只交叉1个(总共才6个),随机给一个。
sumRatio=cumsum(ratio);
data=zeros(N,genLenth);
for i=1:N/2
Select1=find(sumRatio>=rand);
Select2=find(sumRatio>=rand);
data(2*i-1,:)=initdata(Select1(1),:);
data(2*i,:)=initdata(Select2(1),:);
if(rand<Pc)
%交叉
location=randi([1,genLenth]);
temp=data(2*i-1,location:end);
data(2*i-1,location:end)=data(2*i,location:end);
data(2*i,location:end)=temp;
else
%变异
if(rand<Pm)
location=randi([1,genLenth]);
data(2*i-1,location)=1-data(2*i-1,location);
end
if(rand<Pm)
location=randi([1,genLenth]);
data(2*i,location)=1-data(2*i,location);
end
end
end
initdata=data;
end
fx=max(maxally);
lastIndex=find(maxally==fx);
string=Nowx(lastIndex(1),:);
x(1)=sum(string(1:genLenth/2).*weight).*(upbound-downbound)/(num^(genLenth/2)-1)+downbound;
x(2)=sum(string(1+genLenth/2:end).*weight).*(upbound-downbound)/(num^(genLenth/2)-1)+downbound;
%绘制性能图
%figure,hold on;
clf;figure(1),hold on;
plot((1:k)',meanally,'b.-');
plot((1:k)',maxally,'r.:');
end
function fun=f(x,y)
fun=(1-x).^2.*exp(-x.^2-(1+y).^2)-(x-x.^3-y.^3).*exp(-x.^2-y.^2);
%fun=-(x-1).^2-3.*(y-2).^2+100;
end
Ⅱ K均值聚类算法的意义、目的、研究内容
简要说一下:
图像分割
基本原理:根据图像的组成结构和应用需求将图像划分为若干个互不相交的子区域的过程。这些子区域四某种意义下具有共同属性的像素的连通集合。常用方法有:
1) 以区域为对象进行分割,以相似性原则作为分割的依据,即可根据图像的灰度、色彩、变换关系等方面的特征相似来划分图像的子区域,并将各像素划归到相应物体或区域的像素聚类方法,即区域法;
2) 以物体边界为对象进行分割,通过直接确定区域间的边界来实现分割;
3) 先检测边缘像素,再将边缘像素连接起来构成边界形成分割。
具体的阈值分割:
阈值分割方法分为以下3类:
1) 全局阈值:T=T[p(x,y)〕,即仅根据f(x,y)来选取阈值,阈值仅与各个图像像素的本身性质有关。
2) 局部阈值:T=T[f(x,y),p(x,y)],阈值与图像像素的本身性质和局部区域性质相关。
3) 动态阈值:T=T[x,y,f(x,y),p(x,y)],阈值与像素坐标,图像像素的本身性质和局部区域性质相关。
全局阈值对整幅图像仅设置一个分割阈值,通常在图像不太复杂、灰度分布较集中的情况下采用;局部阈值则将图像划分为若干个子图像,并对每个子图像设定局部阈值;动态阈值是根据空间信息和灰度信息确定。局部阈值分割法虽然能改善分割效果,但存在几个缺点:
1) 每幅子图像的尺寸不能太小,否则统计出的结果无意义。
2) 每幅图像的分割是任意的,如果有一幅子图像正好落在目标区域或背景区域,而根据统计结果对其进行分割,也许会产生更差的结果。
3) 局部阈值法对每一幅子图像都要进行统计,速度慢,难以适应实时性的要求。
全局阈值分割方法在图像处理中应用比较多,它在整幅图像内采用固定的阈值分割图像。考虑到全局阈值分割方法应用的广泛性,本文所着重讨论的就是全局阈值分割方法中的直方图双峰法和基于遗传算法的最大类间方差法。在本节中,将重点讨论灰度直方图双峰法,最大类间方差法以及基于遗传算法的最大类间方差法留待下章做继续深入地讨论。
参详书目当然是《数字图像处理》,及网上的一些有用文档;工具:MATLAB或VC++
Ⅲ 基于遗传算法的人脸识别
1、人体面貌识别技术的内容
人体面貌识别技术包含三个部分:
(1) 人体面貌检测
面貌检测是指在动态的场景与复杂的背景中判断是否存在面像,并分离出这种面像。一般有下列几种方法:
①参考模板法
首先设计一个或数个标准人脸的模板,然后计算测试采集的样品与标准模板之间的匹配程度,并通过阈值来判断是否存在人脸;
②人脸规则法
由于人脸具有一定的结构分布特征,所谓人脸规则的方法即提取这些特征生成相应的规则以判断测试样品是否包含人脸;
③样品学习法
这种方法即采用模式识别中人工神经网络的方法,即通过对面像样品集和非面像样品集的学习产生分类器;
④肤色模型法
这种方法是依据面貌肤色在色彩空间中分布相对集中的规律来进行检测。
⑤特征子脸法
这种方法是将所有面像集合视为一个面像子空间,并基于检测样品与其在子孔间的投影之间的距离判断是否存在面像。
值得提出的是,上述5种方法在实际检测系统中也可综合采用。
(2)人体面貌跟踪
面貌跟踪是指对被检测到的面貌进行动态目标跟踪。具体采用基于模型的方法或基于运动与模型相结合的方法。
此外,利用肤色模型跟踪也不失为一种简单而有效的手段。
(3)人体面貌比对
面貌比对是对被检测到的面貌像进行身份确认或在面像库中进行目标搜索。这实际上就是说,将采样到的面像与库存的面像依次进行比对,并找出最佳的匹配对象。所以,面像的描述决定了面像识别的具体方法与性能。目前主要采用特征向量与面纹模板两种描述方法:
①特征向量法
该方法是先确定眼虹膜、鼻翼、嘴角等面像五官轮廓的大小、位置、距离等属性,然后再计算出它们的几何特征量,而这些特征量形成一描述该面像的特征向量。
②面纹模板法
该方法是在库中存贮若干标准面像模板或面像器官模板,在进行比对时,将采样面像所有象素与库中所有模板采用归一化相关量度量进行匹配。
此外,还有采用模式识别的自相关网络或特征与模板相结合的方法。
人体面貌识别技术的核心实际为“局部人体特征分析”和“图形/神经识别算法。”这种算法是利用人体面部各器官及特征部位的方法。如对应几何关系多数据形成识别参数与数据库中所有的原始参数进行比较、判断与确认。一般要求判断时间低于1秒。
2、人体面貌的识别过程
一般分三步:
(1)首先建立人体面貌的面像档案。即用摄像机采集单位人员的人体面貌的面像文件或取他们的照片形成面像文件,并将这些面像文件生成面纹(Faceprint)编码贮存起来。
(2)获取当前的人体面像
即用摄像机捕捉的当前出入人员的面像,或取照片输入,并将当前的面像文件生成面纹编码。
(3)用当前的面纹编码与档案库存的比对
即将当前的面像的面纹编码与档案库存中的面纹编码进行检索比对。上述的“面纹编码”方式是根据人体面貌脸部的本质特征和开头来工作的。这种面纹编码可以抵抗光线、皮肤色调、面部毛发、发型、眼镜、表情和姿态的变化,具有强大的可靠性,从而使它可以从百万人中精确地辩认出某个人。
人体面貌的识别过程,利用普通的图像处理设备就能自动、连续、实时地完成。
Ⅳ 基于直方图的k均值聚类彩色图像分割方法
简要说一下:
图像分割
基本原理:根据图像的组成结构和应用需求将图像划分为若干个互不相交的子区域的过程。这些子区域四某种意义下具有共同属性的像素的连通集合。常用方法有:
1) 以区域为对象进行分割,以相似性原则作为分割的依据,即可根据图像的灰度、色彩、变换关系等方面的特征相似来划分图像的子区域,并将各像素划归到相应物体或区域的像素聚类方法,即区域法;
2) 以物体边界为对象进行分割,通过直接确定区域间的边界来实现分割;
3) 先检测边缘像素,再将边缘像素连接起来构成边界形成分割。
具体的阈值分割:
阈值分割方法分为以下3类:
1) 全局阈值:T=T[p(x,y)〕,即仅根据f(x,y)来选取阈值,阈值仅与各个图像像素的本身性质有关。
2) 局部阈值:T=T[f(x,y),p(x,y)],阈值与图像像素的本身性质和局部区域性质相关。
3) 动态阈值:T=T[x,y,f(x,y),p(x,y)],阈值与像素坐标,图像像素的本身性质和局部区域性质相关。
全局阈值对整幅图像仅设置一个分割阈值,通常在图像不太复杂、灰度分布较集中的情况下采用;局部阈值则将图像划分为若干个子图像,并对每个子图像设定局部阈值;动态阈值是根据空间信息和灰度信息确定。局部阈值分割法虽然能改善分割效果,但存在几个缺点:
1) 每幅子图像的尺寸不能太小,否则统计出的结果无意义。
2) 每幅图像的分割是任意的,如果有一幅子图像正好落在目标区域或背景区域,而根据统计结果对其进行分割,也许会产生更差的结果。
3) 局部阈值法对每一幅子图像都要进行统计,速度慢,难以适应实时性的要求。
全局阈值分割方法在图像处理中应用比较多,它在整幅图像内采用固定的阈值分割图像。考虑到全局阈值分割方法应用的广泛性,本文所着重讨论的就是全局阈值分割方法中的直方图双峰法和基于遗传算法的最大类间方差法。在本节中,将重点讨论灰度直方图双峰法,最大类间方差法以及基于遗传算法的最大类间方差法留待下章做继续深入地讨论。
参详书目当然是《数字图像处理》,及网上的一些有用文档;工具:MATLAB或VC++
Ⅳ 基于遗传算法的多目标网络优化算法的实现代码
Yovf5网站优化所考虑的因素不仅仅是搜索引擎,也包括充分满足用户的需求特征版、清晰的网站导航、完权善的在线帮助等,在此基础上使得网站功能和信息发挥最好的效果。也就是以企业网站为基础,与网络服务商(如搜索引擎等)、合作伙伴、顾客、供应商、销售商等网络营销环境中各方面因素建立良好的关系。搜索引擎会将站点彼此间的内容做一些相关性的数据比对,然后再由浏览器将这些内容以最快速且接近最完整的方式,呈现给搜索者。网站优化白帽方法,网站优化的白帽法包括遵循搜索引擎哪些可接受哪些不能接受的指导方针。他们的建议一般是为用户创造内容,而非搜索引擎、是让这些内容易于被蜘蛛机器人索引、并且不尝试对搜索引擎系统耍花招。网站员经常于设计或构建他们的网站时,犯下致命错误、疏忽“毒害”该站以致排名不会很好。ivoet
Ⅵ 基于遗传算法的自动组卷系统的设计与实现(毕业设计) 求大神给一个系统
代码如下:
public class Problem
{
public Problem()
{
ID = 0;
Type = 0;
Score = 0;
Difficulty = 0.00;
Points = new List<int>();
}
public Problem(Problem p)
{
this.ID = p.ID;
this.Type = p.Type;
this.Score = p.Score;
this.Difficulty = p.Difficulty;
this.Points = p.Points;
}
/// <summary>
/// 编号
/// </summary>
public int ID { get; set; }
/// <summary>
/// 题型(1、2、3、4、5对应单选,多选,判断,填空,问答)
/// </summary>
public int Type { get; set; }
/// <summary>
/// 分数
/// </summary>
public int Score { get; set; }
/// <summary>
/// 难度系数
/// </summary>
public double Difficulty { get; set; }
/// <summary>
/// 知识点
/// </summary>
public List<int> Points { get; set; }
}
Ⅶ 急求基于遗传算法的自适应滤波器matlab仿真程序代码谢谢
处理的重要基础。自适应滤波器可以不必事先给定信号及噪声的自相关函数,它可以利版用前一时权刻已获得的滤波器参数自动地调节现时刻的滤波器参数使得滤波器输出和未知的输入之间的均方误差最小化,从而它可以实现最优滤波。
自适应滤波器的算法有很多,有RLS(递归最小二乘法)和LMS(最小均方算法)等。自适应LMS算法是一种很有用且很简单的估计梯度的方法,在信号处理中得到广泛应用。
本论文主要研究了自适应滤波器的基本结构和原理,然后介绍了最小均方误差算法(LMS算法),并完成了一种基于MATLAB平台的自适应LMS自适应滤波器的设计,同时实现了对信号进行初步的降噪处理。
通过仿真,我们实现了LMS自适应滤波算法,并从结果得知步长和滤波器的阶数是滤波器中很重要的两个参数,并通过修改它们证实了这一点,其中步长影响着收敛时间,而且阶数的大小也会大大地影响自适应滤波器的性能。