⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gabasesolver.h

📁 遗传算法vc++语言版源程序,台湾大学编写。
💻 H
字号:
#ifndef _GABASESOLVER_
#define _GABASESOLVER_

#include "UOFTerminator.h"
#include "PopBaseSolver.h"
#include "GAInfo.h"
#include "CommonBase.h"

class PopSolution;

class GABaseSolver : public PopBaseSolver
{
public: // basic interface
	UOFIdentity("GABaseSolver class",1);

	GABaseSolver(PopSolution&,size_t);
	~GABaseSolver();
	virtual void	Initialization();
	virtual	bool	Configuration(const char *filename);
	virtual	void	Solve();
	virtual void	Evolve();

	virtual	void	SetSelector(Selector *s){m_pSlct = s;}
	virtual	void	SetCrossover(Crossover *co){m_pCros = co;}
	virtual void	SetMutator(Mutator *mt){m_pMutr = mt;}

	Selector		*m_pSlct;
	Crossover		*m_pCros;
	Mutator			*m_pMutr;

	double			m_MutationRate;
	double			m_CrossoverRate;
	double			m_SelectionRate;
	double			m_NewSpringRate;

	GAInfo&			info(){return m_Record;}
	virtual void	LogHeader(ostream& os);

public:
	GAInfo			m_Record;

public:
	class MyRankingSelector : public Selector
	{
	public:
		virtual int operator()(vector<PopSolution*> &src, vector<PopSolution*> &result);
	};
	class TerminateUponIteration : public UOFTerminator
	{
	public:
		TerminateUponIteration(){m_Iter = 10000;}
		virtual bool operator()(UOFSolver* solver);
	};
	class TerminateUponMean : public UOFTerminator
	{
	public:
		TerminateUponMean(){m_TolScore = 0.1;}
		virtual bool operator()(UOFSolver* solver);
	};
	class TerminateUponScore : public UOFTerminator
	{
	public:
		TerminateUponScore(){m_TolScore = 0.1;}
		virtual bool operator()(UOFSolver* solver);
	};
	class TerminateUponConvergence : public UOFTerminator
	{
	public:
		double m_MinDiff;
		int m_LookupGen;
		TerminateUponConvergence(){m_LookupGen = 10;m_MinDiff = 1e-4;}
		virtual bool operator()(UOFSolver* solver);
	};
	class TerminateUponScoreIteration : public UOFTerminator
	{
	public:
		TerminateUponScoreIteration(){m_TolScore = 0.1;m_Iter = 10000;}
		virtual bool operator()(UOFSolver* solver);
	};
	class TerminateUponScoreTime : public UOFTerminator
	{
	public:
		TerminateUponScoreTime(){m_TolScore = 0.1;m_MaxTime = 18000;}
		virtual bool operator()(UOFSolver* solver);
	};
};
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -