psosolver.h

来自「遗传算法vc++语言版源程序,台湾大学编写。」· C头文件 代码 · 共 75 行

H
75
字号
#ifndef _PSOSOLVER_
#define _PSOSOLVER_

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

class PopSolution;

class PSOSolver : public PopBaseSolver
{
public:
	UOFIdentity("PSOSolver class",1);

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

	virtual	void	SetMove(Move *co){m_pMove = co;}

	Move			*m_pMove;

	double			m_Vc;
	double			m_K1;
	double			m_K2;

	GAInfo&			info(){return m_Record;}

public:
	GAInfo			m_Record;

	class PSOTerminateUponIteration : public UOFTerminator
	{
	public:
		PSOTerminateUponIteration(){m_Iter = 10000;}
		virtual bool operator()(UOFSolver* solver);
	};
	class PSOTerminateUponMean : public UOFTerminator
	{
	public:
		PSOTerminateUponMean(){m_TolScore = 0.1;}
		virtual bool operator()(UOFSolver* solver);
	};
	class PSOTerminateUponScore : public UOFTerminator
	{
	public:
		PSOTerminateUponScore(){m_TolScore = 0.1;}
		virtual bool operator()(UOFSolver* solver);
	};
	class PSOTerminateUponConvergence : public UOFTerminator
	{
	public:
		int m_LookupGen;
		double m_MinDiff;
		PSOTerminateUponConvergence(){m_LookupGen = 10;m_MinDiff = 1e-4;}
		virtual bool operator()(UOFSolver* solver);
	};
	class PSOTerminateUponScoreIteration : public UOFTerminator
	{
	public:
		PSOTerminateUponScoreIteration(){m_TolScore = 0.1;m_Iter = 10000;}
		virtual bool operator()(UOFSolver* solver);
	};
	class PSOTerminateUponScoreTime : public UOFTerminator
	{
	public:
		PSOTerminateUponScoreTime(){m_TolScore = 0.1;m_MaxTime = 10000;}
		virtual bool operator()(UOFSolver* solver);
	};
};
#endif

⌨️ 快捷键说明

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