AFSim 仿真系统--任务处理器入门指南

 任务处理器

 任务处理器(WSF_TASK_PROCESSOR)是一个WSF处理器,它提供了检查轨迹管理器中的数据(轨迹)并对其采取行动的能力。这些行动包括:

     *向下属分配任务

     *激活或停用传感器或干扰器

     *开火武器

     *操纵平台

       每个能够分配任务或接收任务分配的平台都必须有一个WSF_TASK_PROCESSOR的实例。任务处理器使用“有限状态机”的概念来控制要执行的行动。

任务处理器“监听”轨迹管理器,以确定新的轨迹何时出现。该轨迹可以来自于:

     *由本地传感器产生的轨迹。

     *从离板源接收到的轨迹。

     *嵌入在任务分配中的轨迹。

     *预先规划的轨迹。

      当出现新的轨迹时,会为“起始”状态(即处理器中的第一个“状态”)安排评估事件。随后的评估事件将根据状态机的规定安排。对于给定的轨迹,评估事件将在满足以下两个条件时结束:

    *该轨迹未收到任何任务。

    *该轨迹未发起任何任务。

每个轨迹在其自己的状态机中执行。

有限状态机

 有限状态机由以下组成:

      *有限数量的“状态”,其中一个是“起始状态”。

      *一组定义状态将何时发生改变的“转换规则”或“转换函数”。

一个有限状态机通常可以用一个状态图表示,该状态图由
      * 节点  表示状态的
      * 连接节点的“弧”组成,表示转换规则。

在WSF中,“状态”可以代表几乎任何事情:

     *等待某物进入范围。

     *等待传感器获得。

     *等待武器爆炸。

在下面的例子中,显示了一个简单的状态图,其中有节点(标记为A至D)和连接节点的弧,表示转换规则。

"A"状态是起点。如果满足转换规则,它就会转移到“B”状态。如果所有转换规则都得到满足,最终会转移到“C”状态,然后到“D”状态。在“B”和“C”状态下,如果某些转换规则不满足,它可以回到“A”状态。例如,雷达系统可以用一台状态机制作。状态“A”可以是搜索模式。状态“B”可以代表初始获取模式。状态“C”可以代表次要获取模式。状态“D”可以是跟踪模式。

状态机输入

以下图显示了在WSF中任务处理器中如何定义状态机。

任务处理器中可用的预定义变量

任务处理器可以访问预定义变量,以便于脚本的创建,如下所示:

TRACK 变量

    TRACK变量是WsfLocalTrack类型,指的是当前正在评估的轨迹。因为WsfLocalTrack继承自WsfTrack,所以WsfTrack类型中的所有方法也都可用。

PROCESSOR 变量

    PROCESSOR变量(或“this”已被弃用)是WsfTaskManager类型,指的是WSF_TASK_PROCESSOR。所有WsfTaskManager、WsfTaskProcessor、WsfProcessor、WsfPlatformPart和WsfObject类型的方法都可供使用。

PLATFORM 变量

PLATFORM变量是WsfPlatform类型,指的是包含处理器的平台。所有WsfPlatform和WsfObject类型的方法都可供使用。

MESSAGE 变量

MESSAGE变量是WsfMessage类型。所有WsfMessage类型的方法都可供使用。 TIME_NOW 变量 TIME_NOW是一个简单的“double”变量,表示自模拟开始以来的秒数。

MATH 变量

MATH允许使用数学函数。请参阅Math。

See :ref:`Common_Script_Interface` for variables available within other components.

 

状态机的评估过程


*请求一个“思考者”进程
 当一个思考者可用时,将其标记为忙碌,持续时间为当前状态中指定的“time_to_evaluate”。
      模拟完成某项任务所需的人类或机器时间
      由正在评估的状态的“time_to_think”值控制
      可以过载
              如果没有可用的思考者(没有忙于思考其他评估),评估将被放入“待处理队列”
              将由下一个可用的思考者处理。
       WSF_TASK_PROCESSOR可以配置多个思考者
              命令:“number_of_servers <n>”(默认为1)
*当思考者达到评估时间的末尾时,执行当前状态的规则:
设置保留的脚本变量
   TRACK、PLATFORM、PROCESSOR、MESSAGE、TIME_NOW
按照出现顺序执行“next_state”脚本
   如果没有返回true,则保持在当前状态。
        将思考者标记为“非忙碌”
        使用“evaluation_interval”安排下一次评估。
   如果有一个返回true,则转换到指定状态。
        执行当前状态的“on_exit”脚本。
        执行新状态的“on_entry”脚本。
        将“当前状态”设置为“新状态”
        将思考者的时间延长到新状态的“time_to_evaluate”。
       等待思考者完成并评估规则。


