资源简介
PSO-LS-SVM代码
代码片段和文件信息
//LS-SVM
#include
#include
#include
#include
#include
#include
#include
using namespace std;
//double sigma = 0.28; //核参数 fatboy数据100-50
//double sigma = 0.49; //核参数 housing
//double sigma = 0.50; //dianjia核参数
//double gamma = 100; //惩罚因子
//double sigma = 5.6; //风速数据参数
//double gamma = 900;
int scal_flag=0; //归一化参数
int dim_flag = 8; //输入数据的维数
int dim = 8; //多维数据:数据维数
int MD = 20; //一维数据:嵌入维数MD
double beta; //b
vector alpha; //alpha
vector > train_x; //训练数据
vector train_y;
vector > test_x; //测试数据
vector test_y;
vector pred; //预测数据
vector pred_best; //最优预测数据
void Read_Data(); //读取数据
void Writ_Data();
void Scale(); //数据归一化当scal_flag=0,归一化到[01];=1 归一化到[-11]
double RBF(vector xi vector xj double sigma); //RBF函数
void Kmatrix(vector > &KerlMatrix double sigma double gamma); //构造核矩阵
void Gauss(vector > KerlMatrix); //高斯消元法
void Predict(double sigma); //预测函数
void Result_out(); //输出结果
//PSO参数设定
const int Pnum = 10; //粒子数目
const int Dnum = 50; //迭代总次数1000
const double SigLow = 0.1; //sigma搜索域范围
const double SigHigh = 10;
const double SigVmin = -10; //sigma的速度范围
const double SigVmax = 10;
const double GamLow = 1; //gamma搜索域范围
const double GamHigh = 100;
const double GamVmin = -100; //gamma的速度范围
const double GamVmax = 100;
const double c1 = 2; //学习因子
const double c2 = 2;
const double Wmin=0.4; //最小权值
const double Wmax=0.9; //最大权值
double w = 0.9; //初始权值
int wn = 1;
//PSO
double sigma[Pnum]; //粒子集合
double gamma[Pnum];
double sigma_loc_best[Pnum]; //局部最优
double gamma_loc_best[Pnum];
double sigma_glo_best; //全局最优
double gamma_glo_best;
double sigma_v[Pnum]; //更新速度
double gamma_v[Pnum];
double fit[Pnum]; //粒子当前的适应度
double loc_fit[Pnum]; //局部最优值
double gfit; //全局最优适应值
//PSO优化相关函数
void Initial(); //初始化
double FitNess(double gamma double sigma); //计算适应度
void renew_par(); //更新粒子信息
void renew_w(); //更新权重
void WCJS();
int main()
{
clock_t begin = clock();
Read_Data();
Writ_Data();
Scale();
cout< cout<<“......训练样本数目 = “< cout<<“......测试样本数目 = “<
cout<<“............开始训练............“<
srand((unsigned)time(NULL));
Initial();
int num=0;
while(num {
//if(num%10 == 0)
cout<<“num = “< cout<<“sigma_glo_best = “< cout<<“gamma_glo_best = “<
renew_par();
renew_w();
num++;
}
Result_out();
clock_t end = clock();
cout<<“程序运行时间: “<<(end-begin)/CLOCKS_PER_SEC<<“秒“<
return 0;
}
void Read_Data()
{
d
- 上一篇:Retinex算法,C++,opencv
- 下一篇:C语言 拉丁方阵
相关资源
- 颜色识别形状识别STM103嵌入式代码
- PE文件操作代码
- 数据结构 图的遍历源代码
- 数据结构实验源代码集
- 高性能服务器代码(50_06th_server_thre
- olsr协议代码
- TCP/IP客户端和服务器端源代码,好用
- 代码雨.cpp
- 基于opencv的模板匹配代码
- 交互式计算机图形学 第六版 OpenGL源代
- 数据结构教程李春葆第五版书中例题
- 三次样条插值类源代码!
- 高精度加法(c++代码)
- diy写字机grbl v1.1源代码
- ftp工具代码
- C语言常用代码(分章节)
- C语言常用算法源代码
- 吕鑫:VS2015之博大精深的0基础C语言视
- c++ 刷屏软件代码
- 关于LED制作的源代码合集(38套)
- OBD_CAN读取代码(stm32f103)
-
STM32-ba
se64加密源代码 - 谭浩强第五版课件及代码
- 俄罗斯方块(c++控制台代码)
- C++贪吃蛇控制台小游戏代码
- 五子棋c++控制台代码
- 吃豆人.cpp 代码
- 51超声波避障源代码
- 无人机飞控+ps2遥控代码
- QT 计算文件夹内所有代码行数
评论
共有 条评论