【仿真建模-anylogic】开发规范

Author:赵志乾
Date:2024-06-28
Declaration:All Right Reserved!!!

0. 说明

        实际模型开发过程中,对遇到的问题进行总结归纳出以下开发规范,仅供参考!

1. 强制性规范

        1.1 事件消费模式设置为FIFO

        anylogic默认事件消费模式为后入先出,违反直觉,并且考虑到绝大多数场景要求保证事件按产生顺序消费,故将事件消费模式统一为先入先出,便于后期多模型整合;方式如下:

        1.2 严禁以像素作为布局数据单位

       为模型提供布局数据时,选择具有实际物理空间含义的单位“米”;然后在模型内部根据所设定的scale转换为像素,以保证调整scale时,模型所表征的实际物理空间不变。

       1.3 严禁直接使用默认生成的外层智能体引用

       例如智能体A内嵌智能体B,则Anylogic会自动在智能体B内生成对智能体A的引用。如需访问外层智能体,则需在本智能体内明确定义对外层智能体的引用,并在初始化时将外层智能体注入,以便于后续将该智能体导出为通用组件。

      1.4 智能体自定义函数按需设定访问权限

      Anylogic默认设定函数访问权限为default。需要依据该函数未来的使用范围,重新在public、protected和private之间做选择。避免将智能体导出为自定义组件库后,其他模型内无权访问该方法。

       1.5 严禁在on startup处初始化(Top-level智能体除外)

       各智能体需自定义init函数,并在init函数内完成内嵌智能体的init函数调用以及自身的初始化。避免将智能体导出为自定义组件库后,其构造函数参数列表过长。

       1.6 严禁在Top-level智能体内添加业务功能

Top-level智能体仅做为实验运行的环境,负责实验所需智能体的创建和关系组装。

2. 推荐性规范

       2.1 优先使用普通Java类

       智能体本身也是Java类,只不过其增加了生命周期管理、消息通信、演示等一系列通用功能;在模型设计理念上,智能体是有实际业务概念(对象)与之相对应的。如果仅是数据载体,建议直接使用Java类而非智能体。

      2.2 合理使用组合状态,以业务概念表达为主

      采用状态图进行建模时,应以业务概念层级为标准,合理使用组合状态,使得状态图易于理解。

       2.3 内嵌智能体推荐使用智能体群

       执行引擎负责智能体的生命周期管理,其拥有严格的流转流程。若开发不规范,容易产生悬空智能体,导致流程出错。建议使用智能体群对内嵌智能体进行统一管理。

       2.4 集合推荐使用变量

       Anylogic同时提供了变量和集合变量,其集合变量的引用必须使用可实例化的集合类,不方便同流式操作相结合。推荐直接使用变量,并指定所需的集合接口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/862655.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vivado CLOCK_BUFFER_TYPE

时钟缓冲区类型 默认情况下,Vivado synthesis推断输入缓冲区和全局时钟缓冲区(IBUF/BUFG) 时钟端口的组合。但是,您可以使用IO_BUFFER_TYPE和 CLOCK_BUFFER_TYPE属性组合在一起,以指导Vivado合成工具更改 默认缓冲区类…

Schema Free

