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.rhkb.cn/news/385471.html

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

相关文章

使用 Docker Compose 部署 RabbitMQ 的一些经验与踩坑记录

前言 RabbitMQ 是一个功能强大的开源消息队列系统&#xff0c;它实现了高效的消息通信和异步处理。 本文主要介绍其基于 Docker-Compose 的部署安装和一些使用的经验。 特点 成熟&#xff0c;稳定消息持久化灵活的消息路由高性能&#xff0c;高可用性&#xff0c;可扩展性高支…

汇川CodeSysPLC教程03-2-6 ModBus TCP

什么是ModBus TCP&#xff1f; ModBus TCP是一种基于TCP/IP协议的工业网络通信协议&#xff0c;常用于工业自动化和控制系统。它是ModBus协议的一个变种&#xff0c;ModBus协议最初由Modicon&#xff08;现在是施耐德电气的一部分&#xff09;在1979年开发。 以下是ModBus TC…

Redis常用指令(不定期更新)

Redis常用指令&#xff08;不定期更新&#xff09; 查询指定前缀key的数量查看键空间事件开启键空间通知 查询指定前缀key的数量 查询【TEST前缀】的key数量 EVAL "return #redis.call(keys,TEST:*)" 0返回信息 查看键空间事件 config get notify-keyspace-even…

el-table表格 及其el-pagination分页 封装及其使用

1、首页在components文件夹中新建table文件夹 table文件夹下table.vue全部代码&#xff1a; <template><el-table:stripe"stripe":row-key"handlerRowKey()":tree-props"treeProps":border"border":show-summary"showS…

VMware 上的 Debian Linux 虚拟机无法听到蓝牙耳机的声音解决方案

项目场景&#xff1a; 在Debian上安装QQ音乐&#xff0c;用来摸鱼 问题描述 在安装完QQ音乐后&#xff0c;发现虚拟机无法听到声音&#xff0c;音乐有在正常播放&#xff0c;但是蓝牙耳机没有听到任何声音&#xff1a; 原因分析&#xff1a; 感觉是虚拟机的声卡没有配置&…

前端缓存问题(浏览器缓存和http缓存)- 解决办法

问题描述&#xff1a;前端代码更新&#xff0c;但因浏览器缓存问题&#xff0c;导致页面源代码并未更新 查看页面源代码的方法&#xff1a;鼠标右键&#xff0c;点击查看页面源代码 如图&#xff1a; 解决方法&#xff1a; 注&#xff1a;每执行一步&#xff0c;就检查一下浏览…

c# 端口监控 Helper 以及写一个端口监控工具

c# 端口监控 Helper 以及写一个端口监控工具 介绍核心代码&#xff1a;工具完整编码&#xff1a;1、编写界面2、打开定时控件的属性设置。3、编写定时控件的 Tick 事件结果&#xff08;运行效果&#xff09; 介绍 由于最近做上架比较多&#xff0c;会经常来确保服务器的服务&a…