任务分配和执行


任务管理器可以将任务分配(或取消)给下属。WsfTaskManager中可用于分配或取消任务的一些方法包括

           *AssignTask(也可用于FireAt、StartTracking和StartJamming来处理武器)

           *CancelTask

           *TasksAssignedFor

           *AssigneesForTask

      任务分配/取消/状态消息通过通信网络传输(如果不是本地任务),并可能会丢失(受范围或干扰影响)。如果任务的受让人被杀死,所有分配给受让人的任务将自动在分配者身上取消。

当收到任务分配时:

           *更新带有消息提供的轨迹的轨迹管理器。
                 如果无法将其与现有轨迹相关联,则创建“本地轨迹”。
              (分配者和受让者之间的轨迹ID不同!)
           *增加轨迹的“锁定计数”
                在分配活动期间防止本地轨迹被清除。
           *添加到接收到的任务列表中。
                将反映在TasksReceivedFor返回的值中。
           *如果受让人之前并不“了解”目标,将为目标创建并启动一个状态机。
           *请求立即评估,等待思考者可用。
                无需等待下一次评估周期。


当收到任务取消时:

           *从接收到的任务列表中清除条目。
                  不再反映在TasksReceivedFor返回的值中。
           *向分配者发送确认。
           *调用“on_task_cancel”脚本(如果定义了)
           *释放与任务关联的任何传感器或武器
                (仅适用于FireAt、StartTracking和StartJamming任务。)
           *减少本地轨迹的锁定计数。
                     如果没有其他分配且轨迹比清除间隔旧,允许清除本地轨迹。
                     如果清除了本地轨迹
                             销毁与轨迹相关联的状态机。
                             调用“on_track_drop”脚本(如果定义了)。

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

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

相关文章

昇思MindSpore 应用学习-DCGAN生成漫画头像-CSDN

日期 心得 昇思MindSpore 应用学习-DCGAN生成漫画头像&#xff08;AI代码学习&#xff09; DCGAN生成漫画头像 在下面的教程中&#xff0c;我们将通过示例代码说明DCGAN网络如何设置网络、优化器、如何计算损失函数以及如何初始化模型权重。在本教程中&#xff0c;使用的动…

vue2和el-input无法修改和写入,并且不报错

文章目录 一. 业务场景描述二. 原因分析三.解决方案3.1 方案一 原生标签&#xff08;不建议&#xff09;3.2 方案二 父子传递&#xff08;不建议&#xff09;3.3 方案三 vuex&#xff0c;pinia 状态传值&#xff08;不建议&#xff09;3.4 方案四 vue初始化属性 &#xff08;建…

Java从入门到精通(十三)~ 枚举和注解

晚上好&#xff0c;愿这深深的夜色给你带来安宁&#xff0c;让温馨的夜晚抚平你一天的疲惫&#xff0c;美好的梦想在这个寂静的夜晚悄悄成长。 文章目录 目录 前言 一、枚举 1.1 枚举的概念 ​编辑 1.2 枚举的特点 1.3 枚举的实际运用 1. 状态机&#xff0c;描述属性的…

Nginx配置详解

1. Nginx安装 进入到/usr/local目录下&#xff0c;执行命令&#xff1a; yum install -y nginx通过如下命令启动nginx服务 systemctl start nginx通过如下命令&#xff0c;设置nginx开启自启动 systemctl enable nginxnginx默认占用80端口。 访问ip:80&#xff0c;可以看到…

Open3D 点云按xyz轴等距切片

目录 一、概述 1.1原理 1.2实现步骤 1.3应用 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2按x轴切片 3.3按y轴切片 3.4按z轴切片 Open3D点云算法汇总及实战案例汇总的目录地址&#xff1a; Open3D点云算法与点云深度学习案例汇总&#xff…

Java中线程池的基本使用

参考这个课程&#xff0c;讲的非常详细 27.线程池使用步骤总结_哔哩哔哩_bilibili 应用场景 商品秒杀 文件上传 订票系统 自定义线程池&#xff08;让我们了解底层逻辑的&#xff09; 构造方法 饱和机制 就是我们的队列饱和后我们该怎么处理 是拒绝这个任务还是啥…

Aria2 任意文件写入漏洞

目录 Aria2介绍漏洞描述漏洞复现 Aria2介绍 Aria2是一个在命令行下运行&#xff0c;多协议&#xff0c;多来源下载工具&#xff08;HTTP / HTTPS&#xff0c;FTP&#xff0c;BitTorrent&#xff0c;Metalink&#xff09;&#xff0c;内建XML-RPC用户界面。Aria提供RPC服务器&a…

流媒体服务器一:使用成熟的流媒体SRS 搭建 RTMP流媒体服务器

1 安装和测试srs流媒体服务器 服务器&#xff1a;SRS(Simple RTMP Server&#xff0c;⽀持RTMP、HTTP-FLV&#xff0c;HLS) 推流端&#xff1a;ffmpeg OBS 拉流端&#xff1a;ffplay VLC srs播放器 1.1 安装srs流媒体服务器 官网 SRS (Simple Realtime Server) | SRS 码…

18746 逆序数

这个问题可以使用归并排序的思想来解决。在归并排序的过程中&#xff0c;我们可以统计逆序数的数量。当我们合并两个已经排序的数组时&#xff0c;如果左边的数组中的元素&#xfffd;&#xfffd;于右边的数组中的元素&#xff0c;那么就存在逆序&#xff0c;逆序数的数量就是…

IEC104转MQTT网关支持MQTT对接Ignition、阿里云、华为云、亚马逊AWS、ThingsBoard、Zabbix平台助力远程管理

钡铼推出了一款专为电力系统设计的数据采集网关——IEC104转MQTT网关BE113&#xff0c;感兴趣的朋友接着往下看&#xff1a; 一、网关概述 IEC104转MQTT(Ignition)网关BE113是一款专为电力系统设计的数据采集网关&#xff0c;支持DL/T645和IEC104等协议的设备。上行支持MQTT协…

二、3 函数递归

自己间接或直接调用自己&#xff08;可大大减少代码量&#xff09; 1、举例 2、递归必须有停下来的条件 3、举例 普通求解数组长度 递归求解

Java进制,进制的转换

目录 进制 进制介绍 案例演示 进制的图示 进制的转化&#xff08;基本功&#xff09; 二进制转换成十进制 八进制转换成十进制 十六进制转换成十进制 十进制转换成二进制 十进制转换成八进制 十进制转换成十六进制 二进制转换成八进制 二进制转换成十六进制 …

Linux信号上

信号 概念 信号是由于进程产生&#xff0c;但是由内核调度传递给另一个进程&#xff1a; 产生信号 按键产生信号: Ctrc --> 2)SIGINT(终止/中断) Ctrz --> 20)SIGTSTOP(终端暂停) Ctr\ --> 3)SIGQUIT(退出) 系统调用产生: kill(2), raise, abort软件条件产生: 如定…

从与原始的Transformer architecture比较来理解GPT

从与原始的Transformer architecture比较来理解GPT flyfish 一、Transformer architecture 先说名词 不同的文献和资料中有不同的名字&#xff0c;其实是一样的意思 1 编码器-解码器多头注意力机制&#xff08;Encoder-Decoder Multi-Head Attention Mechanism&#xff09; …

爬虫-实战爬取虎扑ACG帖子

要求如下: 爬取虎扑步行街 ACG 版面的数据,要求使用多线程来并发爬取。范围是第一页的所有帖子,每个帖子包含标题、主题内容和第一页的所有回复内容。最后打印出爬到的所有帖子的标题。 网址是:ACG圈 - 虎扑社区。 针对上面的要求,我们进行分析: 首先是要使用多线程范…

韩顺平0基础学java——第39天

p820-841 jdbc和连接池 1.JDBC为访问不同的数据库提供了统一的接口&#xff0c;为使用者屏蔽了细节问题。 2.Java程序员使用JDBC&#xff0c;可以连接任何提供了JDBC驱动程序的数据库系统&#xff0c;从而完成对数据库的各种操作。 3.jdbc原理图 JDBC带来的好处 2.JDBC带来的…

结构体笔记

结构体 C语言中的数据类型&#xff1a; 基本数据类型&#xff1a;char/int/short/double/float/long 构造数据类型&#xff1a;数组&#xff0c;指针&#xff0c;结构体&#xff0c;共用体&#xff0c;枚举 概念&#xff1a; 结构体是用户自定义的一种数据类型&#xff0c…

《Milvus Cloud向量数据库指南》——ChatGLM:从GLM-130B到GLM-4

ChatGLM:从GLM-130B到GLM-4的跨越:智谱AI在通用人工智能领域的深度探索与实践 在人工智能的浩瀚星空中,智谱AI如同一颗璀璨的新星,以其独特的技术视角和坚定的创新步伐,在通用人工智能(AGI)的征途上留下了深刻的足迹。技术生态总监贾伟在近期的一次分享中,不仅为我们描…

20.rabbitmq插件实现延迟队列

问题 前面谈到基于死信的延迟队列&#xff0c;存在的问题&#xff1a;如果第一个消息延时时间很长&#xff0c;而第二个消息延时时间很短&#xff0c;第二个消息并不会优先得到执行。 下载插件 地址&#xff1a;https://github.com/rabbitmq/rabbitmq-delayed-message-excha…