跳到正文

04 / 05 · 2023.07 — 2024.07

广州辰创科技发展有限公司

在仿真推演产品线做后端与智能体开发:用 Go(Gin)实现战场仿真平台的业务主服务、引擎生命周期管理与多人协同编辑,并用 Python 对接 C++ 博弈平台,开发红蓝智能体与实时监控工具。

职位
Python 开发工程师
行业
仿真推演(科研软件)
地点
北京
在职
1 年 1 个月

关键成果

  • 约 100 个

    业务主服务的接口,覆盖型号、实体、装备、数据字典、模板、想定版本等 17 个模块

  • 38 个

    基于 ZeroMQ + Protobuf 封装的博弈平台对接接口

  • 16 个

    部署评测的参赛智能体(规则 / 机器学习 / 深度网络)

在这里做的项目

PROJECTS · 2

2023.07 – 2024.07(1 年) · 后端开发(Go / Python)

战场平行仿真系统

公司核心产品,面向军工科研单位的 B/S 架构战场仿真平台。用户在三维数字地球上编排作战想定,一键下发到仿真引擎推演,实时回传态势进行三维展示、多人协同编辑、录制回放与效能评估。

  • 负责业务主服务(Gin + MongoDB)设计开发,按 router / controller / service / model 分层,完成型号、实体、装备、数据字典、模板、想定版本等 17 个模块约 100 个接口
  • 设计推演引擎生命周期管理:动态分配端口、想定导出为引擎输入、os/exec 拉起进程并登记,goroutine 监听退出自动回收资源,支持多场推演并行
  • 基于 WebSocket Hub 实现按任务分房间的想定多人协同编辑:读写双协程 + 心跳保活,想定树扁平化索引缓存,增量指令实时广播
  • 开发算子服务:想定 JSON → 外部仿真引擎 XML 转换(3000+ 行),GeoJSON 区域 / 交集 / 并集空间计算;实现态势按帧录制与暂停、倍速、时间轴回放
  • 用 Go 开发引擎控制台,通过 TCP 对接调度服务并透传引擎命令,提供推演启停 / 暂停 / 恢复的 HTTP 接口
  • 用 Tornado + SciPy 开发雷达信号生成服务(线性调频脉冲、杂波、回波),后台线程异步生成,Docker 部署
  • Go
  • Gin
  • MongoDB
  • MySQL
  • Redis
  • NSQ
  • WebSocket
  • Python
  • Tornado
  • SciPy
  • Docker

系统架构

系统总体架构
L1 浏览器 想定编辑 Vue 2 + Cesium 三维数字地球 多人协同编辑 推演控制 启动 / 暂停 / 恢复 倍速 · 时间轴 态势展示 三维显示 · 录制回放 效能评估 L2 业务服务(Go) 业务主服务(Gin) 17 个模块 · 约 100 个接口 router / controller / service / model WebSocket Hub 按任务分房间 读写双协程 + 心跳保活 算子服务 想定 JSON → 引擎 XML(3000+ 行) GeoJSON 空间计算 · 态势录制 L3 推演控制 引擎生命周期管理 动态分配端口 · os/exec 拉起 goroutine 监听退出并回收 引擎控制台(Go) TCP 对接调度服务 · 透传命令 启停 / 暂停 / 恢复 HTTP 接口 雷达信号服务 Tornado + SciPy · Docker 线性调频脉冲 · 杂波 · 回波 L4 引擎与存储 仿真引擎(外部) 推演 · 实时回传态势 存储与消息 MongoDB · MySQL · Redis · NSQ
实时监控工具(PyQt5):红蓝方单位与毁伤分标签页展示。画面为回放离线对局数据渲染

2023.07 – 2024.07(8 个月) · Python 开发 · 智能体与平台对接

智能博弈对抗推演

无人化空海对抗场景(岛礁防御 vs 航母编队进攻)下的智能体指挥决策项目。C++ 博弈推演平台负责仿真裁决,Python 侧实现平台对接、红蓝双方智能体以及对抗过程的实时监控。

  • 基于 ZeroMQ(REQ + DEALER)与 Protobuf 实现平台对接层,封装推演控制、单位 / 任务 / 毁伤查询、航线、起飞、编组等 38 个接口;Runner 以固定步长驱动“观测 → 决策 → 指令”循环并完成胜负计分
  • 开发红方防御智能体:感知 — 信息融合 — 导弹 / 火炮 / 激光火力分配 — 打击校验的分阶段决策;开发蓝方进攻智能体:多行动方案、无人机分队起飞与饱和突击
  • 部署评测 16 个参赛智能体(规则 / 机器学习 / 深度网络),定位依赖与运行问题,拆解代表性策略并输出技术分享
  • 智能体态势经 MQTT 外发,用 PyQt5 开发实时监控工具,多标签页展示红蓝方单位与毁伤,支持按轮次离线落盘复盘
  • Python
  • ZeroMQ
  • Protobuf
  • MQTT
  • PyQt5
  • NumPy

系统架构

对接层与智能体架构
L1 博弈平台(C++) 博弈推演平台 仿真裁决 · 毁伤判定 L2 对接层(Python) ZeroMQ(REQ + DEALER) 请求 / 响应通道 Protobuf 报文 推演数据的序列化 38 个封装接口 推演控制 · 单位 / 任务 / 毁伤查询 航线 · 起飞 · 编组 L3 推演主循环 Runner 固定步长驱动:观测 → 决策 → 指令 胜负计分 按轮次统计结果 L4 智能体 红方防御智能体 感知 → 信息融合 火力分配 → 打击校验 蓝方进攻智能体 多行动方案 无人机分队 · 饱和突击 参赛智能体评测 部署 16 个 · 定位依赖问题 拆解代表性策略 L5 监控 MQTT 外发 智能体态势 PyQt5 实时监控 多标签页:红蓝方单位与毁伤 离线落盘复盘 按轮次保存

系统数据流

抽象示意 · 不含内部细节
  1. 想定编辑

    Vue + Cesium · WebSocket 协同

  2. Gin 主服务

    17 个模块 · 约 100 个接口

    ▲ 我负责的部分

  3. 算子服务

    想定 JSON → 引擎 XML

    ▲ 我负责的部分

  4. 引擎控制台

    Go · TCP 透传命令

    ▲ 我负责的部分

  5. 仿真引擎

    推演 · 态势回传

  6. 三维展示

    态势 · 录制回放

照片均已征得同事同意,或对他人面部做了模糊处理

在这里学到了什么

在仿真推演这条产品线上,第一次用 Go 做服务端:用 goroutine 与 WebSocket Hub 做多人协同编辑,用 os/exec 管理仿真引擎进程的生命周期,并学会了按 router / controller / service / model 分层组织一个约 100 个接口的服务。

另一条线是用 Python 对接 C++ 推演平台,在 ZeroMQ + Protobuf 之上做智能体与实时监控;通过部署评测 16 个参赛智能体,拆解了规则、机器学习与深度网络几类代表性策略,并做了一次技术分享。

TECH STACK

  • Go
  • Gin
  • Python
  • Tornado
  • MongoDB
  • MySQL
  • Redis
  • NSQ
  • WebSocket
  • ZeroMQ
  • Protobuf
  • MQTT
  • PyQt5
  • Vue 2
  • Cesium
  • Docker