当前位置: 首页 > news >正文

【仿真建模-anylogic】EventRate原理解析

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

1. 类图

2. 原理解析

          EventOriginator是Anylogic中各类事件的父类,对外暴露的接口主要有:

函数功能
boolean isActive()判定是否存在尚未调度的执行规划
double getRest(TimeUnits units)获取当前时刻至事件逻辑触发时的时间间隔,当不存在尚未执行的规划时,该函数将返回infinity

        Event是EventOriginator的子类,其主要定义了抽象函数 void reset()和void restart();从这两个函数可以看出Event与DynamicEvent的区别:DynamicEvent是一次性的,一个实例只能做一次规划(没有restart函数将无法重新规划);

       EventRate是Event的3个子类之一,其主要用于对符合泊松过程的事件触发场景进行建模;通过在图形编辑窗口拖入Event组件,并选择Trigger Type为Rate,此时Anylogic会自动在容器类中新建与之对应的EventRate实例;为了自定义泊松过程的到达率以及“到达”特性发生时需要执行的逻辑,Anylogic会自动在容器类中生成double evaluateRateOf( EventRate _e )和void executeActionOf( EventRate self )函数;

// 假设事件名为event,且Model时间单位为秒// 到达率计算函数
@AnyLogicInternalCodegenAPI
public double evaluateRateOf(EventRate _e) {double _value;// 获取自定义的到达率if (_e == event) {_value = 此处内容为Event组件属性窗口中Rate属性中所填内容;_value = toModelRate( _value, PER_SECOND );return _value;}return super.evaluateRateOf( _e );
}// 执行事件发生时的自定义逻辑
@AnyLogicInternalCodegenAPI
public void executeActionOf( EventRate self ) {if ( self == event) {// 自定义逻辑,为Event组件属性窗口中Action属性中所填的内容return ;}super.executeActionOf( self );
}

            EventRate类核心代码:

//*********************************************************************
//             说明: anylogic内核做了代码混淆。为便于理解,以下代码中涉及的
//                   部分变量、函数名做了改写;
//*********************************************************************// reset函数--取消尚未执行的规划
public void reset() {this.cancel();      // 取消尚未执行的规划this.rate = -1.0;   // 到达率设置未非法值,到达率大于0才能真正起作用,见restart函数;
}// 重新生成规划
public void restart() {this.cancel();// this.getAgent()获取的是容器智能体,即事件发起智能体;自定义的到达率位于容器智能体中,在此处与EventRate实例关联起来;this.rate = Math.max(0.0, this.getAgent().evaluateRateOf(this));if (this.rate > 0.0) {// exponential(this.rate)返回值为到达率为rate的泊松过程下一次到达时间间隔,plan函数用于重新定义倒计时时间;this.plan(this.getAgent().exponential(this.rate));}
}// 事件启动函数,即第一规划,在容器智能体的start函数中自动调用;
@AnyLogicInternalCodegenAPI
public void start() {this.rate = Math.max(0.0, this.getAgent().evaluateRateOf(this));if (this.rate > 0.0) {this.plan(this.getAgent().exponential(this.rate));}
}// 容器智能体onChange()函数内部会调用EventRate实例的onChange();即受容器智能体变更控制;
public void onChange() {// 只有在原来到达率处于合法值是才会对onChange做出反应,即需要用户显式将EventRate规划启用;if (this.rate > 0.0)) {if (this.getAgent().getEngine().d() != this) {double newVersionRate = Math.max(0.0, this.getAgent().evaluateRateOf(this));if (newVersionRate != this.rate) {if (newVersionRate == 0.0) {this.cancel();} else {this.restart();}}}}
}// 事件触发时执行逻辑
@AnyLogicInternalAPI
void execute() {super.execute();try {// 自定义逻辑位于容器智能体中,在此处进行关联;this.getAgent().executeActionOf(this);} finally {// Event只能规划一次,对于EventRate而言,其规划被执行后需要重新生成规划;if (this.rate > 0.0) {this.rate = Math.max(0.0, this.getAgent().evaluateRateOf(this));if (this.rate > 0.0) {this.plan(this.getAgent().exponential(this.rate));}}}
}

3. 应用

         EventRate主要用于对符合泊松过程的事件触发场景进行建模,例如:商店顾客到达过程符合泊松过程,统计数据分析出其到达率为每天1000人,则可以通过EventRate描述顾客到达模型;

相关文章:

【仿真建模-anylogic】EventRate原理解析

Author:赵志乾 Date:2024-06-13 Declaration:All Right Reserved!!! 1. 类图 2. 原理解析 EventOriginator是Anylogic中各类事件的父类,对外暴露的接口主要有: 函数功能boolean isActive()判定…...

Linux安装Qt5.14.2

下载 qt 5.14.2下载网址 下载qt-opensource-linux-x64-5.14.2.run Linux系统下载.run文件(runfile文件),windows系统下载.exe文件,mac系统下载.dmg文件。 md5sums.txt中是各个文件对应的MD5校验码。 验证MD5校验码 md5sum是li…...

Linux so文件无法找到及某条命令找不到的解决办法

前言 在一些定制软件中可能会自带so文件。或者自带一些二进制命令。 这时会如果运行某个程序会发生 **.so 文件无法找到的错误。 以及 * 某条命令无法找到的错误。 比如像是下面这样 解决办法: so文件无法找到 通过往 LD_LIBRARY_PATH 变量中追加路径来告诉程序…...

工业交换机的供电功率配置

在工业领域中,交换机作为网络设备中的重要组成部分,其供电功率配置必不可少。工业交换机的供电功率配置不仅关系到设备的稳定运行,还直接影响到整个工业生产系统的效率和安全性。因此,在选择工业交换机时,必须对供电功…...

实现一个vue js小算法 选择不同的时间段 不交叉

以上图片选择了时间段 现在需要判断 当前选择的时间段 不能够是 有交叉的所以现在需要循环判断 //判断时间段是否重叠交叉 export function areIntervalsNonOverlapping(intervals:any) {// 辅助函数:将时间字符串转换为从当天午夜开始计算的分钟数function conver…...

GStreamer安装——iOS

安装iOS开发 支持从iOS6开始的所有版本 先决条件 iOS开发需要下载Xcode和iOSSDK。Xcode 可以在App Store或 这里 iOSSDK,如果它还没有包含在您的Xcode版本中, 可以从下载选项卡下的Xcode首选项菜单下载。 最低要求iOS版本为6.0。的最低要求版本 Xcode…...

【云计算】Docker部署Nextcloud网盘并实现随地公网远程访问

配置文件 切换root权限,新建一个nextcloud的文件夹,进入该目录,创建docker-compose.yml [cpslocalhost ~]$ su root Password: 666666 [rootlocalhost cps]# ls Desktop Documents Downloads Music Pictures Public Templates Vide…...

贪心+构造,CF1153 C. Serval and Parenthesis Sequence

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1153C - Codeforces 二、解题报告 1、思路分析 对于括号匹配问题我们经典做法是左括号当成1,右括号当成-1 那么只要任意前缀非负且最终总和为0那么该括号序列就是合法 对于本题&…...

网络安全等级保护基本要求 第1部分:安全通用要求

基本要求 第三级 安全物理环境 物理位置选择 a) 机房场地应选择在具有防震、防风和防雨等能力的建筑内; b) 机房场地应避免设在建筑物的顶层或地下室,否则应加强防水和防潮措施 物理访问控制 a) 机房出入口应配置电子门禁系统,控制、鉴…...