c#Action委托和Func委托

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace Action委托 {internal class Program{static void PrintString(){Console.WriteLine("hello world.");}static void PrintInt(int …

【大师与bug里特】M_Studio《王国之梦》学习笔记

1️⃣ Object & object(✅) 之辨 《7.泛型事件框架〈余2min左右时〉》 不然inspector窗口的最后一行&#xff08;告诉我们订阅者是SceneLoadManager它身上挂了☝️ObjectEventListener用来监听这个事件 有多少个事件注册到这里来了都能够看到&#xff09;还是不会出现 加上…

新建springboot项目找不到java版本8?

问题&#xff1a; 在java版本的选择上面没有出现8版本。 解决方法&#xff1a; 点击server URL,然后修改为&#xff1a; https://start.aliyun.com/点击ok之后就可以发现能够找到java8版本了&#xff1a; ok&#xff0c;希望能够帮助到大家&#xff01;

怎么给PDF文件加密码?关于PDF文件加密的四种方法推荐

怎么给PDF文件加密码&#xff1f;给PDF文件加上密码是保护文件安全的一种重要方法&#xff0c;特别是当需要在不受授权的访问下保护敏感信息时。这个过程不仅仅是简单地设置密码&#xff0c;而是涉及到对文档内容和访问控制的深思熟虑。加密PDF文件可以有效防止未经授权的用户查…

Mindspore框架循环神经网络RNN模型实现情感分类|(四)损失函数与优化器

Mindspore框架循环神经网络RNN模型实现情感分类 Mindspore框架循环神经网络RNN模型实现情感分类|&#xff08;一&#xff09;IMDB影评数据集准备 Mindspore框架循环神经网络RNN模型实现情感分类|&#xff08;二&#xff09;预训练词向量 Mindspore框架循环神经网络RNN模型实现…

Redis 7.x 系列【27】集群原理之通信机制

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2 节点和节点2.1 集群拓扑2.2 集群总线协议2.3 流言协议2.4 心跳机制2.5 节点握…

W30-python03-pytest+selenium+allure访问百度网站实例

此篇文章为总结性&#xff0c;将pystest、selenium、allure结合起来 功能如下&#xff0c;web自动化&#xff0c;输入baidu网站&#xff0c;搜索“雷军”、打开网页中第一条内容 tools.webkeys 相关文件见附件。 pytestsel.py如下&#xff1a; import time import re impor…

深入理解计算机系统 CSAPP 家庭作业11.7

静态内容是指在不同请求中访问到的数据都相同的静态文件。例如&#xff1a;图片、视频、网站中的文件&#xff08;html、css、js&#xff09;、软件安装包、apk文件、压缩包文件等。 /** get_filetype - derive file type from file name*/ void get_filetype(char *filename,…

数组与链表谁访问更快

一、线性表 线性表是数据结构中的一种基本类型&#xff0c;它由一组线性排列的元素组成。线性表的特点是可以进行顺序访问&#xff0c;但不支持随机访问。 二、非线性表 非线性表是数据结构中另一种类型&#xff0c;如树和图&#xff0c;它们由多个节点组成&#xff0c;节点…

【运维笔记】数据库无法启动,数据库炸后备份恢复数据

事情起因 在做docker作业的时候&#xff0c;把卷映射到了宿主机原来的mysql数据库目录上&#xff0c;宿主机原来的mysql版本为8.0&#xff0c;docker容器版本为5.6&#xff0c;导致翻车。 具体操作 备份目录 将/var/lib/mysql备份到~/mysql_backup&#xff1a;cp /var/lib/…

湖仓一体架构解析:数仓架构选择(第48天)

系列文章目录 1、Lambda 架构 2、Kappa 架构 3、混合架构 4、架构选择 5、实时数仓现状 6、湖仓一体架构 7、流批一体架构 文章目录 系列文章目录前言1、Lambda 架构2、Kappa 架构3、混合架构4、架构选择5、实时数仓现状6、湖仓一体架构7、流批一体架构 前言 本文解析了Lambd…

IEC104转MQTT网关支持将IEC104数据转换为华为云平台可识别的格式

随着智能电网和物联网技术的深度融合&#xff0c;传统电力系统中的IEC104协议设备正逐步向更加开放、智能的物联网体系转型。华为云作为全球领先的云计算和AI服务提供商&#xff0c;其物联网平台为IEC104设备的接入与数据处理提供了强大的支撑。本文将探讨IEC104转MQTT网关在MQ…

【Linux网络】应用层协议:HTTP 与 HTTPS

本篇博客整理了 TCP/IP 分层模型中应用层的 HTTP 协议和 HTTPS协议&#xff0c;旨在让读者更加深入理解网络协议栈的设计和网络编程。 目录 一、协议是什么 1&#xff09;结构化数据的传输 2&#xff09;序列化和反序列化 补&#xff09;网络版计算器 .1- 协议定制 .2- …