种群的设计(二)

重新复盘了一下种群的特性,除了内在参数外,种群也对应的兴奋性种群和抑制性种群,兴奋种群的神经元释放的脉冲能够增加后神经元的膜电位,而抑制性神经元则相反。那用程序语言描述就是

enum Population_type
{
    EXC,
    INH
};

struct SynapseParams
{
    double weight;
    double delay;
    Population_type type;
    SynapseParams() :weight(0.0), delay(0.0), type(EXC) {};
};

我重新设计了突触类的内容,.h文件和,cpp文件如下:


#ifndef POPULATION_H
#define POPULATION_H

#include 
#include "Params.h"



class Population
{
public:
	Population(SynapseParams &sparams_);
	~Population();

	/// 
	/// 设置种群的数量
	/// 
	/// 输入种群的数量
	void set_num_neurons(int nums_);
	/// 
	/// 添加神经元对应的gid
	/// 
	/// 添加的位置
	/// 神经元对应的gid
	void add_neuron_gid(int idx,int gid_);

	/// 
	/// 返回种群的id
	/// 
	/// 种群的id
	const int get_group_id();
	/// 
	/// 获取种群的神经元的数量
	/// 
	/// 神经元的数量
	const int get_num_neurons();
	/// 
	/// 获取种群中的gid的集合
	/// 
	/// 种群中的gid的集合
	const std::vector& get_group_gids();

private:

	int num_neurons; //种群的神经元数量
	std::vector neuron_gids;
	static int nextId;  // 静态成员变量,用于存储下一个种群的ID标识,在每次生成对象后自增1
	int group_id;       // 种群的ID标识

	SynapseParams sparams;
};

int Population::nextId = 0;

inline const int Population::get_group_id()
{
	return group_id;
}

inline const int Population::get_num_neurons()
{
	return num_neurons;
}

inline const std::vector& Population::get_group_gids()
{
	return neuron_gids;
}

inline void Population::set_num_neurons(int nums_)
{
	num_neurons = nums_;
	neuron_gids.resize(num_neurons);
}

inline void Population::add_neuron_gid(int idx, int gid_)
{
	neuron_gids[idx] = gid_;
}

#endif // !POPULATION_H

 

#include "Population.h"

Population::Population(SynapseParams& sparams_):group_id(0),num_neurons(0),neuron_gids()
{
	group_id = nextId++;
	sparams = sparams_;
}

Population::~Population()
{
}

接下来就是代码的全部重新整理了,呜呜呜~,加油

你可能感兴趣的:(分布式模拟脉冲神经网络,c++)