資源簡介
PSO-LS-SVM代碼
代碼片段和文件信息
//LS-SVM
#include?
#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
//double?sigma?=?0.28; //核參數(shù)?fatboy數(shù)據(jù)100-50
//double?sigma?=?0.49; //核參數(shù)?housing
//double?sigma?=?0.50; //dianjia核參數(shù)
//double?gamma?=?100; //懲罰因子
//double?sigma?=?5.6; //風(fēng)速數(shù)據(jù)參數(shù)
//double?gamma?=?900;?
int?scal_flag=0; //歸一化參數(shù)
int?dim_flag?=?8; //輸入數(shù)據(jù)的維數(shù)
int?dim?=?8; //多維數(shù)據(jù):數(shù)據(jù)維數(shù)
int?MD?=?20; //一維數(shù)據(jù):嵌入維數(shù)MD
double?beta; //b
vector?alpha; //alpha
vector?>?train_x; //訓(xùn)練數(shù)據(jù)
vector?train_y;
vector?>?test_x; //測試數(shù)據(jù)
vector?test_y;
vector?pred; //預(yù)測數(shù)據(jù)
vector?pred_best; //最優(yōu)預(yù)測數(shù)據(jù)
void?Read_Data(); //讀取數(shù)據(jù)
void?Writ_Data();
void?Scale(); //數(shù)據(jù)歸一化當(dāng)scal_flag=0,歸一化到[01];=1?歸一化到[-11]
double?RBF(vector?xi?vector?xj?double?sigma); //RBF函數(shù)
void?Kmatrix(vector?>?&KerlMatrix?double?sigma?double?gamma); //構(gòu)造核矩陣
void?Gauss(vector?>?KerlMatrix); //高斯消元法
void?Predict(double?sigma); //預(yù)測函數(shù)
void?Result_out(); //輸出結(jié)果
//PSO參數(shù)設(shè)定
const?int?Pnum?=?10;????????????//粒子數(shù)目
const?int?Dnum?=?50; //迭代總次數(shù)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;???????????????//學(xué)習(xí)因子
const?double?c2?=?2;
const?double?Wmin=0.4; //最小權(quán)值
const?double?Wmax=0.9; //最大權(quán)值
double?w?=?0.9; //初始權(quán)值
int?wn?=?1;
//PSO
double?sigma[Pnum]; ??//粒子集合
double?gamma[Pnum];
double?sigma_loc_best[Pnum]; //局部最優(yōu)
double?gamma_loc_best[Pnum];
double?sigma_glo_best; //全局最優(yōu)
double?gamma_glo_best;
double?sigma_v[Pnum]; //更新速度
double?gamma_v[Pnum];
double?fit[Pnum]; //粒子當(dāng)前的適應(yīng)度
double?loc_fit[Pnum]; //局部最優(yōu)值
double?gfit; //全局最優(yōu)適應(yīng)值
//PSO優(yōu)化相關(guān)函數(shù)
void?Initial(); //初始化
double?FitNess(double?gamma?double?sigma); //計算適應(yīng)度
void?renew_par(); //更新粒子信息
void?renew_w(); //更新權(quán)重
void?WCJS();
int?main()
{
clock_t?begin?=?clock();
Read_Data();
Writ_Data();
Scale();
cout< cout<<“......訓(xùn)練樣本數(shù)目?=?“< cout<<“......測試樣本數(shù)目?=?“<
cout<<“............開始訓(xùn)練............“<
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語言 拉丁方陣
評論
共有 條評論