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); }
void AuctionHouseBot::ReloadAllConfig() { sAuctionBotConfig->Reload(); InitializeAgents(); }
void AuctionHouseBot::Initialize() { if (sAuctionBotConfig->Initialize()) InitializeAgents(); }