向量检索服务DashVector在设计上支持Schema Free,在插入Doc、更新Doc、插入或更新Doc时,可设置任意KeyValue结构的字段(Field),如下所示: Python示例: collection.insert(Doc(id1,vectornp.random.rand(4),fields{na…

pcr实验室和P2实验室装修设计中的区别

PCR实验室和P2实验室在装修设计的区别是什么?PCR实验室指的是基因扩增实验室,而P2实验室是指生物安全实验室中的一个分类,是生物安全防护达到二级的实验室。那么PCR实验室和P2实验室装修设计标准是什么?实验室装修公司小编为您详解…

数据分析三剑客-Matplotlib

数据分析三剑客 数据分析三剑客通常指的是在Python数据分析领域中,三个非常重要的工具和库:Pandas、NumPy和Matplotlib。Pandas主要负责数据处理和分析,NumPy专注于数值计算和数学运算,而Matplotlib则负责数据可视化。这三个库相…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-44目标检测算法综述:R-CNN、SSD和YOLO

41~44目标检测算法综述:R-CNN、SSD和YOLO 1. 区域卷积神经网络 (R-CNN 系列) 1.1 R-CNN 使用启发式搜索算法来选择锚框。使用预训练模型对每个锚框提取特征(每个锚框视为一张图片,使用 CNN 提取特征)。训练 SVM 进行类别分类&a…

计算机体系结构 量化研究方法

在第一章中看到关于微处理器中dynamic energy 和 dynamic power的定义觉得有些奇怪,特别记录一下。 上面的定义是取决于上下文的:动态能量可以理解为在一个时钟周期内,由电容充放电消耗的能量总和,而动态功率则是这种能量消耗在单…

【面试系列】PHP 高频面试题

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、…

Vite脚手架+Vant组件库初始化前端项目

脚手架概念: 在前端开发中,脚手架(Scaffold)是指一个用于快速搭建项目基础结构的工具或模板。脚手架包含了项目所需的基本文件结构、配置文件、依赖管理等内容,使开发者能够更快速地开始项目开发,而不必从…

常微分方程算法之编程示例四(龙格-库塔法)

目录 一、算例一 1.1 研究问题 1.2 C++代码 1.3 计算结果 二、算例二 2.1 研究问题 2.2 C++代码 2.3 计算结果 一、算例一 本节我们采用龙格-库塔法(Runge-Kutta法)求解算例。 龙格-库塔法的原理及推导请参考: 常微分方程算法之龙格-库塔法(Runge-Kutta法)…

经验分享之会员 SaaS 系统

前言 2018年,这是不平凡的一年;互联网行业的中台战略、会员经济等模式如火如荼,同时也逐渐地走入我们公司每个人的视野。在南海集团的战略规划背景下,当时我所在的公司作为集团的研发中心,承担了对会员 SaaS 系统的建…

【小程序静态页面】猜拳游戏大转盘积分游戏小程序前端模板源码

猜拳游戏大转盘积分游戏小程序前端模板源码, 一共五个静态页面,首页、任务列表、大转盘和猜拳等五个页面。 主要是通过做任务来获取积分,积分可以兑换商品,也可用来玩游戏;通过玩游戏既可能获取奖品或积分也可能会消…

赛盈分销谈烧烤市场的未来,论创新与差异化出海的重要性!

过去几年里,海外旅游市场格外热闹,不仅景点火爆,露营烧烤活动也更加频繁,而这也催生了烧烤设备的市场增长。 全球烧烤用具市场在去年就达到了265.8亿美元,同比增长20.3%,Statista数据预测到2027年将超过515…

W3C XML 活动

关于W3C的XML活动,XML(可扩展标记语言)是一种用于描述、存储、传送及交换数据的标准。W3C(万维网联盟)对XML的发展起到了关键作用,推出了一系列的XML版本和相关技术。 XML版本: XML 1.0&#xf…

MySQL事务——Java全栈知识(31)

1、事务的特性 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。 隔离…

typescript学习回顾(四)

今天来分享下ts中的类,关于ts中的类的概念,面向对象的一种思想,以及类里面的一些属性成员,一些基础的用法,后面会有一个小练习。 类 基本概念 我的理解:类是编程语言中面向对象的一种思想,一…

ChatTTS超真实自然的语音合成模型

项目介绍 ChatTTS是一款专为优化对话场景而生的语音生成模型,尤其匹配大型语言模型(LLM)的交互需求,以及生成对话式音频、视频旁白等应用场景,无缝覆盖中英文双语。 通过汲取约100,000小时的高质量中英语音数据进行深…

RedHat9 | podman容器

1、容器技术介绍 传统问题 应用程序和依赖需要一起安装在物理主机或虚拟机上的操作系统应用程序版本比当前操作系统安装的版本更低或更新两个应用程序可能需要某一软件的不同版本,彼此版本之间不兼容 解决方式 将应用程序打包并部署为容器容器是与系统的其他部分…

node-使用querystring内置模块解决分页返回数据太多-导致json.parse()解析报错

前言 最近在使用node服务,http模块调用其他服务的分页接口有时JSON.parse()会报错发现当分页返回json数据过多时,会导致控制台输出不全-数据不对-导致JSON.parse()出错查阅资料发现,控制台输出…

鸿蒙北向开发 ubuntu20.04 gn + ninja环境傻瓜式搭建闭坑指南

ninja跟gn都是比较时髦的东西,由歪果仁维护,如果走下载源码并编译这种流程的话需要走github跟google官网下载,国内的用网环境相信各位傻瓜都知道,github跟google这几年基本是属于连不上的状态,好在你看的鸿蒙项目跟国内的一些软件大厂已经帮你爬过梯子了,ninja工具跟gn工具已经…

一文弄懂梯度下降算法

1、引言 在上一篇文章中,我们介绍了如何使用线性回归和成本损失函数为房价数据找到最拟合的线。不过,我们也看到,测试多个截距值可能既繁琐又低效。在本文中,我们将深入探讨梯度下降算法,这是一种更加强大的技术&…