您的位置:首页 > 其它

Anylogic学习--------------智能体(可用于复杂装备系统建模)

2020-08-29 11:55 134 查看

智能体

智能体可以代表非常不同的东西:车辆、设备单元、项目、产品、想法、组织、投资、土地、不同角色的人等等。

智能体是任何逻辑模型的主要构建块。Agent是模型设计的一个单元,它可以有行为、内存(历史)、时间、联系人等。

在智能体中可以定义变量、事件、状态、系统动态库存和流程图,还可以嵌入其他智能体,添加流程流程图。您可以在模型中定义与不同类型的智能体,可以有一样多的智能体类型。

智能体的设计通常从标识其属性、行为和与外部世界的接口开始。如果有大量具有动态连接(如社交网络)的智能体,则智能体可以通过调用函数进行通信。可连接到智能体之间的通信

可以通过多种方式实现智能体的内部状态和行为。智能体的状态可以由许多变量、状态技术状态等表示。行为可以说是被动的(例如,有些智能体只对消息到达或函数调用作出反应,而没有自己的计时),或者是主动的,当智能体的内部动态(超时或系统动态过程)导致它采取行动时。在后一种情况下,智能体很可能包含事件和/或状态技术对象。

Creating agents----创建智能体

Agent是智能体类型的实例。智能体类型由用户开发。您可以使用New Agent向导创建智能体,当您从图表上的智能体调色板中拖动智能体元素时,该向导将打开。在向导的第一个页面上,您可以选择是要创建一个智能体种群(只有一个智能体),还是只定义智能体类型,而不创建任何这种类型的智能体。

Agent type. Properties------智能体类型.属性

General

Name——智能体类型的名称。

因为AnyLogic为每个智能体类型生成Java类,所以应该遵循Java命名准则。请以大写字母开头。

忽略——如果选中,智能体类型将从模型中排除。

Parameters preview--------参数预览

只有当此智能体类型具有任何参数时,才可以使用参数预览属性。

在这里,您可以重新排列此智能体的参数。这种类型的智能体将按照定义好的顺序在其属性视图中列出参数。

Agent actions---智能体行动

在启动时——在整个模型的所有智能体被构造、连接和初始化之后,以及在执行任何其他操作之前执行的代码。这是一些额外初始化和启动agentt活动(如事件)的地方。不保证不同对象启动时代码的执行顺序。

On destroy——在这种类型的销毁智能体上执行的代码(例如,当用户终止实验并销毁对象时,按一定的顺序执行嵌入对象的销毁代码)。

到达目标目的地——当智能体到达目标时执行的代码。

On before -——在基于智能体的同步模型中,在执行步骤之前为该智能体执行的代码。在为智能体执行某些确定顺序的步骤操作之前。

On step——在基于智能体的同步模型中执行一个步骤时为该智能体执行的步骤代码。以某种确定的顺序为智能体执行操作。

Agent in flowcharts-------智能体流程图

在流程图中使用——在这里,您可以在流程图中为该智能体选择角色。在这里选择Agent,您可以使智能体通过流程建模库流程图,选择行人使其通过行人库流程图块,等等。根据所选择的角色,您将获得对特定于角色的API的访问权,该API扩展到泛型智能体类型的API之外。

进入某一状态图——您可以编写当此智能体进入流程图时要执行的代码。

“退出流程图”——您可以编写当此智能体退出流程图时要执行的代码。

在获取资源时——您可以编写当此智能体在流程图中捕获资源时要执行的代码。

发布资源——您可以编写当此智能体在流程图中释放资源时要执行的代码。

 

Dimensions and movement--------尺寸和运动

初始速度-[如果空间类型是连续的或GIS可见]智能体的速度。

旋转动画到移动-[如果空间类型是连续的或GIS可见]的标题的智能体。

垂直旋转(沿z轴)-如果选中,在移动智能体时,智能体形状将朝向目标。

Space and network--------空间与网络

选择要放置在环境中的智能体——在将生活在该环境中的智能体列表中选择复选框。

空格类型——一组按钮,指定环境的空格类型:

连续-连续空间。空间维度使用宽度和高度属性指定。连续空间允许用户设置和检索当前智能体位置,以指定的速度将智能体从一个位置移动到另一个位置,等等。连续空间中智能体的位置由Java类型double的坐标(x,y,z)定义。

离散-离散空间。该空间由矩形单元格数组定义。细胞可以完全或部分被这些试剂占据(一个细胞中最多有一个试剂)。这种空间的任何逻辑支持都包括智能体在单元格上的分布、移动到相邻单元格或跳转到任意单元格、查找智能体的邻居等等。

GIS - GIS空间。GIS空间类型允许将智能体放置到GIS地图定义的地理空间环境中。

GIS map -[如果选择GIS空间类型,则可见]定义环境地理空间的GIS地图的名称

宽度-[如果选择连续或离散空间类型,则启用]表示空间的可视化区域的水平维度(以像素为单位)。在离散空间中,单元格宽度是通过将指定宽度除以空间中的列数来计算的。

高度-[如果选择连续或离散空间类型,则启用]表示空间的可视化区域的垂直维度(以像素为单位)。在离散空间中,单元格高度是通过将指定的高度除以空间中的行数来计算的。

列-[启用如果选择离散空间类型]离散空间中的列数;

行-[启用如果选择离散空间类型]离散空间中的行数。

邻域类型(如果选择离散空间类型,则启用邻域类型)设置邻域模型,该模型确定在离散空间中定义智能体邻居的方式。有两种选择:

1.摩尔(8个邻居)-所有8个单元格(向北、南、东、西、东北、东南、西南)都计算邻居。

2. 欧几里得(4个邻域)-邻域被计算在4个单元格中(向北、向南、向东、向西)。

