当前位置: 首页 > 知识库问答 >
问题:

如何在AnyLogic中使用statechart控制单独的行人类型代理行为?

闻华容
2023-03-14

jaywalker(代理)状态图

运行时屏幕截图

在第一张图片(主要),我有一个简单的行人模型,其中jaywalker(行人代理)移动通过2个道路交叉口。最初,所有乱穿马路的代理都处于“行走”状态&颜色为黄色(图2),但每当一些代理靠近另一个代理时(靠近意味着乱穿马路的代理表示中所示的三角形内),它们就会向它们发送“Hi”信息并进行社交。如果某人被社会化了,那么他们就从“行者”状态移动到“社会化”状态(并变红)&向在他的三角形范围(“视野”三角形)内的其他人发送消息。前11个社交是由main(在model startup时)发出的消息直接完成的&11个jaywalker代理正在接收它并进入“社交”状态。问题是在我的图中,它显示了前11个社交,但在模型运行时,代理的颜色没有改变。其次,在这11个社交之后,代理人不去社交,也不向他的三角范围内的其他人发送任何信息。

所以,我很困惑如何让我的代理从一个statechart移动到另一个statechart,同时使用行人库建模移动行为。我是否错过了连接行人图书馆和StateChart代理的任何步骤?

共有1个答案

司马项明
2023-03-14

看起来您没有告诉PedSource创建“jaywalker”类型的自定义ped代理。试试看:

    null

PS:请理解PedSource正在创建代理,不要使用您的人口来创建代理。阅读有关PedSource和populations的更多内容,并做一些教程来更好地理解这些基本概念:-)

 类似资料:
  • 现在,我使用pedsource在Main中生成行人,并设置了4条目标线。行人将在这些目标线之间行走。我想获得关于这些行人目的地的数据(每个行人走向的目标线)。有没有代码可以获取这些数据? 谢谢!

  • 我正在AnyLogic中构建DES-ABM混合模型。代理通过DES块,其中有多个延迟块。 我该怎么办 访问处于延迟块或延迟状态的代理 访问触发延迟块“进入”操作的特定代理 我的最终目标是在代理框架上打开或关闭一个阀门对象,这样我才能/如何打开或关闭a.在代理框架上打开或关闭阀门,直接形成主/根框架(延迟块位于该框架上),或者如果这是不可能的B.在特定代理内发送消息或触发状态图,然后从特工自己的框架

  • 我正在研究任何逻辑。假设我有3种代理类型(公、母、猫)(链接中的截图)。 问题:我想让男性和女性“只”到“mandf队列”,猫在selectoutput之后“只”到“c队列”。 我试图在selectOutput的“probability”栏中放一个if语句,但我不知道如何提取代理的名称。我应该使用一个参数吗?比如,如果我有12种代理类型,那该怎么做呢 谢谢你

  • 我正在用AnyLogic 7建立一个多产品制造系统。 有多个资源池,每个池具有不同数量的资源。有多种类型的产品代理,具有各种参数,其中之一是ProductType(String)。 每当特定资源更改它正在操作的代理类型时,我尝试执行一个设置任务(由延迟组成)。 如果给定的资源刚刚完成对a类型产品的操作,并接收到要操作的B类型产品,那么它应该执行一个设置任务(toolkit changeover)。

  • 让我们有一个模型,其中两种类型的代理到达系统:狗和猫。这些代理具有Double类型的参数age。代理进入一个应按年龄排序的唯一队列,然后由一台服务器提供服务,然后离开系统,如下面的示例模型所示。 我的第一个问题是:如何使用年龄属性通过代理比较对队列进行排序? 我面临的主要问题是队列块(与几乎所有块一样)需要在高级属性中定义单个代理类型。首先,我尝试使用代理类型“agent”在队列中直接执行此操作,

  • 问题内容: 我目前正在独自完成多个项目(至少开发部分仅由我自己完成:)。结合使用带有不同Java,R,SQL和其他源文件的Eclipse,我想知道哪种版本控制系统最适合我。 当时Eclipse IDE的历史似乎就足够了,但是我不确定在一个月/一年中是否会如此。 您会推荐什么解决方案,为什么? 更准确地说:如果我决定使用完整的版本控制系统,我一定会使用SVN或git。但是我不确定是否有必要… 问题答