0

我对编码很陌生,并且正在使用一个名为 Mesa 的基于 Python 代理的建模库。我正在尝试创建一个将电视广告添加到模型中的函数,其数量取决于数量 ads_per_hour。我的代码如下 - 第一个块是正在制作的代理,第二个是问题。该模型可以被可视化为一个 20x20 的正方形网格,代理在其周围游荡。

        for i in range (int(self.initial_elderly * 0.8)):
            x = self.random.randrange(self.grid.width)
            y = self.random.randrange(self.grid.height)
            a = ElderlyCitizen(self.get_next_unique_id(), self, 80, (x,y), 1, None, True)
            self.schedule.add(a)
            self.grid.place_agent(a, (x, y))    

def tv_ad_create(self):
        ads_per_hour = int(self.no_of_tv_ads / 24)
        for i in range(ads_per_hour):  # choose a random cell and communicate
            x = random.randrange(self.grid.width)
            y = random.randrange(self.grid.height)
            elderly_agents = [agent for agent in self.grid[x][y] if isinstance(agent, ElderlyCitizen)]
            if len(elderly_agents) > 0:
                agent = random.choice(elderly_agents)
                agent.tv_communication()

我认为我目前正在做的是调用随机单元并查看其中是否有老年特工,但这可能意味着电视广告可能会比我预期的要少。相反,我要做的是创建一个 ElderlyCitizen 类的所有代理的列表,并从中随机尝试 ads_per_hour 代理数。

有没有一种简单的方法可以从调度程序中调用 30 个随机代理?我有其他类型的代理人,所以我需要确保他们只是被呼叫的老年人。提前致谢。

4

0 回答 0