资源简介
标准遗传算法优化支持向量机的参数,用matlab实现的,简单易学,适合初学matlab和GA算法的童鞋们。
代码片段和文件信息
//头文件: Chrom.hpp
//目的: 为染色体提供基类
//语言: VC++ 6.0
//时间: 1999年6月~2000年1月
//作者: 刘康
//环境: Win32
//////////////////////////////////////////////////////////////////////
#include
#include
#include
#include “chrom.hpp“
//染色体初始化种子初始化
unsigned Chromosome::Seed = 0;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//构造函数
Chromosome::Chromosome()
{
GeneLen = 0;
Gene = NULL;
geneStr = NULL;
}
Chromosome::Chromosome(int l)
{
GeneLen = l;
geneStr = new char[GeneLen+1];
Init();
}
Chromosome::Chromosome(const Chromosome &c)
{
ChromNum = c.ChromNum;
GeneLen = c.GeneLen;
Gene = new OneChmType[ChromNum];
geneStr = new char[GeneLen+1];
for(int i=0; i Gene[i] = c.Gene[i];
}
//析构函数
Chromosome::~Chromosome()
{
if(Gene) delete []Gene;
if(geneStr) delete[]geneStr;
}
/////////////////////////////////////////////////////////////////////
//私有函数
/////////////////////////////////////////////////////////////////////
//染色体初始化
void Chromosome::Init()
{
ChromNum = GeneLen/(sizeof(OneChmType)*8)+1;
Gene = new OneChmType[ChromNum];
for(int i=0; i if(!Seed) Seed = (unsigned)time(NULL);
srand(Seed);
Seed = Seed+(unsigned)time(NULL);
for(i=0; i {
int cNum = i/(sizeof(OneChmType)*8);
if(rand()>=RAND_MAX/2)
{
Gene[cNum] <<= 1;
Gene[cNum] |= 0x1;
}
else Gene[cNum] <<= 1;
}
}
/////////////////////////////////////////////////////////////////////
//公有函数
/////////////////////////////////////////////////////////////////////
//设置染色体长度
void Chromosome::SetLen(int l)
{
if(Gene) delete []Gene;
GeneLen = l;
if(geneStr) delete []geneStr;
geneStr = new char[GeneLen+1];
Init();
}
//返回字符串形式基因
const char* Chromosome::GetGeneStr()
{
for(int i=0; i {
int cNum = i/(sizeof(OneChmType)*8);
int bit = i-cNum*(sizeof(OneChmType)*8);
__int64 tmp = 0x1;
tmp <<= bit;
if(Gene[cNum] & tmp) geneStr[GeneLen-1-i] = ‘1‘;
else geneStr[GeneLen-1-i] = ‘0‘;
}
geneStr[GeneLen] = ‘\0‘;
return geneStr;
}
//返回i1位到i2位的整型值包含i1i2位
unsigned __int64 Chromosome::GetInt(int i1 int i2)
{
if((i2-i1)<0 || (i2-i1)>=64 || i1<1) return -1;
unsigned __int64 tmp=0;
for(int i=i2-1; i>=i1-1; i--)
{
int cNum = i/(sizeof(OneChmType)*8); //i位所在组
int bits = i-cNum*(sizeof(OneChmType)*8); //组内偏移
OneChmType bit = (0x1< if(Gene[cNum]&bit)
{
tmp <<= 1;
tmp |= 0x1;
}
else
tmp <<= 1;
}
return tmp;
}
//=号重载函数
Chromosome& Chromosome::operator = (const Chromosome &c)
{
if(Gene) delete []Gene;
GeneLen = c.GeneLen;
ChromNum = c.ChromNum;
Gene = new OneChmType[ChromNum];
for(int i=0; i return *this;
}
//==号重载
bool Chromosome::operator ==
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6596 2000-10-06 01:48 798923ga-vc\GA-VC\chrom.cpp
文件 999 1999-07-20 10:46 798923ga-vc\GA-VC\GenDup.cpp
文件 1058 1996-02-04 16:59 798923ga-vc\GA-VC\GenLinear.cpp
文件 3055 2000-10-10 13:29 798923ga-vc\GA-VC\GenMSrch.cpp
文件 761 2000-01-31 10:50 798923ga-vc\GA-VC\GenSteady.cpp
文件 1795 2001-03-19 08:51 798923ga-vc\GA-VC\GenVacuum.cpp
文件 1014 1999-07-20 11:25 798923ga-vc\GA-VC\LinearDup.cpp
文件 941 2000-10-09 21:46 798923ga-vc\GA-VC\LinearSteady.cpp
文件 1764 1996-02-11 16:01 798923ga-vc\GA-VC\chrom.hpp
文件 748 2000-01-29 17:27 798923ga-vc\GA-VC\GenDup.hpp
文件 4096 2001-03-19 12:18 798923ga-vc\GA-VC\Genetic.hpp
文件 850 2000-01-29 17:25 798923ga-vc\GA-VC\GenLinear.hpp
文件 876 2000-10-09 22:29 798923ga-vc\GA-VC\GenMSrch.hpp
文件 749 1996-02-03 21:39 798923ga-vc\GA-VC\GenSteady.hpp
文件 1423 2001-03-19 08:50 798923ga-vc\GA-VC\GenVacuum.hpp
文件 755 2000-01-29 17:27 798923ga-vc\GA-VC\LinearDup.hpp
文件 778 1996-02-03 21:39 798923ga-vc\GA-VC\LinearSteady.hpp
文件 7843 2003-12-05 13:59 798923ga-vc\GA-VC\Genetic1.cpp.txt
..A.SH. 10240 2004-10-09 00:07 798923ga-vc\GA-VC\Thumbs.db
目录 0 2011-03-06 08:20 798923ga-vc\GA-VC
目录 0 2011-03-06 08:20 798923ga-vc
----------- --------- ---------- ----- ----
46559 22
相关资源
- 维纳自适应滤波器设计及Matlab实现
- GRU的matlab时间序列神经网络
- matlab去除处理背景
- matlab实现图像的旋转变换
- 程序-MATLAB-小波分解6层,通过编译,
- 三相永磁同步电机SVPWM控制算法MATLA
- 基于模糊控制的路径规划算法的仿真
- 三角高程控制网平差
- PSCAD_EMTDC与Matlab接口
- 飞行器惯性导航Matlab仿真实现
- job shop matlab
- matlab2009a反复要求激活解决方案——亲
- 模拟退火的方法解TSP问题--matlab
- matlab航天工程工具箱相信对航天卫星
- matlab双对数坐标及拟合
- 基于LCL的单相有源阻尼并网逆变器的
- matlab 曲柄滑块机构仿真 程序
- Matlab图像处理模板匹配完整程序小飞
- SMOTE算法 MATLAB代码
- MIMO-OFDM系统的Matlab仿真代码
- 时间序列预测及matlab代码
- matlab 源代码 线性规划
- 基于matlab比例导引做的三维弹道
- 电磁场实验 MATLAB仿真直导线的磁场分
- 直接序列扩频通信系统matlab仿真程序
- 马氏链模型 matlab
- matlab IDW插值方式
- 基于卡尔曼滤波的视频人脸跟踪MATL
- 机器人障碍环境下路径规划改进的回
- 带通滤波器MATLAB程序139688
评论
共有 条评论