diff --git a/Makefile b/Makefile index 64fc63c..560cd0e 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,10 @@ pdf: show: pdf @open main.pdf +num: + @texcount ./data/chapter1-intro.tex ./data/chapter2.tex ./data/chapter3.tex ./data/chapter4.tex ./data/chapter5.tex ./data/conclusion.tex + + clean: @find . -name '*.aux' -print0 | xargs -0 rm -rf diff --git a/data/chapter1-intro.tex b/data/chapter1-intro.tex index 28ee492..0a1f951 100644 --- a/data/chapter1-intro.tex +++ b/data/chapter1-intro.tex @@ -1,23 +1,75 @@ % !Mode:: "TeX:UTF-8" -\chapter{数字孪生} +\chapter{绪论} -\section{概述} - -数字产品定义(Digital product definition, DPD)经历了从二维到三维的发展。业界提出了以产品设计为核心的数字仿真(DMU)、虚拟样机等技术,产品设计信息的定义和表达也越来越完善。近年来,国内外制造业的经验表明,3D数字化定义的产品模式已经成熟,其效益被反复验证。但是,目前的数字化产品定义还存在描述不涉及制造、运行和维护阶段、产品定义和过程定义之间缺乏相关性、后续模拟基于“理想定义”对真实产品的指导有限等问题。为了解决上述问题,“数字孪生”技术应运而生。数字孪生技术被誉为有望改变未来制造“游戏规则”的顶级技术。这项技术使用数据馈送来映射物理实体,并正在对工业的许多领域产生颠覆性的影响。德国信息技术和新媒体协会预测,在制造业市场中,数字孪生的价值是巨大的,到2025年将超过780亿欧元。Gartner已经连续两年(2016、2017)将数字孪生列为十大战略技术发展趋势之一。2017年11月,世界上最大的武器制造商洛克希德・马丁公司将数字孪生列为未来国防和航空航天工业的六大顶级技术。 - -数字孪生是真实产品的虚拟表示。它拥有产品的信息,从产品生命的开始一直到产品的处置。在网络物理系统的语境中,数字孪生可以被看作是一个网络表征,是其特征点的对象集合,其中泛函其物理机制、虚拟特征和与人的交互关系。 - -在真实的实践场景中,数字孪生往往会遇到复杂的现实问题,如海量信息的建模、处理问题,模型的结构化专有化问题等等。单一场景即有可能需要构建几千孪生体并处理每秒几十万量级的数据,如何根据已有知识构建模型,如何描述模型特征和状态,如何关联、分析、响应大量数据,是本篇文章的主要研究内容。 - -鉴于以上生产需要,本文提出了一种实时分布式通信系统以及一种知识和事件模型化方法,解决大数据情况下实时响应和高效知识处理问题,并在自研的通用型数字孪生平台上进行验证。 +\section{数字孪生概述} +数字产品定义(Digital product definition,DPD)经历了从二维到三维的发展。业界提出了以产品设计为核心的数字仿真(DMU)、虚拟样机等技术,产品设计信息的定义和表达也越来越完善。近年来,国内外制造业的经验表明,3D数字化定义的产品模式已经成熟,其效益被反复验证。但是,目前的数字化产品定义还存在描述不涉及制造、运行和维护阶段、产品定义和过程定义之间缺乏相关性、后续模拟基于"理想定义"对真实产品的指导有限等问题。为了解决上述问题,"数字孪生"技术应运而生。数字孪生技术被誉为有望改变未来制造"游戏规则"的顶级技术。这项技术使用数据馈送来映射物理实体,并正在对工业的许多领域产生颠覆性的影响。德国信息技术和新媒体协会预测,在制造业市场中,数字孪生的价值是巨大的,到2025年将超过780亿欧元。Gartner已经连续两年(2016、2017)将数字孪生列为十大战略技术发展趋势之一。2017年11月,世界上最大的武器制造商洛克希德・马丁公司将数字孪生列为未来国防和航空航天工业的六大顶级技术。 -\section{总体方案} +数孪生是物理对象、流程或服务的数字表示。它拥有产品的信息,从产品生命的开始一直到产品的处置。在网络物理系统的语境中,数字孪生可以被看作是一个网络表征,是其特征点的对象集合,其中泛函其物理机制、虚拟特征和与人的交互关系。数字孪生可以是物理世界中物体的数字映射,如发动机或电场,甚至是更大的物品,例如建筑物甚至整个城市。除实物资产外,数字孪生技术还可用于映射流程,收集数据以及预测它们将如何执行。本质上,数字孪生是一种计算机程序,它利用现实世界的数据来创建可以预测的产品或流程将如何执行。这些程序可以整合物联网(工业4.0)、人工智能和软件分析等技术来提高效率和精确度。随着机器学习和大数据等因素的进步,这些虚拟模型已成为现代工程中推动创新和提高性能的主要工具。 -数字孪生主要技术包括信息建模、信息采集同步,信息分析、智能决策等,虽然已经取得了很大发展,但是由于现在世界模型机理复杂、知识图谱建立困难以及有效数据采集分析困难等问题,限制了其实践形势。 +在真实的实践场景中,数字孪生往往会遇到复杂的现实问题,如海量信息的建模、处理问题,模型的结构化专有化问题等等。单一场景即有可能需要构建几千孪生体并处理每秒几十万量级的数据,如何根据已有知识构建模型,如何描述模型特征和状态,如何关联、分析、响应大量数据,是本篇文章的主要研究内容。 -\subsection{通用平台设计} +鉴于以上生产需要,本文提出了一种实时分布式通信系统以及一种知识和事件模型化方法,解决大数据情况下实时响应和高效知识处理问题,并在自研的通用型数字孪生平台上进行验证。 + +\section{研究背景及现状} + +数字孪生(Digital Twin)的概念最早出现在2003年,由Grieves教授在密歇根大学的产品生命周期管理课程中提出。2010年,"Digital Twin" 一词在NASA的技术报告中被正式提出,并被定义为"集成了多物理量、多尺度、多概率的系统或飞行器仿真过程"。2011年起,美国国防部将数字孪生的概念引入了航天器的健康维护等问题解决中。 + +NASA将数字孪生定义为:以飞机或系统为导向,充分利用最佳物理模型、传感器和运行历史数据,集成多学科和多尺度概率仿真过程,映射对应物理飞机的状态。 + +美国空军对数字孪生的定义是基于NASA将"面向飞机或系统"扩展到"面向完成建模的系统"和"映射"扩展到"映射和预测",并给出了机身图形的孪生内涵示例(包括几何模型、材料性能、飞行试验数据、制造/检验/维修数据、气动模型、有限元模型、损伤演化模型)。 + +庄存波等人对数字孪生的定义是产品数字孪生,是指产品物理实体在信息空间中的工作状态和工作进度的全要素重构和数字映射。它是一种集成的多物理、多尺度、超逼真的动态概率仿真模型,可用于仿真、诊断、预测和控制真实环境下产品物理实体的实现过程。 + +Grieves等人对数字孪生的定义是一组虚拟信息结构,对复杂产品从微观原子层次到宏观几何层次全面描述潜在生产或实际制造产品。构建一个数字孪生的最好结果是,任何可以通过检查实际制造的东西,产品获得的信息也可以从它的数字孪生获得。在研究基于数字孪生的复杂产品/复杂产品/系统行为分类系统问题预测时,明确指出构建数字孪生的目的是基于仿真预测,最大程度地消除复杂产品/系统"不可预测和不受欢迎的行为",以避免不可知的灾难性问题。以火箭发射为例,在虚拟空间中,模拟真实火箭的数字孪生,即使失败了,也可以用新的虚拟空间快速替换,继续启动。 + + +数字孪生是以数字化方式创建物理实体的虚拟实体,借助历史数据、实时数据以及算法模型等,模拟、验证、预测、控制物理实体全生命周期过程的技术手段,建立在对一系列多维度的大规模的、实时的真实世界的数据测量,并辅以一定的物理和行为建模进行状态复现和预测的概率过程。 + +现阶段,除了航空航天领域,数字孪生领域还应用于电力、矿产采集、城市管理、工业制造等,特别是在智能制造领域,数字孪生被认为是一种实现物理世界、信息世界及人类意识世界交互的重要手段。 + +从数字孪生的多方陈述中可以看出其一部分与仿真类似,仿真技术是用包含了确定性规律和完整机理的数字模型模拟物理世界的方法,目的是依靠正确的模型和完整的信息、环境信息分析物理世界的特性和参数,而数字孪生有仿真的内核,但是多了实时性、交互性,其信息模型和物理模型可以相互关联相互影响,其主要技术包括信息建模、信息采集同步,信息分析、智能决策等,目前虽然已经取得了很大发展,但是由于现在世界模型机理复杂、知识图谱建立困难以及有效数据采集分析困难等问题,限制了其实践形势。 + + +\section{研究意义} + +近年来数字孪生技术在工业界得到了广泛的关注,全球最具权威的IT研究与顾问咨询公司GARTNER连续两年将数字孪生列为当年十大战略科技发展趋势之一。世界最大的武器生产商洛克希德马丁公司于2017.11将数字孪生列为未来国防和航天工业6大顶尖技术之首;2017年12月8日中国科协智能制造学术联合体在世界智能制造大会上将数字孪生列为世界智能制造十大科技进展之一。 +达索、西门子等公司已初步将数字孪生技术应用于产品设计、生产、维护过程中,NASA、美国空军研究实验室等将其运用在具体型号研发中,并获得2016年美国国防制造技术奖。 +虽然已经出现较为成熟的技术落地应用,但数字孪生技术在实际生产使用过程中还面临很多复杂的现实问题。 + +\begin{description} + \item [数据问题] + 数据采集的尺度或计量单位的一致性,涉及物理数据、几何数据、时间数据等。如构建实物的三维模型的坐标与计量单位不一致,会导致不同模型之间无法融合,需要增加数据接口与编写数据翻译器;如工厂内的生产计划数据采集过程中,不同时间单位的生产计划数据会导致数字孪生模型出现数据读取错误。 +数据采集参数及格式的一致性。针对同一对象,多维虚拟模型采集的数据格式不一致、参数类型和数量不对等,同样会出现不同模型在数据融合时出现问题,不能进行交互。 +数据采集周期问题。如生产设备的数据产生一般以毫秒记,用采集的数据来驱动数字孪生模型时,往往需要放大时间尺度,否则模型的仿真运行压力过大会导致崩溃。 +除此之外,数据采集的稳定性和准确度、海量数据的存储和处理能力、通信接口协议不一、多源异构数据整合、数据歧义等均对数据提出了挑战。 + +\item [模型问题] +模型类别单一,在现有的数字孪生系统中,专有化程度较高,模型结构比较单一,虚拟世界基础依赖知识单一,在从分析预测阶段向自主控制的智能化分析探索,对现有基础模型知识库提出海量的需求。由于目前知识库的数据结构和模型没有统一的标准,多模型互操作难,数据语义、语法不统一,标准化的知识图谱体系尚需探索。在本文中将模型按层次分为几何模型、物理模型、规则模型, 其中几何模型和物理模型适用于虚拟世界,其真实作用是方便人更直观的去观察系统变化,规则模型涉及实体、虚体、系统、人四方数据流通和逻辑判断,其模型建立上现在都是通过特定场景应用下硬编码实现,无法通用,更新和建立模型也十分复杂。 + +\item [实践问题及多系统融合] + 数字孪生技术是一项综合技术,与数据采集处理、数字孪生与数字模型、数字孪生与PLM产品全生命周期、数字孪生与大数据分析、数字孪生与CPS信息物理系统、数字孪生与工业互联网等多技术融合,当前需要数字孪生基础理论及相关的技术融合突破,开展设备泛在接入、工业通信协议适配、异构系统集成、虚实融合等核心关键构件研发,突破多协议数据转换、海量异构数据汇聚、感知数据驱动、数字孪生精准映射等关键技术研究促进数字孪生应用。在多技术融合下,其商业模式不能得到充分保障,其实践重要性仍需关键突破应用,从单一环境仿真到大世界综合场景应用仍需底层技术发展和相关数据标准统一。数字孪生的多系统特性即反映在物理空间,也反映在虚拟空间,在数据、模型和交互各环节均有表达。数字孪生融合物理世界与数字世界,是一个多维系统的融合。首先面临的是物理世界的多系统挑战。据不完全统计,制造业现在的设备数字化率约为47\%,局域联网率只有40\%,可接入公网的只有20\%左右,底层OT跟IT的融合仍然是极其核心的基础性问题。 + +\end{description} + +针对以上四个问题,本文在结合实践形式和数字孪生技术特点,分析了相关技术理论,分别提出了相应的改进方案,探索数字孪生技术在全产品生命周期的应用前景和能力。 + + +\section{研究目标及方案} + +\subsection{研究目标} +数字孪生作为一种实现物理实体向信息空间数字化模型映射的关键技术,通过充分利用布置在物理系统各部分的传感器,对物理实体进行数据分析与建模,形成多学科、多物理量、多时间尺度、多概率的仿真过程,将物理实体在不同真实场景中的全生命周期过程反映出来。但是在落地使用上面临较为复杂的现实问题,目前比较成功的案例都局限在特定场景特定数据下,尚未存在较为成熟的通用技术方案,针对上文总结的三个问题,分别提出相应的方案去解决或者部分解决现实面临的困境。 + +\begin{enumerate} + \item 数据困境: 编写设计一套自组织分布式消息网络,部分节点实现硬实时通信, 整体实现所有节点自组织形成分布式通信网络。 + \item 模型困境:针对规则模型编写设计一套通用机制,物理节点、虚拟节点、服务节点可分别使用和设计不同规则,用户生成规则可以选择内置逻辑、函数、真值表、代码等实现。 + \item 实践困境:以分布式消息网络为基础,编写设计模型通用特征,在系统所有层次都有公开设计的通信接口,任何节点可以选择使用非内置节点,使用第三方或者自行编写的逻辑,提供现有主流的PLC通信协议,并提供将任何协议转内置通信协议的方案或物理节点。 +\end{enumerate} + +\subsection{研究方案} + +本文开发的数字孪生平台主要涉及4大主体内容,包含主体平台、分布式消息网络、节点状态与事件机制,规则模型 \begin{figure}[h!] \centering @@ -26,8 +78,16 @@ \label{fig-f1} \end{figure} -\subsection{通讯网络} -\subsection{知识模型} -\subsection{状态与事件模型} +\subsection{主体平台} +图1所示,A为主体平台,是数字孪生平台的主体,包含了基本的数据存储、数据分析、核心消息节点、用户交互、模型展示等等功能,其余所有一切功能都要借助主体平台得以显示和控制。 +用户通过A集群查看、分析和操作所有集群。 + +\subsection{分布式消息网络} +图1所示, ABC三集群之间, 集群内部,用户与主体平台之间均使用的是该消息网络,但是在不同的节点不同的集群,根据节点需要,该消息网络有不同的特征和性能要求,比如在用户与主体平台之间,实时性要求低,对精细数据无要求,但涉及大量重复数据给不同用户分发,其消息网络注重分发性能设计。BC 物理集群,涉及硬件操作,对实时性要求极高,要求存在硬中断和优先级,所以其设计偏向硬实时消息网络。 +\subsection{状态与事件机制} +状态与事件机制为系统核心逻辑,任意物理虚拟服务节点在本身,主体平台以及途径的所有消息节点都有维护一套状态机制,节点本事就是一个状态机,其状态会在消息网络中广播最后到达主体平台,事件机制为各节点交互的基础,每个节点仅对自己负责,优先级最高的是维护自身状态,事件输入触发节点逻辑,状态改变和节点输出皆为事件输出对外广播,节点仅负责自己的状态和逻辑,其输入输出和状态改变皆为一条事件,其核心运行逻辑就是加入消息网络,订阅需要的事件,接收事件,触发逻辑运算,输出事件到消息网络,其输出是否有用有消息网络判定,节点主体只负责接收、运算及维护状态、输出。 +事件机制为主体平台和部分物理集群核心节点所独特管理的逻辑机制,其基础是订阅制,在订阅制基础上附上用户设计的其他规则逻辑。 +\subsection{规则模型} +规则模型是在以消息网络和事件机制为基础上搭建的逻辑判定机制,其涉及的规则运行主体、客体为系统内任意物理虚拟服务节点或者任意事件,其规则生成可以使用平台内置的逻辑,也可以由用户输入函数、真值表、伪代码片段或者接入程序实现。 diff --git a/data/chapter2.tex b/data/chapter2.tex index 703000b..2be2ed1 100644 --- a/data/chapter2.tex +++ b/data/chapter2.tex @@ -1,13 +1,21 @@ -\chapter{平台设计} +\chapter{系统设计} -\section{整体架构} +\section{系统设计原则} +\subsection{高可用} +高可用的衡量指标通常为几个9,它是衡量系统稳定工作的指标. 在本文中主要指系统服务的稳定性,消息网络的稳定性. +\subsection{高性能} +在本平台设计中,核心性能指标有消息网络的分发能力,硬实时消息的响应速度,主体平台对多种规则模型的处理速度,海量消息的存储能力,用户访问时模型的操作性能、仿真性能等。 +\subsection{可扩展性} +可扩展性是本平台设计中核心设计的一点,不单单指服务的可扩展性,比如服务节点可以水平扩增等,还指集群网络的开放程度,能对接现有消息协议,开放消息网络对接和规则模型设计。 +\subsection{安全性} +在保持消息网络的开发性上去保证整体平台、节点的安全性,在实践中,消息网络如何在开放协议的基础上保证通信安全。 +\subsection{单一职责原则} +任何模块保持职责和功能的最小化,专一化,模块之间不含功能交集。 + +\section{整体结构设计} \section{功能设计} -\section{sql设计} +\section{数据库设计} -\section{后端设计} - -\section{前端设计} - -\section{交互逻辑} +\section{UI设计} diff --git a/data/chapter3.tex b/data/chapter3.tex index ebd250c..e76f0eb 100644 --- a/data/chapter3.tex +++ b/data/chapter3.tex @@ -1,7 +1,15 @@ -\chapter{通讯网络} +\chapter{分布式消息网络设计} + +\section{概述} +现代软件应用程序很少孤立存在,而现在通常的做法是依赖服务或使用远程实体提供的信息。在这种分布式架构中,集成是关键。近年来,消息传递是解决分布式性质挑战的参考解决方案,例如网络不可靠性,生产者和消费者的强烈耦合以及应用的异质性。由于强大的社区以及对标准和整合的共同努力,消息代理如今已成为许多项目和服务的传输层构建块,近年来出现了很多的消息服务,如MQTT,RabbitMQ,RocketMQ, Kafka等. 这些消息框架现在已经发展的非常成熟,但是不太适合本文的使用场景,单纯工控用的PLC通信又十分的僵硬,适合构建信息物理系统(CPS)使用,涉及到大量设备、服务、人和虚拟实体四方消息互动目前来看没有适合的通信方案,在这四方之间消息传递的需求和性能要求皆不同,所以尝试去设计一套新的消息网络去解决数字孪生下的数据困境。 + +\section{通讯机制} + +下图为具体某一集群内的消息节点图,在同一子网下的client节点上线时会进行广播,发现内网节点后进行选举,产生一个子网内核心节点,其余节点连接该节点,核心节点在向上连接,最终链接到核心服务器集群,服务器集群也会选举产生一个核心节点,这个节点为整个网络的核心节点,用来维护节点状态并向下同步状态,整体网络中任意节点下线,皆会触发重新选举或状态更新,核心节点因故障下线时,会导致当前层次子网重新选举,中断服务1s,但是不影响其余层次网络集群功能,最终上线后会同步节点状态,实现整体网络的最终一致性。 + +对于任意节点来说,其上级节点其实与下级节点一致,在功能逻辑上存在上下级,但是在消息分发上不存在上级,连接的所有节点都是下级或者说同级,会维护一套消息表,记录消息标记和需要发往的目标节点。如节点A刚开始上线时该表为空,当A需要订阅消息时,就广播给周边的节点; B 收到记录下消息类型和目标A以及路径长度1, 在广播给除了A以外的临近节点,同时路径长度加1;每个节点收到同步消息时根据表内数据,没有则添加,有则根据路径长度比较,短则替换目标,长则抛弃。这样,任意节点订阅消息时将会在整个消息网络广播其订阅记录,并在每个节点记录的是最短传播路径。当节点收到消息时,根据消息表内记录,存在标记则转发,不存在则抛弃。 -\section{通讯拓扑} \begin{figure}[h!] \centering \includegraphics[width=0.8\textwidth]{figure/f3.png} @@ -31,17 +39,19 @@ \end{table} \begin{itemize} - \item prefix(8bit) - \item count(8bit) - \item typ(4bit) - \item tag(4bit) - \item source(8bit) - \item target(8bit) - \item data + \item prefix(8bit): 帧前缀,用于判断消息帧的开始 + \item count(8bit): 消息长度 + \item typ(4bit): 消息类型 + \item tag(12bit): 消息标记 + \item source(8bit): 消息来源节点 + \item target(8bit): 消息目标节点 + \item payload: 搭载的数据 \end{itemize} \section{路由算法} +在订阅消息时存在父子订阅需求,对于很多节点来说可能需要订阅的是某个具体的消息,对于某些规则类节点或者虚拟节点来说,订阅的是某个类别的消息,所以设计树状订阅机制,其订阅子树仅会收到子树消息,订阅父节点则会收到下属所有子树消息,这样在进行消息分发时不能简单的通过判断标记想到与否转发,所以采用了rie树算法加速消息分发。 + rie树又被称为前缀树、字典树是一种用于快速检索的多叉树结构。字典树把字符串看成字符序列,根据字符串中字符序列的先后顺序构造从上到下的树结构,树结构中的每一条边都对应着一个字符。字典树上存储的字符串被视为从根节点到某个节点之间的一条路径,并在终点节点上做个标记"该节点对应词语的结尾",正因为有终点节点的存在,字典树不仅可以实现简单的存储字符串,还可以实现字符串的映射,只需要将相对应的值悬挂在终点节点上即可。 Trie的核心思想是空间换时间,有如下基本性质: @@ -62,7 +72,8 @@ Trie的核心思想是空间换时间,有如下基本性质: \label{fig-f2} \end{figure} -分布式协议中,一个节点任一时刻处于以下三个状态之一: +每个节点上线时如果有现有的消息网络会直接连入现有的消息网络,当大量节点同时上线或者子网间关键节点下线时会触发节点选举,选举产生一位核心节点代表他们和其他集群进行消息通信,并在这些核心节点中再次选举产生一个核心节点,这样所有的节点会自动的根据网络环境分层出消息层,并在消息传递之间保持最小路径 +在分布式选举协议中,一个节点任一时刻处于以下三个状态之一: \begin{itemize} \item 从动 @@ -105,3 +116,49 @@ void MyTask (void) \section{终端通信} \section{性能分析} + +以下性能测试皆使用 2.4 GHz 八核Intel Core i9 作为测试芯片,并进行相关内核性能调优后得到的测试结果。 + +\begin{figure}[h!] + \centering + \includegraphics[width=0.8\textwidth]{figure/f4.png} + \caption{消息编码速率分布} + \label{fig-f4} +\end{figure} + +\begin{figure}[h!] + \centering + \includegraphics[width=0.8\textwidth]{figure/f5.png} + \caption{消息编码速率拟合曲线} + \label{fig-f5} +\end{figure} + +\begin{table} + \centering + \caption{消息编码} + \label{tab-three-line-table-example} + \begin{tabular}{cccc} + \toprule + 编码时间 & 下限 & 估值 & 上限 \\ + \midrule + 回归斜率 & 296.52 ns & 298.26 ns & 300.04 ns \\ + 拟合度 & 0.9228055 & 0.9263008 & 0.9225949 \\ + 均值 & 295.37 ns & 297.35 ns & 299.41ns \\ + 样本标准偏差 & 8.6420 ns & 10.325 ns & 11.813 ns \\ + 中值 & 293.45 ns & 295.80 ns & 297.40 ns\\ + 绝对中位差 & 6.1489 ns & 8.4741 ns & 11.089 ns\\ + \bottomrule + \end{tabular} +\end{table} + +由图4和表格可知,消息分发网络中消息编码时间在300ns左右,设备负载对消息编码速率分布有较大影响. +针对消息分发速率,使用wrk 工具对系统进行压力测试,得到图5 + +\begin{figure}[h!] + \centering + \includegraphics[width=0.8\textwidth]{figure/f6.png} + \caption{消息分发速率压测结果} + \label{fig-f6} +\end{figure} + +由图6可以看出,消息分发在未绑定任何响应函数的情况下单机可以达到每秒157651条,在未读取数据库情况下消息分发延迟6.33ms。 diff --git a/data/chapter4.tex b/data/chapter4.tex index cae254f..9563486 100644 --- a/data/chapter4.tex +++ b/data/chapter4.tex @@ -1,29 +1,60 @@ -\chapter{知识模型} +\chapter{规则模型设计} \section{基本模型} - 在建立数字孪生虚拟世界过程中,会有大大小小的规则、算法等知识纳入其中,任何规则算法归纳来讲都是描述任意虚拟或实体对象相关作用关系。本文归纳了这些规则、算法的共同特征,建立了一个一般性的知识模型,该模型是一个动态模型,其知识求解过程可根据特点纳入平台内运算或使用独立进程进行运算求解。 + 在建立数字孪生虚拟世界过程中,会有大大小小的规则、算法等规则纳入其中,任何规则算法归纳来讲都是描述任意虚拟或实体对象相关作用关系。本文归纳了这些规则、算法的共同特征,建立了一个一般性的规则模型,该模型是一个动态模型,其规则求解过程可根据特点纳入平台内运算或使用独立进程进行运算求解。 基本模型需要先建立三个外部特征,触发域、输入域、输出域。触发域主要用于设定触发求解过程的条件。输入域是指定该模型需要哪些虚拟/实体对象的什么参数。输出域是指定该模型输入影响范围和参数。 + 对于不同的规则或者说规则,根据其作用域和功能特点,将其分为现实类规则、虚拟类规则、仿真类规则 + + \begin{description} + \item[现实类规则]该类规则是具体场景下最底层规则,其触发域和输入域仅能为实体对象数据,虚拟场景运行与否不影响该类规则触发和生效作用。 + \item[仿真类规则]该类规则为虚拟环境中与实体对象对应的虚拟对象的数据的关联规则,其输出域可以设定于虚拟世界,也可作用于现实世界。 + \item[虚拟类规则]该类规则其输出域仅能作用于虚拟世界。 + \end{description} + 基本模型内部求解过程可以根据类型和功能特点选择提交公式或算法代码,或直接运行独立的求解程序。 + 本章以构建碰撞检测和刚体运动力学规则为例讲解代码和公式确定规则模型。 -\section{知识分类} +\section{公式解析} +在构建规则模型其中很重要的一步是支持公式输入,对于一条规则,我们可以提供节点数据并转换成合适的格式,比如对于某一理想形状体,我给予100N的力10s,如何通过规则模型解析公式获得该物体10s内的运动状态,首先我们需要去解析公式,确定输入变量数量和格式,在确定输出变量数量和格式,根据公式以一定的频率去输出结果。 +在公式撰写规则上直接采用先用的latex语法去语义化编写公式,采用AST算法去解析公式结构. +以该公式为例: +\[ y = 1 * 2 + (10 - 2) * x \] - 对于不同的知识或者说规则,根据其作用域和功能特点,将其分为现实类知识、虚拟类知识、仿真类知识 +将右侧表达式转换为RPN表达式 +\[ 1\ 2 * 10\ 2 - x * + \] -\subsection{现实类知识} +根据RPN表达式构建出的AST语法树为 +\begin{center} + \begin{tikzpicture} + [thick,scale=1, every node/.style={scale=1}] + \node {+} + child {node {*} + child {node {1}} + child [missing] {} + child {node {2}} + } + child [missing] {} + child [missing] {} + child [missing] {} + child { node {*} + child {node {-} + child {node {10}} + child {node {2}} + } + child [missing] {} + child {node {x}} + }; + \end{tikzpicture} +\end{center} - 该类知识是具体场景下最底层知识,其触发域和输入域仅能为实体对象数据,虚拟场景运行与否不影响该类知识触发和生效作用。 +以AST树构建公式算法,输入目前支持浮点数及矩阵格式,支持常用函数表达, 整体具体公式需要去做输入输出数据格式转换。 -\subsection{仿真类知识} - 该类知识为虚拟环境中与实体对象对应的虚拟对象的数据的关联知识,其输出域可以设定于虚拟世界,也可作用于现实世界。 - -\subsection{虚拟类知识} - 该类知识其输出域仅能作用于虚拟世界。 \section{碰撞检测} - 碰撞检测目前定义为虚拟类知识,暂时其输出域数据无法作用于现实世界,主要用于虚拟世界用户交互检测。 + 碰撞检测目前定义为虚拟类规则,暂时其输出域数据无法作用于现实世界,主要用于虚拟世界用户交互检测。 为了简化物体之间的碰撞检测运算,通常会对物体创建一个规则的几何外形将其包围。在本系统中,碰撞检测中将物体分为三种检测模型,点、AABB、球体。其中,AABB(axis-aligned bounding box)包围盒被称为轴对齐包围盒。 轴对齐包围盒是判断两个物体是否重叠的最快算法,物体被包裹在一个非旋转的(因此轴对齐的)盒中,并检查这些盒在三维坐标空间中的位置,以确定它们是否重叠。 @@ -123,6 +154,15 @@ function intersect(a, b) { 对于浏览器按像素点实时位置渲染精度而言,3阶泰勒展开已符合精度要求。 +因此对于理想点的运动规则模拟可以提交公式 + +\begin{lstlisting}[ + language={}, + label={code}, +] + p(t_{i+1}) = p(t_{i}) + p^{'}(t_{i})dt + p^{''}(t_{i})\frac{dt^{2}}{2!} + p^{'''}(t_{i})\frac{dt^{3}}{3!} +\end{lstlisting} + \subsection{3d物体旋转运动} @@ -161,3 +201,14 @@ I ={ q(t_{i+1}) = q(t_i) * [\cos{\frac{|\omega dt|}{2}},\sin{\frac{|\omega dt|}{2}}\frac{\omega}{|\omega|}] \end{equation} + +对于获取刚体旋转状态的规则特征可以提交为 +\begin{lstlisting}[ + language={}, + label={code}, +] + + q(t_{i+1}) = q(t_i) * [\cos{\frac{|\omega dt|}{2}},\sin{\frac{|\omega dt|}{2}}\frac{\omega}{|\omega|}] +} +\end{lstlisting} + diff --git a/data/chapter5.tex b/data/chapter5.tex index 969b670..cb9c398 100644 --- a/data/chapter5.tex +++ b/data/chapter5.tex @@ -2,8 +2,70 @@ \section{状态机制} -\section{时序模型} +在所有的节点集群中,将节点分为三大类: +\begin{description} + \item[服务节点]: 主要为系统服务节点,运行平台核心功能或一部分核心规则 + \item[物理节点]: 一个接入到消息网络的真实物理设备,其响应会在物理世界生效 + \item[虚拟节点]: 主要为规则节点或者虚体逻辑节点,代表一个虚拟物品或者一段规则。 +\end{description} + +每个节点在接入消息网络时会自动同步输入输出接口,为方便节点运算管理和展示,对节点库内置有限状态机逻辑,可在算法内直接调用和修改。 +除了在节点算法内自行配置状态机外,还可以在用户端对节点状态转移表进行直接控制,如下表所示根据不同的输入编辑状态转换逻辑 +\begin{table} + \centering + \caption{节点状态转移表} + \label{tab-three-line-table-example} + \begin{tabular}{cccc} + \toprule + & 状态A & 状态B & 状态C \\ + \midrule + 事件A & .... & ... & ... \\ + 事件B & .... & ... & ... \\ + 事件C & .... & 状态C & ... \\ + 事件D & .... & ... & ... \\ + \bottomrule + \end{tabular} +\end{table} \section{事件模型} -\section{预测算法} +有泛含某种特定逻辑的单条或者多条消息在本平台归纳为事件, 事件是在整个平台流转的最小价值信息,也是消息网络订阅主题的发布内容,每个主题仅会发布同种事件,事件具有特定的数据结构,不一定与节点输入输出数据结构相符,所以事件在到达和传出节点时会做一次结构转换。这样特定主体的事件就可以在整个消息网络和节点网络传播,并且即时生效和作用。事件也是数据存储的单位,每个事件都会作为一条消息存储在数据库中,后续所有基于数据的后期分析实质都是在这些时序事件中发现规则。 +其数据格式设计为: + +\begin{lstlisting} +{ + "distinct_id": "2b0a6f51a3cd6775", + "time": 1434556935000, + "type": "track", + "anonymous_id": "2b0a6f51a3cd6775", + "event": "", + "properties": { + "ip" : "180.79.35.65", + "data": "demo" + } +} +\end{lstlisting} + +\section{时序模型} + +时序模型是本平台最为核心的一个基础功能和分析手段。在已经运行的集群网络,会收集所有的历史事件,这些历史数据是所有数据分析的基础。整个集群会包含三个状态,过去,现在,未来。现在状态 就是物理集群目前的状态,会按照设定好的规则和节点逻辑运行。过去和未来状态皆是模拟场景,发生在用户端,用户在客户端可以自由的调整时间进度条,往前拉,虚拟场景会自动重新模拟当时的事件数据并按照当时的逻辑规则运行,往后拉,会根据历史的事件数据进行拟合,去预测未来的集群状态和数据。相当于在虚拟世界可以自由的调整时间线,平台会根据时间戳自动重播历史事件消息或者预测未来数据。 +本文采用时序分解法去预测未来数据,一个时间信号主要有四部分趋势影响叠加合成: + +\begin{description} + \item[长期趋势(Secular trend,T)] 指在较长时期内持续发展变化的一种趋向或状态。 + \item[季节变动(Seasonal Variation,S)] 由于季节的变化引起的规则变动 + \item[循环波动(Cyclical Variation,C)] 指以若干年为期限,不具严格规则的周期性连续变动 + \item[不规则波动(Irregular Variation,I)] 指由于众多偶然因素对时间序列造成的影响 +\end{description} + +对于不同的信号,其特征不同,预测算法参数也应该有偏重,具体的预测算法参数和模型可以由用户配置,也可使用默认配置。 + +预测模型可采用: + +\begin{description} + \item[加法模型] $ Y_t = T_t + S_t + C_t + I_t $ + \item[乘法模型] $ Y_t = T_t * S_t * C_t * I_t $ + \item[加乘模型] $ Y_t = T_t * S_t * C_t + I_t $ +\end{description} + +对于四种因素预测,可采用最典型的移动平均法,也可以如第四章所示自行提交预测函数进行预测 diff --git a/data/chapter6.tex b/data/chapter6.tex new file mode 100644 index 0000000..088bd35 --- /dev/null +++ b/data/chapter6.tex @@ -0,0 +1,7 @@ + +\chapter{应用案例} + +\section{规则模型-PID} + +\section{自组织网络-机械臂} + diff --git a/data/master/denotation.tex b/data/denotation.tex similarity index 100% rename from data/master/denotation.tex rename to data/denotation.tex diff --git a/figure/f4.png b/figure/f4.png new file mode 100644 index 0000000..c814995 Binary files /dev/null and b/figure/f4.png differ diff --git a/figure/f5.png b/figure/f5.png new file mode 100644 index 0000000..8649c72 Binary files /dev/null and b/figure/f5.png differ diff --git a/figure/f6.png b/figure/f6.png new file mode 100644 index 0000000..05b9aec Binary files /dev/null and b/figure/f6.png differ diff --git a/figure/f7.png b/figure/f7.png new file mode 100644 index 0000000..247c01f Binary files /dev/null and b/figure/f7.png differ diff --git a/main.pdf b/main.pdf index 843b189..096a10c 100644 Binary files a/main.pdf and b/main.pdf differ diff --git a/main.tex b/main.tex index bad471f..4e8da5c 100644 --- a/main.tex +++ b/main.tex @@ -28,7 +28,7 @@ \listoffigures \listoftables % 符号表 -\include{data/master/denotation} +\include{data/denotation} % 正文页码样式 \mainmatter @@ -41,6 +41,7 @@ \include{data/chapter3} \include{data/chapter4} \include{data/chapter5} +\include{data/chapter6} % \include{data/chapter3-download} % \include{data/chapter4-basic} % \include{data/chapter5-usage}