布局类型(如果选择离散或连续空间类型,则启用)定义布局类型(智能体最初位于环境中的方式)。

如果您希望在模型启动时按照set布局放置智能体,请选中右侧的Apply on startup复选框。AnyLogic支持以下标准的连续布局:

用户定义——假设你将自己处理智能体位置,例如主对象的启动代码。

随机-在空间维度内随机且一致地选择智能体位置。

安排-智能体在空间维度内安排。

环——试剂均匀分布在直径小于最小空间尺寸的环上。

弹簧质量——这些智能体被定位为一个弹簧质量系统,其中智能体是质量,它们之间的连接是弹簧。这是依赖于网络的布局类型。

网络类型(如果选择连续或离散空间类型,则启用)网络类型,定义智能体如何连接。这个标准网络并不意味着智能体不能有其他连接。您可以自由地定义智能体与存储和管理相应引用之间的任何类型的关系。

如果希望在模型启动时构建此网络,请选中右侧的Apply on startup复选框。AnyLogic支持以下类型的智能体网络:

  1. 用户定义——假设您将亲自处理智能体连接,例如在主对象的启动代码中。
  2. 随机-每个智能体随机连接给定的平均连接数。
  3. 基于距离的——如果两个智能体之间的距离小于给定的最大值(仅在连续空间中),则任何两个智能体都是连接的。
  4. 环晶格- agent连接形成一个环,其中一个agent连接到给定数量的最近的agent。
  5. 小世界-可以被认为是环形晶格,其中一些链接已被“重新连接”到远程智能体。
  6. 无标度——有些智能体是具有大量连接的“集线器”,而有些则是连接很少的“隐士”。
  7. 无标度网络是根据Barabasi, A. L.和R. Albert. 1999所构建的。随机网络中规模的出现。科学》286 (5439):509 - 512。详情请参考维基百科。

每个智能体的连接数——[如果网络类型是随机的、小世界的或环形格点的,则启用]每个智能体的平均(或确切)连接数。适用于随机、环格和小世界网络。

连接范围—[如果网络类型是基于距离的,则启用]为智能体定义连接区域的半径。该智能体将连接到所有在定义连接范围内的智能体。

邻居链接分数-[启用如果网络类型是小世界]参数为小世界网络类型。

M -[启用如果网络类型是无标度的]参数用于无标度网络类型:M和M0(集线器的起始数量)。详情请参考维基百科。

启用步骤——如果选中,基于智能体的建模是同步的。同步建模假定离散时间步骤和智能体(可能还有环境)在这些时间步骤中同步执行它们的操作。

通过添加这样的同步,您不需要使用离散时间步长来限制模型的动态。您的智能体和其他对象仍然能够调度事件、执行状态转换和运行其他流程——这将与步骤执行并行进行。

您可以使用step duration属性自定义步骤持续时间。环境操作是使用下面的On before和On after step属性定义的。

步骤持续时间(在模型时间单位中)-[如果选择了Enable steps,则启用]此属性允许用户在同步建模的情况下设置一些自定义步骤持续时间(默认步骤持续时间为1个模型时间单位)。

Advanced Java-------高级Java

导入部分—正确编译类代码所需的导入语句。当生成Java代码时,这些语句被插入到Java类的定义之前。

实现(逗号分隔的接口列表)——类实现的接口的逗号分隔列表。

附加类代码——这里定义了任意的成员变量、常量和函数。这段代码将被插入到类定义中。您可以在此智能体中的任何位置访问这些类数据成员。这些函数可以在某些智能体活动上调用;增加一个JAVA 类。例如,关于事件发生或触发状态转换。您可以在这里放置任何Java代码,但是,我们建议使用Java类元素而不是在这里定义嵌套类,使用选项列表而不是定义Java枚举。

参数化类型——如果选中,可以在下面的类型参数字段中为该智能体类型定义泛型参数。

Advanced----高级

扩展其他智能体——一个智能体类型可以扩展其他智能体类型。该特性使您能够将不同类型的智能体的公共功能公开到一个地方,即“基本智能体类型”。扩展相同“基本智能体类型”的所有智能体类型都将共享此功能。

Log to database—如果选中,关于此智能体类型的智能体的所有信息(它们的参数值、运动统计数据和在不同状态花费的时间等)都将保存到模型执行日志中(如果在模型的数据库属性中打开日志记录)。

为动态变量创建数据集——如果选择了,AnyLogic将为该智能体类型中包含的所有动态变量(股票、流和动态变量)创建数据集,并收集定义良好的数字(在数据样本数量限制中指定,直到第一次……)属性),以获取这些数据集中这些变量的最新样本。如果您选择使用日历日期来定义第一次更新时间,则示例收集将在第一次更新时间(绝对时间)或更新日期开始。使用指定的递归时间收集样本,您可以在下面设置该递归时间。如果没有设置此选项,则用户需要自己为每个动态变量创建dataset。

递归时间-[启用if Create dataset for dynamic variables is set]定义了收集动态变量样本的递归时间。

将数据样本的数量限制在第一个…items -[启用if Create datasets for dynamic variables is set]定义了由AnyLogic为dynamic variable自动创建的每个数据集中存储的样本数量。

智能体可以将其他智能体嵌入到任何所需的深度。嵌入对象是其他智能体类型的实例,由该智能体类型的每个实例嵌入。嵌入是创建模型层次结构的步骤。默认情况下,嵌入式对象仅显示为图标。但是,如果您为这个智能体类型绘制了一个图标,那么将显示这个图标,而不是默认的图标。除了标记为图标形状的形状之外,图标还包括公共端口和变量。

智能体可以表示单个智能体或多个智能体。总体表示同一类型的智能体的集合。

在智能体填充的属性页的顶部,您可以看到智能体类型的名称。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