コード例 #1
0
ファイル: master.cpp プロジェクト: assasim/assasim
Master::Master (MasterId id, MasterId nb_masters, int nb_threads, std::vector<void*> &initial_agents) :

	step_{0}, order_{Order::IDLE}, period_{1}, id_{id}, nb_masters_{nb_masters}

{
	// Randomness initialization
	srand(time(NULL) + id_);

	// Initialization of the parameters of the model by the precompilation step
	nb_types_ = NbAgentTypes();
	nb_interactions_ = NbInteractionTypes();
	CreateAttributesMPIDatatypes(attributes_MPI_types_);
	max_agent_size_ = CreateAgentsMPIDatatypes(agents_MPI_types_, attributes_MPI_types_);
	CreateCriticalStructsMPIDatatypes(critical_structs_MPI_types_, attributes_MPI_types_);
	max_interaction_size_ = CreateInteractionsMPIDatatypes(interactions_MPI_types_);
	CreateAttributesSizes(attributes_sizes_);
	CreateNonSendableAgentTypes(non_sendable_agent_types_);
	CreatePublicAttributesOffsets(public_attributes_offsets_);
	CreatePublicStructSizes(public_attributes_struct_sizes_);
	CreateCriticalAttributesOffsets(critical_attributes_offsets_);
	CreateCriticalStructSizes(critical_attributes_struct_sizes_);
	CreateCriticalAttributes(critical_attributes_);

	CreateAgentsNamesRelation(agent_type_to_string_, string_to_agent_type_);
	CreateAttributesNamesRelation(attribute_to_string_, string_to_attribute_);

	// TODO: Uncomment once precompilation handled constant
	// GenerateConstants(constants_);

	// Initialization of the MPI Datatypes for the Meta Evolutions
	generateMPIDatatype(MetaEvolutionDescriptionMPIDatatype);

	// Creation of the agent handlers
	for (int k=0; k<nb_threads; k++) {
		agent_handlers_.emplace_back(id_, *this);
	}

	// Initialization of the queues
	interactions_to_send_ = InteractionMatrix(nb_masters_*nb_interactions_);
	interactions_buffer_ = utils::fixed_size_multibuffer<InteractionStruct>(max_interaction_size_);

	// Initialization of the master communicator
	MPI_Comm_split(MPI_COMM_WORLD, 0, id_, &MasterComm_);

	// Receive and adds agents
	InitializeAgents(initial_agents);

}
コード例 #2
0
void AuctionHouseBot::ReloadAllConfig()
{
    sAuctionBotConfig->Reload();
    InitializeAgents();
}
コード例 #3
0
void AuctionHouseBot::Initialize()
{
    if (sAuctionBotConfig->Initialize())
        InitializeAgents();
}