跳转到内容

使用 AnyLogic/基于 Agent 的建模/步骤 11. 使人员接触基于距离

来自 Wikibooks,开放世界开放书籍

步骤 11. 使人员接触基于距离

现在,人员随机分布在 650x300 英里的正方形区域内。如果人员之间的距离不超过 25 英里,则让他们进行联系。

设置环境属性

  1. 通过双击项目视图中的Main项,打开Main类图。
  2. 选择environment对象。
  3. 打开环境属性视图中的高级选项卡。
  4. 网络类型更改为基于距离,并将连接范围修改为:25。

修改代理的状态图

  1. 通过双击项目视图中的Person项,打开Person类图。
  2. 单击Adopter状态的内部转换。
  3. 修改转换的操作。用以下内容替换现有字符串
    send (“Buy!”, RANDOM_CONNECTED);

    人员现在只会与他们的邻居进行联系。

现在,我们将稍微修改一下我们的动画,以可视化联系网络。

画一条线来描绘人员联系

  1. 打开Person类图。
  2. 画一条线,如图所示。

    调色板视图的演示页面中选择线 元素。然后单击图形编辑器中的点 (0,0) 来放置线的起点,最后单击想要绘制终点的位置。
  3. 打开线属性视图中的动态选项卡,并修改线的一些动态属性。
  4. 复制字段中,键入
    getConnectionsNumber(),
    (在键入时可以使用代码补全辅助。)
    在这里,我们指定了代理的接触线数量。我们需要为该代理的每个连接画一条线。为此,我们调用getConnectionsNumber()函数,返回当前在我们网络中连接到此代理的代理数量。
  5. 定义动画中的线的位置
    dX字段中,键入
    getConnectedAgent(index).getX() - getX()
    dY字段中,键入
    getConnectedAgent(index).getY() - getY()
    在这里,我们将每条线的终点放置到具有对应连接代理的坐标的点上。连接代理使用getConnectedAgent(index)函数交替访问。

    现在,那些相互联系的人员将在我们的演示中用线连接起来。

我们已完成创建动画。运行模型并观察网络中的动态。

华夏公益教科书