?? acs4fun.h
字號:
#ifndef ACS4FUN_CHEAT_H_
#define ACS4FUN_CHEAT_H_
#include <stdio.h>
#include <iostream>
#define USE_CHAOS 0 //混沌序列取代隨機(jī)數(shù)
#define CHAOTIC_SEARCH 1 //嵌入混沌搜索算法 1表示嵌入,其他表示不嵌入
#define RANDOM_SEARCH 0 //這個random_search是為了和混沌搜索相比較,因此要上面一個宏也定義為1時這個宏才起作用
#define CHAOTIC_CYCLE 50
#define CHAOS_INIT_VAL 0.7783//0.61803398874989 /////////?????
#define CHAOS_MU 4.0 /////////
#define RATIO_FUN 1 //使用哪一個尺度變換公式,從0開始計算,目前只能取值0,1這兩個
#define WRITE_RAW_DATA 0
#define SPEED_TEST 0
#define GLOBAL_UPDATE 1 //1 stand for the global update used on the global best ant and 2 on the iterative best ant
#define NUM_Layers 30
#define NUM_Ants 20
#define RADIX 10
#define MAX_FIT_ALLOWED 1000000
#define PI 3.1415926
class CAcs4Fun
{
private:
void setfun(int n);
int NoFun;
public:
int NIters;
double PSelMax;
double Alpha;
double Tau0;
double Rho;
int NLayers,NAnts,NVariants,Radix;
int NRecordedResults;
double globalbestfit;
int bestiter;
double **ph;
double *fit; //存儲每只螞蟻的評價值(與函數(shù)值相關(guān), 但不一定等于函數(shù)值)
int *globalbestant,**ant;
double *y; //存儲每只螞蟻對應(yīng)的函數(shù)值
double **x; //直接解碼得到的自變量的值
double **x_real; //真實(shí)的自變量值
double *globalbestx;
double *globalbestx_real;
double globalbesty;
int pointpos; //變量中小數(shù)點(diǎn)的位置
double *chaos_last_val; //用于為每只螞蟻/每層?產(chǎn)生混沌序列
double *cs_last_val; //混沌搜索中使用
double *cx,*localbestx,*cx_real,*localbestx_real; //混沌搜索中使用
double xmin,xmax,xmin_t,xmax_t;
double ymin,ymax,ymin_t,ymax_t;
bool bWriteResult;
bool bWriteAllData;
//bool bWriteIterBest;
double MaxRecordFit;
// CAcs4Fun_Cheat(int pNIters, double pPSelMax, double pAlpha, double pRho, double pTau0);
CAcs4Fun(int pNIters=500, int pNLayers=30, int ppointpos=0,
int pNAnts=20, int pNFun=6,int pRadix=10, double pPSelMax=0.8,
double pAlpha=0.2, double pRho=0.2, double pTau0=0.01);
~CAcs4Fun();
void initvars();
void start();
void calcfit();
double f(double xx[]);
void decode ();
double decode(int xx[], int pointpos, int startpos, int endpos);
void xtrans();
void ytrans();
void WriteResult(int iter, int antNo);
void WriteResult2(int NoAnt);
double Random(int AntNo);
void Chaotic_Search(int NoAnt, int iter);
FILE *fout;
///////////////////測試函數(shù)////////////////////
double SphereModel(double xx[]);
double Schwefel2_22(double xx[]);
double Schwefel1_2(double xx[]);
double Schwefel2_21(double xx[]);
double Rosenbrock(double xx[]);
double Step(double xx[]);
double QuarticNoise(double xx[]);
double Schwefel2_26(double xx[]);
double Rastrigin(double xx[]);
double Ackley(double xx[]);
double Griewank(double xx[]);
double Penalized(double xx[]);
double Penalized2(double xx[]);
double Foxholes(double xx[]);
double Kowalik(double xx[]);
double SixHumpCamelBack(double xx[]);
double Branin(double xx[]);
double GoldsteinPrice(double xx[]);
double Hartman(double xx[]);
double Hartman2(double xx[]);
double Shekel(double xx[]);
double Schaffer(double xx[]);
double F_1(double xx[]);
double function_test(double xx[]);
double B2(double xx[]); //25
double MartinGaddy(double xx[]);
double BalujaF3(double xx[]);
double BalujaF1(double xx[]);
//29-
double peeks(double xx[]); //用于多維函數(shù)優(yōu)化的蟻群算法
//最大化問題,最大值 8.1...
};
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -