本栏目将对《AFSim 2.9中文参考手册》进行持续更新,欢迎关注交流!

对本书全文和AFSIM其它资料感兴趣的伙伴,可联系作者领取~

全部内容索引请看 ⬇️⬇️⬇️

《AFSim 2.9中文参考手册》-CSDN博客​编辑​编辑https://blog.csdn.net/henggesim/article/details/145566384https://blog.csdn.net/henggesim/article/details/145566384

 AFSIM配套视频教程请看 ⬇️⬇️⬇️afsim2.9官方培训视频教程https://space.bilibili.com/3546837967440641​编辑https://space.bilibili.com/3546837967440641https://space.bilibili.com/3546837967440641


processor <name> WSF_TASK_PROCESSOR

   WSF_SCRIPT_PROCESSOR Commands ...

   # Track State Controller Commands

   evaluate_candidate_tracks ...
   evaluation_interval ...
   number_of_servers ...
   show_state_evaluations
   show_state_transitions
   state <state-name>
      ... state definition ...
       on_entry  ...end_on_entry
       on_exit   ...end_on_exit
       next_state...end_next_state
   end_state
   time_to_evaluate ...

   # Task Processor Commands

   track_processor ...
   comm_retry_attempts ...
   comm_retry_interval ...
   operating_level ...
   time_to_recognize_messages ...
   track_update_interval ...
   track_update_strategy ...
   weapon_uplink_path ...
   uplink_source ...
   uplink_comm ...
   uplink_delay ...
   auto_weapon_uplink ...
   auto_weapon_uplink_platform ...
   uplink_send_interval ...
   show_task_messages
   show_uncompleted_tasks

   # Script Interface

   on_initialize ... end_on_initialize
   on_initialize2 ... end_on_initialize2
   on_update ... end_on_update
   script_variables ... end_script_variables
   script ... end_script
   .. Other Script Commands ...

   script void on_task_assign(WsfTask aTask, WsfTrack aTrack)
     ... script commands ...
   end_script

   script void on_task_cancel(WsfTask aTask)
     ... script commands ...
   end_script

   script void on_task_complete(WsfTask aTask)
     ... script commands ...
   end_script

   script void on_task_assign_sent(WsfTask aTask, WsfTrack aTrack)
     ... script commands ...
   end_script

   script void on_task_cancel_sent(WsfTask aTask)
     ... script commands ...
   end_script

   script void on_task_complete_sent(WsfTask aTask)
     ... script commands ...
   end_script

   script void on_operating_level_change(string aLevel)
     ... script commands ...
   end_script

   script void on_track_drop()
     ... script commands ...
   end_script

end_processor

WSF_TASK_PROCESSOR 是 WSF_TRACK_STATE_CONTROLLER 的扩展,提供了一种通用机制,用于发送和接收与轨迹相关的“任务分配”。它利用 WSF_TRACK_STATE_CONTROLLER 的功能来分类轨迹,并提供额外的脚本命令(例如,AssignTask 和 CancelTask,如 WsfTaskManager 中定义),以允许任务的发送和接收。

轨迹状态控制器命令

  • evaluate_candidate_tracks <boolean>: 指示是否评估“候选轨迹”。候选轨迹是已接收但尚未确定为“稳定”的轨迹(由过滤器定义)。

默认值: false

  • evaluation_interval <state-name> <random-time-reference>: 指定在指示状态下轨迹应(重新)评估的频率。
  • number_of_servers <integer>: 指示可以同时进行的最大轨迹评估数。评估所需的时间通过 time_to_evaluate 命令设置。

默认值: 1

  • show_state_evaluations: 指示应将有关状态评估的信息写入标准输出。这基本上显示了每个 next_state 块评估的真或假状态。
  • show_state_transitions: 指示应将有关状态转换的信息写入标准输出。
  • state <state-name>: 定义状态机中的一个状态,名称为 <state-name>。
    • on_entry … end_on_entry: 进入此状态时执行这些脚本命令。这是一个可选的子命令。
    • on_exit … end_on_exit: 离开此状态时执行这些脚本命令。这是一个可选的子命令。
    • next_state <next-state-name> … end_next_state: 这是一个可选的脚本块,必须返回一个真/假值。评估时,返回值决定是否转换到由 <next-state-name> 定义的命名状态。如果未定义 next_state,则将在此状态中“死胡同”。多个 next_state 子命令是允许的,但只有在所有先前的转换评估为假时才会被评估(第一个“真”会短路进一步的评估)。因此,建议在进行更复杂的 next_state 评估之前,先执行最简单的评估以节省 CPU 周期。

状态命令定义结构:

state <state-name>
  on_entry
     ... <script-commands> ...
  end_on_entry
  on_exit
     ... <script-commands> ...
  end_on_exit
  next_state <next-state-name-1>
     ... <script-commands> ...
  end_next_state
  next_state <next-state-name-2>
     ... <script-commands> ...
  end_next_state
end_state

  • time_to_evaluate <state-name> <random-time-reference>: 指定在指示状态下执行轨迹评估所需的时间。这模拟了在逻辑上“思考”或执行评估所需的时间。

默认值: 0.01 秒

  • track_processor <track-proc-name>: 指定一个 WSF_TRACK_PROCESSOR 的名称(通常作为非主轨迹处理器运行),其轨迹列表将用于评估过程。

默认值: 使用平台的主轨迹列表。

  • comm_retry_attempts <integer>: 指示重试失败通信的尝试次数。
  • comm_retry_interval <time-value>: 指示重试失败通信的尝试之间的时间。
  • operating_level <name> <level>: 指示操作条件或状态及其相关级别。

示例:

operating_level Engage 0

  • time_to_recognize_messages <time-value>: 指示识别消息所需的时间。
  • track_update_interval <time-value>: 指示向受让人发送轨迹更新的时间间隔。
  • track_update_strategy [ default | suppressor ]: 指示如何发送轨迹更新。
    • default: 如果任务已被接受,则定期向受让人发送轨迹更新。
    • suppressor: 仅当轨迹管理器指示轨迹已更新时,才向受让人发送轨迹更新。
  • weapon_uplink_path <sensor-name> <comm-name>: 指示支持武器上行链路时使用的传感器和通信设备。
  • uplink_source <sensor-name>: 指示上行链路时轨迹的来源。

默认值: track-manager

  • uplink_comm <comm-name>: 指示用于传输上行链路的通信系统。
  • uplink_delay <time-value>: 指示在接收到上行链路任务后启动上行链路之前的延迟。

默认值: 0.0 秒

  • auto_weapon_uplink <boolean-value>: 指示任务管理器在调用 FireAt() 脚本时是否自动为每个发射的武器分配上行链路任务。

默认值: off

  • auto_weapon_uplink_platform <platform-name>: 指示使用 auto_weapon_uplink 启动的上行链路任务的受让人。

默认值: 此平台

  • uplink_send_interval <time-value>: 发送上行链路轨迹之间的最小间隔(仅用于基于任务的上行链路)。

默认值: 0.0 秒

  • show_task_messages: 指示与任务分配、取消和完成相关的信息应写入标准输出。
  • show_uncompleted_tasks: 这是一个调试工具,指示在任务处理器销毁期间未完成任务的信息应写入标准输出。

脚本接口

WSF_TASK_PROCESSOR 利用通用脚本接口和 WSF_SCRIPT_PROCESSOR 的功能,并提供以下附加脚本:

  • on_task_assign: 当接收到任务分配时调用。
script void on_task_assign(WsfTask aTask, WsfTrack aTrack)
...
end_script
  • on_task_cancel: 当接收到任务取消时调用。
script void on_task_cancel(WsfTask aTask)
...
end_script
  • on_task_complete: 当任务的分配者收到受让人完成指定任务的通知时调用。
script void on_task_complete(WsfTask aTask)
...
end_script
  • on_task_assign_sent: 当发送任务分配时调用。
script void on_task_assign_sent(WsfTask aTask, WsfTrack aTrack)

...

end_script
  • on_task_cancel_sent: 当发送任务取消时调用。
script void on_task_cancel_sent(WsfTask aTask)

...

end_script
  • on_task_complete_sent: 当任务的受让人发送任务完成消息时调用。
script void on_task_complete_sent(WsfTask aTask)

...

end_script
  • on_operating_level_change: 每当检测到“操作级别”变化时调用。
script void on_operating_level_change(string aLevel)

...

end_script
  • on_track_drop: 每当处理器被轨迹管理器告知轨迹丢失时调用。
script void on_track_drop()

...

end_script

操作方法

每个轨迹在首次被发现时,最初会在 time_to_evaluate 间隔过后进入输入文件中定义的第一个状态。从那时起,它将继续评估当前状态的转换规则,并根据规则允许的情况转换到新状态。当发生转换时,将执行当前状态的 on_exit 脚本(如果已定义),并执行新状态的 on_entry 脚本(如果已定义)。首次进入状态时,应用 time_to_evaluate 间隔。这作为状态进入时的思考延迟。

每个轨迹在其当前存在的状态定义的间隔内被(重新)评估。执行评估所需的逻辑时间由该状态的 time_to_evaluate 定义。控制器可以一次执行多达 number_of_servers 个评估。当需要评估给定轨迹的状态时,将确定是否有服务器可用于执行评估。如果有服务器可用,则标记为忙,并将在间隔完成时执行实际的规则评估(从而模拟思考过程)并安排下一次评估。如果没有可用的服务器,则将其放入待处理队列,以便下一个可用的服务器进行评估。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