使用 AnyLogic/基于 Agent 的建模/步骤 11. 使人员接触基于距离
外观
步骤 11. 使人员接触基于距离
现在,人员随机分布在 650x300 英里的正方形区域内。如果人员之间的距离不超过 25 英里,则让他们进行联系。
- 通过双击项目视图中的Person项,打开Person类图。
- 单击Adopter状态的内部转换。
- 修改转换的操作。用以下内容替换现有字符串
send (“Buy!”, RANDOM_CONNECTED);
人员现在只会与他们的邻居进行联系。
现在,我们将稍微修改一下我们的动画,以可视化联系网络。
- 打开Person类图。
- 画一条线,如图所示。
从调色板视图的演示页面中选择线 元素。然后单击图形编辑器中的点 (0,0) 来放置线的起点,最后单击想要绘制终点的位置。 - 打开线的属性视图中的动态选项卡,并修改线的一些动态属性。
- 在复制字段中,键入
getConnectionsNumber()
,
(在键入时可以使用代码补全辅助。)
在这里,我们指定了代理的接触线数量。我们需要为该代理的每个连接画一条线。为此,我们调用getConnectionsNumber()函数,返回当前在我们网络中连接到此代理的代理数量。 - 定义动画中的线的位置
在dX字段中,键入getConnectedAgent(index).getX() - getX()
在dY字段中,键入getConnectedAgent(index).getY() - getY()
在这里,我们将每条线的终点放置到具有对应连接代理的坐标的点上。连接代理使用getConnectedAgent(index)函数交替访问。
现在,那些相互联系的人员将在我们的演示中用线连接起来。
我们已完成创建动画。运行模型并观察网络中的动态。