1#ifndef FPMAS_MODEL_DETAIL_H
2#define FPMAS_MODEL_DETAIL_H
18 using api::model::AgentPtr;
137 : agent_graph(agent_graph) {}
147 class EraseAgentCallback;
290 template<
template<
typename>
class SyncMode>
340 : agent_graph(agent_graph), load_balancing(load_balancing),
351 friend detail::EraseAgentCallback;
357 std::list<api::model::Agent*> _agents;
364 std::vector<api::utils::Callback<api::model::Agent*>*>
407 void clear()
override;
414 std::vector<api::model::Agent*>
agents()
const override;
415 std::vector<api::model::Agent*>
localAgents()
const override;
416 std::vector<api::model::Agent*>
distantAgents()
const override;
466 std::unordered_map<GroupId, api::model::AgentGroup*> _groups;
507 return _loadBalancingJob;
521 const std::unordered_map<GroupId, api::model::AgentGroup*>&
522 groups()
const override {
return _groups;}
539 this->_graph.
clear();
550 template<
template<
typename>
class SyncMode>
577 __zoltan_lb, __scheduler, __runtime
637 template<
template<
typename>
class SyncMode>
650 this->__graph, this->__scheduler, this->__runtime,
651 this->__load_balancing
671 this->__graph, this->__scheduler, this->__runtime,
Definition: communication.h:251
Definition: distributed_edge.h:91
Definition: distributed_graph.h:169
virtual api::communication::MpiCommunicator & getMpiCommunicator()=0
virtual void synchronize()=0
Definition: distributed_node.h:28
Definition: load_balancing.h:92
Event
Definition: model.h:552
virtual void execute(Agent *agent) const =0
virtual void setCurrentDate(Date date)=0
Definition: scheduler.h:135
Definition: scheduler.h:302
Definition: callback.h:16
T * get()
Definition: ptr_wrapper.h:58
Definition: communication.h:267
Definition: scheduled_load_balancing.h:25
Definition: zoltan_load_balancing.h:419
Definition: distributed_graph.h:49
void execute(api::model::Agent *agent) const override
Definition: model.h:32
AgentBehaviorTask(const api::model::Behavior &behavior, api::model::AgentPtr &agent)
Definition: model.h:111
void run() override
Definition: model.h:114
void erase(api::model::AgentPtr *) override
Definition: model.cpp:240
const scheduler::Job & job() const override
Definition: model.h:410
std::vector< api::model::Agent * > localAgents() const override
Definition: model.cpp:271
AgentGroupBase & operator=(const AgentGroupBase &)=delete
AgentGroupBase(const AgentGroupBase &)=delete
const api::scheduler::Job & agentExecutionJob() const override
Definition: model.h:412
void remove(api::model::Agent *) override
Definition: model.cpp:188
std::vector< api::model::Agent * > distantAgents() const override
Definition: model.cpp:279
void insert(api::model::AgentPtr *) override
Definition: model.cpp:213
void clear() override
Definition: model.cpp:259
scheduler::Job & job() override
Definition: model.h:409
api::scheduler::Job & agentExecutionJob() override
Definition: model.h:411
GroupId groupId() const override
Definition: model.h:399
void add(api::model::Agent *) override
Definition: model.cpp:156
AgentGroupBase(GroupId group_id, api::model::AgentGraph &agent_graph)
Definition: model.cpp:142
std::vector< api::model::Agent * > agents() const override
Definition: model.cpp:264
void addEventHandler(Event event, api::utils::Callback< api::model::Agent * > *callback) override
Definition: model.cpp:287
void removeEventHandler(Event event, api::utils::Callback< api::model::Agent * > *callback) override
Definition: model.cpp:293
const api::model::Behavior & behavior() override
Definition: model.h:400
api::scheduler::JobList jobs() const override
Definition: model.h:438
AgentTaskBase(api::model::AgentPtr &agent_ptr)
Definition: model.h:56
const api::model::AgentPtr & agent() const override
Definition: model.h:59
api::model::AgentPtr & _agent
Definition: model.h:49
AgentNode * node() override
Definition: model.h:63
void run() override
Definition: model.h:87
AgentTask(api::model::AgentPtr &agent_ptr)
Definition: model.h:83
communication::MpiCommunicator comm
Definition: model.h:556
DefaultModel(api::scheduler::Scheduler &scheduler, api::runtime::Runtime &runtime, api::graph::LoadBalancing< AgentPtr > &load_balancing)
Definition: model.h:690
DefaultModel()
Definition: model.h:647
DefaultModel(api::graph::LoadBalancing< AgentPtr > &load_balancing)
Definition: model.h:667
EraseAgentNodeCallback(api::model::Model &model)
Definition: model.h:204
void call(api::model::AgentNode *node) override
Definition: model.cpp:20
InsertAgentNodeCallback(api::model::Model &model)
Definition: model.h:164
void call(api::model::AgentNode *node) override
Definition: model.cpp:9
void run() override
Definition: model.cpp:131
api::graph::NodeMap< AgentPtr > NodeMap
Definition: model.h:315
api::graph::PartitionMap PartitionMap
Definition: model.h:319
LoadBalancingTask(api::model::AgentGraph &agent_graph, api::model::LoadBalancing &load_balancing)
Definition: model.h:336
void clear() override
Definition: model.h:538
api::model::AgentGroup & buildGroup(api::model::GroupId id) override
Definition: model.cpp:101
const api::communication::MpiCommunicator & getMpiCommunicator() const override
Definition: model.h:534
api::runtime::Runtime & runtime() override
Definition: model.h:499
api::scheduler::Scheduler & scheduler() override
Definition: model.h:493
AgentEdge * link(api::model::Agent *src_agent, api::model::Agent *tgt_agent, api::graph::LayerId layer) override
Definition: model.cpp:121
api::communication::MpiCommunicator & getMpiCommunicator() override
Definition: model.h:530
const scheduler::Job & loadBalancingJob() const override
Definition: model.h:506
void unlink(api::model::AgentEdge *edge) override
Definition: model.cpp:127
const api::scheduler::Scheduler & scheduler() const override
Definition: model.h:496
Model(api::model::AgentGraph &graph, api::scheduler::Scheduler &scheduler, api::runtime::Runtime &runtime, api::model::LoadBalancing &load_balancing)
Definition: model.cpp:73
const api::runtime::Runtime & runtime() const override
Definition: model.h:502
const api::model::AgentGraph & graph() const override
Definition: model.h:490
api::model::AgentGraph & graph() override
Definition: model.h:487
void removeGroup(api::model::AgentGroup &group) override
Definition: model.cpp:115
void insert(api::model::GroupId id, api::model::AgentGroup *group) override
Definition: model.cpp:93
const std::unordered_map< GroupId, api::model::AgentGroup * > & groups() const override
Definition: model.h:522
api::model::AgentGroup & getGroup(api::model::GroupId id) const override
Definition: model.cpp:97
SetAgentDistantCallback(api::model::Model &model)
Definition: model.h:267
void call(const api::graph::SetDistantNodeEvent< AgentPtr > &event) override
Definition: model.cpp:56
void call(const api::graph::SetLocalNodeEvent< AgentPtr > &event) override
Definition: model.cpp:42
SetAgentLocalCallback(api::model::Model &model)
Definition: model.h:235
void run() override
Definition: model.h:142
SynchronizeGraphTask(api::model::AgentGraph &agent_graph)
Definition: model.h:136
Definition: scheduler.h:169
Definition: scheduler.h:259
Definition: scheduler.h:33
std::unordered_map< DistributedId, int, api::graph::IdHash< DistributedId > > PartitionMap
Definition: load_balancing.h:19
int LayerId
Definition: edge.h:13
PartitionMode
Definition: load_balancing.h:30
@ PARTITION
Definition: load_balancing.h:35
typename graph::Graph< graph::DistributedNode< T >, graph::DistributedEdge< T > >::NodeMap NodeMap
Definition: load_balancing.h:25
int GroupId
Definition: model.h:78
api::graph::DistributedNode< AgentPtr > AgentNode
Definition: model.h:40
api::graph::DistributedGraph< AgentPtr >::SetDistantNodeCallback SetAgentDistantCallback
Definition: model.h:73
api::graph::DistributedEdge< AgentPtr > AgentEdge
Definition: model.h:49
api::graph::DistributedGraph< AgentPtr >::SetLocalNodeCallback SetAgentLocalCallback
Definition: model.h:64
std::vector< std::reference_wrapper< const Job > > JobList
Definition: scheduler.h:215
size_t JID
Definition: scheduler.h:38
graph::ScheduledLoadBalancing< AgentPtr > ScheduledLoadBalancing
Definition: model.h:300
graph::ZoltanLoadBalancing< AgentPtr > ZoltanLoadBalancing
Definition: model.h:296
Definition: distributed_graph.h:99
Definition: distributed_graph.h:42
Definition: callback.h:33