ubuntu22.04防火墙策略

1. 安装和配置UFW 1.1 安装UFW 如果UFW尚未安装,可以使用以下命令进行安装: sudo apt update sudo apt install ufw1.2 启用UFW 启用UFW并允许SSH流量,以防止自己被锁定在系统之外: sudo ufw allow OpenSSH sudo ufw enable2…...

selenium的使用教程

Selenium简介 Selenium是一个用于Web应用程序自动化测试工具。它支持多种浏览器,可以录制、编辑和运行自动化测试。通过Selenium,我们可以编写脚本来模拟用户在浏览器中的操作,从而进行功能测试。 二、安装与配置 安装Selenium库 使用pip安…...

Centos: ifconfig command not found且ip addr查不到服务器IP

前段时间部门新派发了服务器,让我过去使用U盘装机,装完后使用ifconfig查不到服务器IP地址,ip addr也是查不到 ifconfig:command not found (这两个图片先用虚拟机的替代一下) 在网上找资料(CSDN,博客园,知乎…...

WPF学习(2)--类与类的继承2-在窗口的实现

一、代码分析 1.Animal.cs 1.1 代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace AnimalNamespace {public class Animal{public string Name { get; set; }public int Age { get; set…...

Docker面试整理-Docker容器与虚拟机比较,安全性如何?

Docker 容器与传统的虚拟机(VM)在许多方面都不同,其中之一是安全性。每种技术都有其特定的安全特点和潜在的风险。了解这些差异可以帮助你做出更好的决策,适当地使用它们来保障系统安全。 容器与虚拟机的安全性对比: 1. 隔离性: ● 虚拟机:提供较高的隔离性。每个虚拟机…...

Python私教张大鹏 Vue3整合AntDesignVue之Checkbox 多选框

何时使用 在一组可选项中进行多项选择时; 单独使用可以表示两种状态之间的切换,和 switch 类似。区别在于切换 switch 会直接触发状态改变,而 checkbox 一般用于状态标记,需要和提交操作配合。 案例:多选框组件 核心…...

flutter 导出iOS问题3

更新flutter版本后 macminihaomacMiniaodeMini SocialIM % flutter --version Flutter 3.7.12 • channel stable • https://github.com/flutter/flutter.git Framework • revision 4d9e56e694 (1 year, 2 months ago) • 2023-04-17 21:47:46 -0400 Engine • revision 1a6…...

用winform开发一个笔记本电脑是否在充电的小工具

笔记本充电状态有两种监测方式,一种是主动查询,另一种是注册充电状态变化事件 1,先说主动监控吧,建立一个线程,反复查询SystemInformation.PowerStatus.PowerLineStatus private void readPower(){while (true){this.…...

构建汛期智慧水利新生态:EasyCVR视频汇聚监控综合管理方案解析

一、项目背景与目标 随着我国水利事业的不断发展,水利设施的管理与维护工作愈发重要。随着夏季汛期的到来,水利管理工作面临着巨大的挑战。为确保水利设施的安全运行,及时应对可能出现的汛情,建设一套高效、智能的视频监控可视化…...

linux中HADOOP_HOME和JAVA_HOME删除后依然指向旧目录

在Linux系统中,当你删除了HADOOP_HOME和JAVA_HOME环境变量后,它们依然指向旧目录,可能是因为这些变量在其他地方被设置了。以下是一些常见的原因和解决方法: 系统级配置文件: 检查系统级的环境变量配置文件,如/etc/profile、/etc/bashrc、/etc/environment,以及/etc/pro…...

C++中的结构体——结构体案例1_2

案例描述 学校正在做毕设项目,每位老师指导5名学生,总共有3名老师,需求如下 设计学生和老师的结构体,其中在老师的结构体中,有老师的姓名和一个存放5名学生的数组作为成员 学生的成员有姓名、考试分数,创…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)

第一篇&#xff1a;Liunx环境下搭建PaddlePaddle 3.0基础环境&#xff08;Liunx Centos8.5安装Python3.10pip3.10&#xff09; 一&#xff1a;前言二&#xff1a;安装编译依赖二&#xff1a;安装Python3.10三&#xff1a;安装PIP3.10四&#xff1a;安装Paddlepaddle基础框架4.1…...

【QT控件】显示类控件

目录 一、Label 二、LCD Number 三、ProgressBar 四、Calendar Widget QT专栏&#xff1a;QT_uyeonashi的博客-CSDN博客 一、Label QLabel 可以用来显示文本和图片. 核心属性如下 代码示例: 显示不同格式的文本 1) 在界面上创建三个 QLabel 尺寸放大一些. objectName 分别…...