CN115951867A - 一种基于贝叶斯网络模型的代码生成方法、系统及介质 - Google Patents
一种基于贝叶斯网络模型的代码生成方法、系统及介质 Download PDFInfo
- Publication number
- CN115951867A CN115951867A CN202210692933.6A CN202210692933A CN115951867A CN 115951867 A CN115951867 A CN 115951867A CN 202210692933 A CN202210692933 A CN 202210692933A CN 115951867 A CN115951867 A CN 115951867A
- Authority
- CN
- China
- Prior art keywords
- probability
- node
- bayesian network
- code
- network model
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种基于贝叶斯网络模型的代码生成方法,涉及贝叶斯网络的推理方法和实现,以及自动代码生成技术。本发明方法包括:由待处理概率图模型信息生成对应的贝叶斯网络模型;根据贝叶斯网络模型生成动态C代码文件,结合预设的固定C代码文件,并根据预设的指派节点事件取第几个值的编号信息,实现根据底事件发生的概率求顶事件发生的概率,生成的动态C代码文件和预设的固定C代码文件交由计算机执行。本发明使用C代码实现了贝叶斯推理网络,根据输入的贝叶斯网络模型动态生成C代码,配合固定的C代码,可以实现根据底事件发生的概率求顶事件发生的概率,完成了贝叶斯推理网络的嵌入式实现,给出了嵌入式平台移植的解决方案。
Description
技术领域
本发明涉及一种基于贝叶斯网络模型的代码生成方法,涉及贝叶斯网络的推理方法和实现,以及自动代码生成技术。
背景技术
贝叶斯网络模型是一种概率图模型,由一个有向无环图和条件概率表组成。贝叶斯网络的拓扑结构由节点和有向边组成。节点表示随机变量,有向边表示随机变量之间的依赖关系。当两个节点之间存在连接关系时,则信息可以在这两个节点之间传递,表示这两个随机变量具有因果关系或是非条件独立的。当两个节点之间不存在连接关系时,则称这两个随机变量是条件独立的。如果两个节点以单向箭头连接,那么这两个节点之间会产生一个条件概率值。
条件概率是当一个事件发生时,另一个相关联事件发生的概率。即在事件B发生的情况下,判断相关联事件A发生的概率,可以记为P(A|B)。根据概率知识可知:
联合概率是指包含多个条件且所有条件同时成立的概率,可记作P(A,B,…)。
相关技术中,将贝叶斯网络模型的推理方法和实现转换为硬件设备能识别的代码,即完成了基于贝叶斯网络模型的代码生成。
星载计算机上存在实现与贝叶斯网络模型相关联算法的需求,需要将贝叶斯网络的推理方法和实现转换为嵌入式平台能识别的C代码,且需要根据底事件发生的概率获得顶事件发生的概率。
发明内容
本发明解决的技术问题是:克服现有技术的不足,提供了一种基于贝叶斯网络模型的代码生成方法,针对星载计算机上实现与贝叶斯网络模型相关联算法的需求,使用C代码实现了贝叶斯推理网络,根据输入的贝叶斯网络模型动态生成C代码,配合固定的C代码,可以实现根据底事件发生的概率求顶事件发生的概率,完成了贝叶斯推理网络的嵌入式实现,给出了嵌入式平台移植的解决方案。
本发明的技术解决方案是:一种基于贝叶斯网络模型的代码生成方法,包括:
由待处理概率图模型信息生成对应的贝叶斯网络模型;
根据贝叶斯网络模型生成动态C代码文件,结合预设的固定C代码文件,并根据预设的指派节点事件取第几个值的编号信息,实现根据底事件发生的概率求顶事件发生的概率,生成的动态C代码文件和预设的固定C代码文件交由计算机执行。
进一步地,所述待处理概率图模型信息包括节点标识、节点取值个数、父节点标识和概率矩阵。
进一步地,所述由待处理概率图模型信息生成对应的贝叶斯网络模型的方法包括:
解析待处理概率图模型信息,获取贝叶斯网络节点的标识、节点取值个数、父节点和节点的概率矩阵,基于获得的信息构造贝叶斯网络模型。
进一步地,所述指派节点事件取第几个值的编号信息包括贝叶斯网络模型中所有节点被指派取第几个值的编号信息,每个节点被指派取第几个值的编号信息按照节点的编号顺序依次罗列。
进一步地,所述根据底事件发生的概率求顶事件发生的概率的方法包括:
解析输入的待处理概率图模型信息构造贝叶斯网络,找到贝叶斯网络节点构造贝叶斯网络整体的数据结构;
对于已经解析完成的贝叶斯网络信息,获得贝叶斯网络的节点总数,将节点总数写入动态生成的.h代码字符串的节点总数的宏定义和表示节点取值个数的数组中;获得各个节点的取值个数,将节点总数和各个节点的取值个数写入动态生成的.c代码字符串的节点取值个数的数组中;获得各个节点的概率矩阵,将概率矩阵的值写入动态生成的.c代码字符串的每个节点的概率矩阵中;获得各个节点的节点编号、父节点编号和父节点个数,构建求贝叶斯网络中所有节点事件同时发生的联合概率的方法字符串;将动态生成的.h代码字符串和.c代码字符串分别写入.h文件和.c文件;
使用递归,根据动态生成的.c代码中求解全指派联合概率的方法,在固定C代码文件中求和获得P(A,GL)和P(GL);P(A,GL)和P(GL)均为不完全指派联合概率;其中,A为顶事件对应的节点标识,GL为底事件的集合。
根据P(A|GL)=P(A,GL)/P(GL)实现由底事件发生概率求顶事件发生概率P(A|GL)。
进一步地,所述动态C代码文件的代码中包括动态C代码和预设C代码;将所述动态C代码填入预设C代码中的相应位置以生成动态C代码文件的代码。
进一步地,所述动态C代码文件包括.h文件和.c文件;所述.h文件中的预设C代码包括贝叶斯网络模型中节点总数的宏定义,表示节点取值个数的数组所对应的外部全局变量声明,计算联合概率的外部函数声明,以及由底事件发生概率求顶事件发生概率的外部函数声明;所述.c文件中的预设C代码包括在生成的.c文件中需要生成的贝叶斯网络模型中所有节点的节点取值个数、网络中所有节点的概率矩阵,以及实现计算全指派联合概率的函数getProItem(int itemVal[])。
进一步地,所述固定C代码文件的代码中包括针对一个不完全指派计算概率的函数和由底事件发生概率求顶事件发生概率的函数。
一种计算机可读存储介质,所述的计算机可读存储介质存储有计算机程序,所述的计算机程序被处理器执行时实现所述一种基于贝叶斯网络模型的代码生成方法的步骤。
一种基于贝叶斯网络模型的代码生成设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述的处理器执行所述的计算机程序时实现所述一种基于贝叶斯网络模型的代码生成方法的步骤。
本发明与现有技术相比的优点在于:
(1)本发明解析贝叶斯网络模型信息,使用C代码实现贝叶斯推理网络,自动生成的C代码可以在星载嵌入式计算机上部署。
(2)本发明依据贝叶斯网络模型的特征,直接生成用于概率计算的C代码,将根据贝叶斯网络模型动态生成的C代码与固定的C代码结合,且固定的C代码与具体的贝叶斯网络结构解耦,是一种通用的代码。
附图说明
图1为本发明提供的一种贝叶斯网络模型的示例;
图2为本发明提供的一种解析输入的待处理概率图模型信息构造贝叶斯网络模型的过程示意图;
图3为本发明提供的一种基于贝叶斯网络模型生成代码,且实现根据底事件发生的概率求顶事件发生的概率的过程示意图。
具体实施方式
为了更好的理解上述技术方案,下面通过附图以及具体实施例对本申请技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
以下结合说明书附图对本申请实施例所提供的一种基于贝叶斯网络模型的代码生成方法做进一步详细的说明,具体实现方式可以包括(如图1~3所示)。
贝叶斯网络以树形网络为主,兼容某个节点有多个父节点的情况,如图1所示,其中A,B,C,D,E1,E2,E3,E4,E5,E6,E7分别是11个不同的随机变量,A为根节点,E1,E2,E3,E4,E5,E6,E7为叶子节点,且节点E3有两个父节点。那么,可得联合概率:
P(A,B,C,D,E1,E2,E3,E4,E5,E6,E7)=P(A)·P(B|A)·P(C|A)·P(D|A)·P(E1|B)·P(E2|B)·P(E3|(B,C))·P(E4|C)·P(E5|C)·P(E6|D)·P(E7|D)
本发明采取解析贝叶斯网络模型信息,生成C代码的技术方式。
对于贝叶斯网络的每个节点,其存在属性:节点标识,节点取值个数,概率矩阵以及父节点。节点的概率矩阵为二维数组,数组维度由父节点和节点取值个数决定,如果此节点没有父节点,则此节点的概率矩阵的行数为1,列数为此节点的节点取值个数;否则,父节点个数和父节点的节点取值个数的乘积决定此节点概率矩阵的行数,此节点的节点取值个数决定了此节点概率矩阵的列数。
为了构造贝叶斯网络模型,模型信息中需包括节点的标识,节点取值个数,父节点信息以及概率矩阵信息。构造方式如图2所示。
以下为从模型信息获得贝叶斯网络模型的过程。
1)解析输入的待处理概率图模型信息构造贝叶斯网络的数据结构。
2)在构造贝叶斯网络模型的过程中,需要找到所有的贝叶斯网络模型节点,找到后,获得此节点的子节点,再访问各个子节点。
3)处理单个节点,构造贝叶斯网络的节点的数据结构。在此步中,需要处理贝叶斯网络节点的标识、节点取值个数、父节点和节点的概率矩阵。
图3展示了基于贝叶斯网络模型生成代码,且实现根据底事件发生的概率求顶事件发生的概率的过程。通过解析输入的待处理概率图模型信息,生成代码字符串,将代码字符串转换为文件。这里生成两个C代码文件,分别为一个XXX.h文件和一个XXX.c文件。同时需要预设的固定C代码文件来实现根据底事件发生的概率求顶事件发生的概率。
1)生成XXX.h文件的代码字符串
输入为概率图模型信息,通过输入的概率图模型信息获得网络中所有节点的数量。将动态生成的节点数量填入预设C代码中,最后产生的代码字符串生成XXX.h文件。
例如,如果贝叶斯网络模型的节点数目为11,则生成的XXX.h文件为
其中,NODE_NUM表示贝叶斯网络模型的节点数;数组N_VN[]的长度为NODE_NUM,元素为每个节点的取值个数;数组itemVal[]和evidence[]指明每个节点取第几个值,例如数组中的值为0,则表示对应节点取第1个值,以此类推;targetId表示目标节点的编号信息,例如根节点的编号为0,以此类推;targetVal表示目标节点取第几个值;函数getProItem(int itemVal[])实现求全指派联合概率,函数getProbabilityEvidence(intevidence[],int targetId,int targetVal)实现根据底事件发生概率求顶事件发生概率。
2)生成XXX.c文件的代码字符串
在生成的XXX.c文件中需要生成贝叶斯网络模型中所有节点的节点取值个数、网络中所有节点的概率矩阵,以及实现计算全指派联合概率的函数getProItem(int itemVal[])。
贝叶斯网络模型中所有节点的节点取值个数依次存放在一个数组中。每个节点的概率矩阵展示此节点事件的所有条件概率的值。对于实现计算全指派联合概率的函数,通过遍历贝叶斯网络模型的所有节点,获得每个节点的节点标识和编号、父节点的编号和个数,那么,通过将每个节点指派的概率值依次相乘则可获得全指派联合概率的值。最后,将需要生成代码的所有字符串写进文件。
例如,生成如下代码:
3)实现贝叶斯推理的固定代码
为了实现由底事件概率求得顶事件概率,例如,图1中的底事件为E1,E2,E3,E4,E5,E6,E7,顶事件为A。则需要计算P(A|(E1,E2,E3,E4,E5,E6,E7))。
由于P(A|(E1,E2,E3,E4,E5,E6,E7))=P(A,E1,E2,E3,E4,E5,E6,E7)/P(E1,E2,E3,E4,E5,E6,E7),那么,通过计算不完全指派联合概率P(A,E1,E2,E3,E4,E5,E6,E7)和P(E1,E2,E3,E4,E5,E6,E7),则可得到P(A|(E1,E2,E3,E4,E5,E6,E7))。
代码如下所示:
其中,itemVal[]数组中的元素指定贝叶斯网络模型的叶子节点取值为第几个数,getProbability(int itemVal[])函数针对一个不完全指派,计算联合概率,如果itemVal[]中的某一个元素小于0,则对应编号的节点未指派,例如itemVal[0]的值小于0,则编号为0的节点未指派。
getProbabilityEvidence(int evidence[],int targetId,int targetVal)函数中的数组evidence[]存放每个叶子节点,即底事件指派的取第几个值的编号,targetId为顶节点的编号,targetVal为顶节点事件取第几个值的编号。根据此函数,实现由底事件发生概率求顶事件发生概率,例如计算
P(A|(E1,E2,E3,E4,E5,E6,E7))=P(A,E1,E2,E3,E4,E5,E6,E7)/P(E1,E2,E3,E4,E5,E6,E7)。
本申请提供的实施例中,实现由底事件概率求顶事件概率的代码包括动态生成的.h和.c代码以及固定代码。
在本申请提供的实施例中,全指派联合概率指的是贝叶斯网络模型中所有节点事件均设定指定取值,且这些节点事件同时成立的联合概率;不完全指派联合概率指的是贝叶斯网络模型中部分节点事件均设定指定取值,且这些节点事件同时成立的联合概率。
输入:待处理概率图模型信息、指派节点事件取第几个值的编号信息。
待处理概率图模型信息包括节点标识、节点取值个数、父节点标识和概率矩阵。
指派节点事件取第几个值的编号信息包括贝叶斯网络模型中所有节点被指派取第几个值的编号信息,每个节点被指派取第几个值的编号信息按照节点的编号顺序依次罗列。
对于每个节点,关键属性包括节点标识、节点取值个数、概率矩阵和父节点信息。
对于贝叶斯网络模型,关键属性包括根节点、节点列表和节点标识-节点的映射表。
解析输入的待处理概率图模型信息构造贝叶斯网络,找到贝叶斯网络节点构造贝叶斯网络整体的数据结构,在此过程中,每找到一个贝叶斯网络节点则处理单个节点,构造贝叶斯网络的节点的数据结构。在处理单个节点的过程中,分别处理节点标识、节点取值个数、父节点信息和概率矩阵,将解析结果存入贝叶斯网络的节点的数据结构中。
对于已经解析完成的贝叶斯网络信息,获得贝叶斯网络的节点总数,将节点总数写入动态生成的.h代码字符串的节点总数的宏定义和表示节点取值个数的数组中;获得各个节点的取值个数,将节点总数和各个节点的取值个数写入动态生成的.c代码字符串的节点取值个数的数组中;获得各个节点的概率矩阵,将概率矩阵的值写入动态生成的.c代码字符串的每个节点的概率矩阵中;获得各个节点的节点编号、父节点编号和父节点个数,构建求贝叶斯网络中所有节点事件同时发生的联合概率的方法字符串。最后,将动态生成的.h代码字符串和.c代码字符串分别写入.h文件和.c文件。
对于固定代码,实现计算不完全指派联合概率的方法,以及由底事件发生概率求顶事件发生概率的方法。假设贝叶斯网络的顶点的节点标识为A,叶子节点的集合为GL={Li,i=1,2,…},既非顶点也非叶子节点的节点集合为GM={Mj,j=1,2,…}。
为了实现由底事件发生概率求顶事件发生概率,则需求解P(A|GL)。
P(A|GL)=P(A,GL)/P(GL)
这里的P(A,GL)和P(GL)均为不完全指派联合概率。
由于
P(A,GL)=∑GMP(A,GM*,GL)
P(GL)=∑A,GMP(A*,GM*,GL)
其中,事件后的*表示对应事件未被指派取值,未加*表示对应事件被指派取值。
使用递归,根据动态生成的.c代码中的求解全指派联合概率的方法,求和获得P(A,GL)和P(GL),即实现计算不完全指派联合概率。则可根据P(A|GL)=P(A,GL)/P(GL)实现由底事件发生概率求顶事件发生概率。
在本申请实施例所提供的方案中,图1展示了一种树状的贝叶斯网络。其中每个节点均有对应的概率矩阵。例如对于根节点A,此根节点的取值个数为2,分别取值为合理或者不合理,根节点A的概率矩阵为:
合理 | 不合理 | |
A | 0.5 | 0.5 |
由根节点A的概率矩阵可知,A的先验概率P(A=合理)=0.5,P(A=不合理)=0.5。
对于节点B,其取值个数为2,分别取值为充分和不充分,且父节点为根节点A,对应的概率矩阵为:
由上述概率矩阵可知,条件概率P(B=充分|A=合理)=0.6,P(B=不充分|A=合理)=0.4,P(B=充分|A=不合理)=0.4,P(B=不充分|A=不合理)=0.6。
对于节点E3,其取值个数为2,分别取值为正常和不正常,且父节点有2个,分别为节点B和节点C(节点C的取值个数为2,分别取值为顺利和不顺利),对应的概率矩阵为:
由上述概率矩阵可知,条件概率P(E3=正常|B=充分,C=顺利)=0.3,P(E3=不正常|B=充分,C=顺利)=0.7,P(E3=正常|B=不充分,C=顺利)=0.6,P(E3=不正常|B=不充分,C=顺利)=0.4,P(E3=正常|B=充分,C=不顺利)=0.5,P(E3=不正常|B=充分,C=不顺利)=0.5,P(E3=正常|B=不充分,C=不顺利)=0.2,P(E3=不正常|B=不充分,C=不顺利)=0.8。
对于贝叶斯网络的每个节点,具有以下属性:
节点标识;节点取值个数;概率矩阵;父节点。
通过解析输入的概率图模型信息构造贝叶斯网络模型,概率图模型信息中描述了贝叶斯网络模型中所有节点的属性信息。通过处理贝叶斯网络的每个节点的父节点、节点标识、节点取值个数和概率矩阵可以处理每个单独的节点,然后可以构造贝叶斯网络模型。接着通过构造的贝叶斯网络模型可以获得网络模型中的节点属性信息和模型属性信息。对于由底事件概率求顶事件概率,根据条件概率公式,可以得到下列公式:
P(A|(E1,E2,E3,E4,E5,E6,E7))=P(A,E1,E2,E3,E4,E5,E6,E7)/P(E1,E2,E3,E4,E5,E6,E7),其中,A是根节点,E1,E2,E3,E4,E5,E6,E7是叶子节点。那么可以分别求不完全指派联合概率P(A,E1,E2,E3,E4,E5,E6,E7)和P(E1,E2,E3,E4,E5,E6,E7)的值,就可以获得P(A|(E1,E2,E3,E4,E5,E6,E7))的值。
对于不完全指派联合概率P(A,E1,E2,E3,E4,E5,E6,E7):
P(A,E1,E2,E3,E4,E5,E6,E7)=∑B,C,DP(A,B*,C*,D*,E1,E2,E3,E4,E5,E6,E7)
其中,事件后的*表示对应事件未被指派取值,即B,C,D未被指派取值,A,E1,E2,E3,E4,E5,E6,E7均被指派取第几个值。
对于不完全指派联合概率P(E1,E2,E3,E4,E5,E6,E7):
P(E1,E2,E3,E4,E5,E6,E7)=∑A,B,C,DP(A*,B*,C*,D*,E1,E2,E3,E4,E5,E6,E7)
其中,A,B,C,D未被指派取值,E1,E2,E3,E4,E5,E6,E7均被指派取第几个值。
对于这两个不完全指派联合概率,可以通过如下函数进行求解:
其中,数组itemVal[]的长度为贝叶斯网络模型的节点数,数组中的值顺序依次与网络节点的编号相符,数组中的每个非负数的值发别对应每个节点取值第几个数。对于这个输入的数组itemVal[],只有叶子节点取值编号对应的取值大于或等于0,否则值设为负数。例如,itemVal[6]=0表示叶子节点E3取第一个值,即“正常”。
本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行图1所述的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。
Claims (10)
1.一种基于贝叶斯网络模型的代码生成方法,其特征在于,包括:
由待处理概率图模型信息生成对应的贝叶斯网络模型;
根据贝叶斯网络模型生成动态C代码文件,结合预设的固定C代码文件,并根据预设的指派节点事件取第几个值的编号信息,实现根据底事件发生的概率求顶事件发生的概率,生成的动态C代码文件和预设的固定C代码文件交由计算机执行。
2.根据权利要求1所述的一种基于贝叶斯网络模型的代码生成方法,其特征在于,所述待处理概率图模型信息包括节点标识、节点取值个数、父节点标识和概率矩阵。
3.根据权利要求2所述的一种基于贝叶斯网络模型的代码生成方法,其特征在于,所述由待处理概率图模型信息生成对应的贝叶斯网络模型的方法包括:
解析待处理概率图模型信息,获取贝叶斯网络节点的标识、节点取值个数、父节点和节点的概率矩阵,基于获得的信息构造贝叶斯网络模型。
4.根据权利要求2所述的一种基于贝叶斯网络模型的代码生成方法,其特征在于:所述指派节点事件取第几个值的编号信息包括贝叶斯网络模型中所有节点被指派取第几个值的编号信息,每个节点被指派取第几个值的编号信息按照节点的编号顺序依次罗列。
5.根据权利要求4所述的一种基于贝叶斯网络模型的代码生成方法,其特征在于,所述根据底事件发生的概率求顶事件发生的概率的方法包括:
解析输入的待处理概率图模型信息构造贝叶斯网络,找到贝叶斯网络节点构造贝叶斯网络整体的数据结构;
对于已经解析完成的贝叶斯网络信息,获得贝叶斯网络的节点总数,将节点总数写入动态生成的.h代码字符串的节点总数的宏定义和表示节点取值个数的数组中;获得各个节点的取值个数,将节点总数和各个节点的取值个数写入动态生成的.c代码字符串的节点取值个数的数组中;获得各个节点的概率矩阵,将概率矩阵的值写入动态生成的.c代码字符串的每个节点的概率矩阵中;获得各个节点的节点编号、父节点编号和父节点个数,构建求贝叶斯网络中所有节点事件同时发生的联合概率的方法字符串;将动态生成的.h代码字符串和.c代码字符串分别写入.h文件和.c文件;
使用递归,根据动态生成的.c代码中求解全指派联合概率的方法,在固定C代码文件中求和获得P(A,GL)和P(GL);P(A,GL)和P(GL)均为不完全指派联合概率;其中,A为顶事件对应的节点标识,GL为底事件的集合。
根据P(A|GL)=P(A,GL)/P(GL)实现由底事件发生概率求顶事件发生概率P(A|GL)。
6.根据权利要求1所述的一种基于贝叶斯网络模型的代码生成方法,其特征在于:所述动态C代码文件的代码中包括动态C代码和预设C代码;将所述动态C代码填入预设C代码中的相应位置以生成动态C代码文件的代码。
7.根据权利要求6所述的一种基于贝叶斯网络模型的代码生成方法,其特征在于:所述动态C代码文件包括.h文件和.c文件;所述.h文件中的预设C代码包括贝叶斯网络模型中节点总数的宏定义,表示节点取值个数的数组所对应的外部全局变量声明,计算联合概率的外部函数声明,以及由底事件发生概率求顶事件发生概率的外部函数声明;所述.c文件中的预设C代码包括在生成的.c文件中需要生成的贝叶斯网络模型中所有节点的节点取值个数、网络中所有节点的概率矩阵,以及实现计算全指派联合概率的函数getProItem(intitemVal[])。
8.根据权利要求1所述的一种基于贝叶斯网络模型的代码生成方法,其特征在于:所述固定C代码文件的代码中包括针对一个不完全指派计算概率的函数和由底事件发生概率求顶事件发生概率的函数。
9.一种计算机可读存储介质,所述的计算机可读存储介质存储有计算机程序,其特征在于,所述的计算机程序被处理器执行时实现如权利要求1~权利要求8任一所述方法的步骤。
10.一种基于贝叶斯网络模型的代码生成设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于:所述的处理器执行所述的计算机程序时实现如权利要求1~权利要求8任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210692933.6A CN115951867A (zh) | 2022-11-30 | 2022-11-30 | 一种基于贝叶斯网络模型的代码生成方法、系统及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210692933.6A CN115951867A (zh) | 2022-11-30 | 2022-11-30 | 一种基于贝叶斯网络模型的代码生成方法、系统及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115951867A true CN115951867A (zh) | 2023-04-11 |
Family
ID=87284701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210692933.6A Pending CN115951867A (zh) | 2022-11-30 | 2022-11-30 | 一种基于贝叶斯网络模型的代码生成方法、系统及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115951867A (zh) |
-
2022
- 2022-11-30 CN CN202210692933.6A patent/CN115951867A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210374563A1 (en) | Solution Automation | |
CN109194707B (zh) | 分布式图嵌入的方法及装置 | |
CN113033811B (zh) | 两量子比特逻辑门的处理方法及装置 | |
US8869111B2 (en) | Method and system for generating test cases for a software application | |
US20150261881A1 (en) | Logical data flow mapping rules for (sub) graph isomorphism in a cluster computing environment | |
CN110348798A (zh) | 一组服务的状态转换 | |
CN108664241B (zh) | 一种将SysML模型进行仿真验证的方法 | |
US20070299835A1 (en) | Search engine for software components and a search program for software components | |
CN108197187B (zh) | 查询语句的优化方法、装置、存储介质和计算机设备 | |
Willson | Regular networks can be uniquely constructed from their trees | |
CN112667860A (zh) | 一种子图匹配方法、装置、设备及存储介质 | |
CN111967271A (zh) | 分析结果的生成方法、装置、设备及可读存储介质 | |
CN112906206A (zh) | 数字孪生模型构建方法和装置 | |
CN115618010A (zh) | 融合图谱的存储和处理方法及装置 | |
CN109344169B (zh) | 数据处理方法及装置 | |
CN114238078A (zh) | 一种基于高阶函数的程序间依赖关系抽取方法 | |
JP7041603B2 (ja) | 計算機システム及び業務フローのパターンの生成方法 | |
US20090064092A1 (en) | Visual programming language optimization | |
CN115951867A (zh) | 一种基于贝叶斯网络模型的代码生成方法、系统及介质 | |
CN114691630B (zh) | 一种智慧供应链大数据共享方法及系统 | |
CN116629015A (zh) | 数字孪生任务的处理方法、装置、设备及存储介质 | |
CN107122849B (zh) | 基于SparkR的产品检测总完工时间极小化方法 | |
CN106991195B (zh) | 一种分布式的子图枚举方法 | |
JP5555238B2 (ja) | ベイジアンネットワーク構造学習のための情報処理装置及びプログラム | |
KR101256922B1 (ko) | 예측 및 분석을 위한 분산 의사 결정 트리 생성방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |