?? genvacuum.hpp
字號:
//頭文件: MLeader.hpp
//目的: 多首領遺傳算法類,本類用自定義小生境技術,總個體適合度
// 計算綜合考慮個體適合度值以及個體間距離影響,即每代個體
// 總適合度按如下方式計算:設Fit(i)為原個體適合度,FitN(i)
// 為新個體適合度,則新個體適合度如下:
// FitN(0)=Fit(0)
// FitN(i)=max(FitN(i-1)-1/(Fit(k)*D(k))) k=i,i+1,...,n
// D(k)=d(k,0)+d(k,1)+...+d(k,i-1)
// 式中:D(k)--個體k與前i-1個個體距離和
// d(k,m)--個體k與個體m的距離函數,表征個體間相似性
// 按上述方式計算個體適合度的目的在于使相似個體的適合度只
// 有一個能取較大值,這樣保證最終適合度高的個體之間的相似
// 性較小,從而避免匯聚的發生
//語言: VC++ 6.0
//時間: 2001年3月
//作者: 劉康
//環境: Win32
//注意: EvalVal(INIDIVIDUAL&)應由用戶類覆蓋,以提供正確的評價函數.
//////////////////////////////////////////////////////////////////////
#ifndef __GENVACUUM_HPP
#define __GENVACUUM_HPP
#include "genetic.hpp"
#include "genvacuum.hpp"
class GenVacuum : public Genetic
{
protected:
double DisThrd; //距離門檻值
//個體間距離函數,如果需要應被重載
virtual double Distance(INDIVIDUAL&,INDIVIDUAL&);
//重載總適合度計算函數
virtual void CalFitIndex();
public:
//構造函數
GenVacuum():Genetic(){DisThrd=0;};
GenVacuum(int n,int gl):Genetic(n,gl){DisThrd=0;};
GenVacuum(GenVacuum&g):Genetic(g){DisThrd=0;};
//設置距離門檻值
void SetDisThrd(double t){DisThrd=t;};
};
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -