【发布时间】:2021-07-14 15:15:27
【问题描述】:
我知道 simpy 是一个基于过程的离散事件模拟框架。我有几个代理可能同时做不同的事情。我仍然可以使用 simpy 来模拟我的代理吗?例如,一辆汽车到达停车场。那么驱动程序就存在了。走到一个购物中心的入口处,进入。一些购物者可能会同时离开。也可以有几辆汽车同时到达停车场。当一个事件触发时,该事件使用env.timeout(time) 时间来执行。但是,这会增加环境的模拟时钟。因此,对于所有代理?有没有办法模拟这种情况?你能给我推荐一个模拟框架/库来模拟这种场景吗?
根据@Michael 的回答进行编辑:我确实使用env.process 启动了代理(两种代理)。这些进程中的 While 循环函数产生 env.timeout 用于代理创建,并且还使用 env.process(foo(A,B,C)) 创建新进程。在这些进程中,我有几个yield env.process。在它们里面又有一些yield env.process。我在后面的函数中使用yield,因为代理必须等待事件完成。所有代理都在使用一些共享资源和存储或等待一些代理到达。不同类型的代理之间也存在一些关联。因此,我使用外部字典来存储有关代理、资源和商店的所有信息。我得到了一些有趣的结果,让我想到我是否使用正确的库或代码结构来实现我想做的事情。阅读@Michael的回答后,我相信我走在正确的轨道上。我可以启动多个代理创建进程,它们可以同时工作。
【问题讨论】:
标签: python simulation agent-based-modeling simpy event-simulation