CN117453222A - 一种多参数公式编译方法及其编译器 - Google Patents

一种多参数公式编译方法及其编译器 Download PDF

Info

Publication number
CN117453222A
CN117453222A CN202311320035.9A CN202311320035A CN117453222A CN 117453222 A CN117453222 A CN 117453222A CN 202311320035 A CN202311320035 A CN 202311320035A CN 117453222 A CN117453222 A CN 117453222A
Authority
CN
China
Prior art keywords
variable
formula
variables
formulas
initial
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
Application number
CN202311320035.9A
Other languages
English (en)
Inventor
欧阳鹏
李强
刘昱
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sany Group Co Ltd
Original Assignee
Sany Group Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sany Group Co Ltd filed Critical Sany Group Co Ltd
Priority to CN202311320035.9A priority Critical patent/CN117453222A/zh
Publication of CN117453222A publication Critical patent/CN117453222A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种多参数公式编译方法及其编译器,解决或改善了现有技术中同时只能计算一个计算式,导致工作量较大,从而降低了整个计算的效率的技术问题。本申请提供的多参数公式编译方法,对应具有多参数的目标公式的编译过程中,采用了将目标公式拆分成多个初始公式,然后解析每个初始公式中的变量,并对变量进行变量赋值,另外确定初始公式之间的计算顺序,并进行公式编译,获得公式编译码,基于变量值以及公式编译码进行计算,获得目标公式所对应的计算数值。相较于每次只能计算一个计算式而言,本申请对多个公式中的变量的依赖关系以及多个公式之间的依赖关系进行解析,以对多个公式以多嵌套的方式进行一次性计算,提高了计算效率。

Description

一种多参数公式编译方法及其编译器
技术领域
本申请涉及计算机技术领域,具体涉及一种多参数公式编译方法及其编译器。
背景技术
工业数字孪生是一种将物理世界与数字模型相结合的技术,通过实时监测、数据采集和分析,将实际工厂、设备或过程的运行状态数字化成为虚拟模型。数字孪生可用于设备状态监控、故障诊断、性能优化等领域,帮助企业实现智能化管理和精细化运营。虚拟仿真则是通过计算机技术创建一个虚拟环境,模拟真实场景或过程,用于测试和验证设计方案、产品性能、工艺流程等。虚拟仿真可以帮助企业在产品开发、工艺设计等阶段发现问题,减少试错成本,提高效率。
制造业的数字孪生与模拟仿真,必不可少的是用数学表达式对生产制造流程进行复刻、优化,在这个过程中无法避免的就是参数创建、基于多复杂参数循环依赖的表达式的计算。
目前主要集中于单公式计算,将单一公式的相同表达式进行提取作为参数进行计算,但是在整个计算过程中,表达式本身不具有不可解参数,且同时只能计算一个计算式,导致工作量较大,从而降低了整个计算的效率。
发明内容
有鉴于此,本申请提供了一种多参数公式编译方法及其编译器,解决或改善了现有技术中同时只能计算一个计算式,导致工作量较大,从而降低了整个计算的效率的技术问题。
根据本申请的第一个方面,本申请提供了一种多参数公式编译方法,包括:
获取与目标公式相关的多个初始公式,所述目标公式具有多个变量;根据所述初始公式,解析所有所述初始公式中所有变量以及变量的变量属性;根据所有初始公式中所有变量,确定多个所述初始公式之间的计算顺序;根据变量的变量属性,对所有所述变量进行变量赋值,以获取所述变量的变量值;基于多个所述初始公式之间的计算顺序,对所有所述初始公式进行公式编译,生成公式编译码;以及
基于所述变量的变量值对所述公式编译码进行计算,以获取目标公式所对应的计算数值。
在一种可能得实现方式中,获取与目标公式相关的多个初始公式,包括:获取用户输入的需求信息,其中,所述需求信息与所述目标公式对应;根据所述需求信息在公式库中查询与所述需求信息对应的公式文件包,所述公式文件包包括多个公式;其中,所述公式库包括需求信息以及与需求信息对应的公式文件包;
其中,所述初始公式为所述公式文件包中的多个公式。
在一种可能得实现方式中,在获取用户输入的需求信息之前,所述多参数公式编辑器编译方法,还包括:构建公式库,所述公式库包括需求信息以及与需求信息对应的公式文件包;其中,公式文件包包括多个公式。
在一种可能得实现方式中,根据所有初始公式中所有变量,确定多个所述初始公式之间的计算顺序,包括:根据所有所述初始公式中所有变量,确定变量池,所述变量池包括所述多个初始公式中的所有变量;采用正则方式对所述变量池中的变量进行统计,以确定多个初始公式中的变量之间的依赖关系;基于所述变量之间的依赖关系,采用拓扑排序算法,确定多个初始公式之间的计算顺序。
在一种可能得实现方式中,根据所述初始公式,解析所有所述初始公式中所有变量以及变量的变量属性,包括:基于所述初始公式,解析所述初始公式中的变量;
采用正则方式对所述变量池中的变量进行统计,以确定多个初始公式中的变量之间的依赖关系;根据所述变量之间的依赖关系确定所述变量的变量属性,所述变量的变量属性包括依赖变量以及独立变量。
在一种可能得实现方式中,根据变量的变量属性,对所有所述变量进行变量赋值,以获取所述变量的变量值,包括:当所述变量为空值时,确定所述变量的变量类型,所述变量类型包括常数变量、数据库查询变量以及计算变量;以及
基于所述变量类型以及所述变量属性,对所述变量进行变量赋值,以确定所述变量的变量值;当所述变量不为空值时,基于多个所述初始公式之间的计算顺序,对所有所述初始公式进行公式编译,生成公式编译码。
在一种可能得实现方式中,基于所述变量类型以及所述变量属性,对所述变量进行变量赋值,以确定所述变量的变量值,包括:当所述变量的变量类型为所述常数变量时,将与所述常数变量对应的数值确定为所述变量的变量值;当所述变量的变量类型为所述数据库查询变量时,基于所述变量,在变量数据库中查询,以确定所述变量的变量值;当所述变量的变量类型为计算变量且所述变量中未包含未知参数时,获取与所述变量对应的初始公式以及所述变量的关联变量,并基于所述关联变量以及所述初始公式计算所述变量的变量值。
在一种可能得实现方式中,基于所述变量类型以及所述变量属性,对所述变量进行变量赋值,以确定所述变量的变量值,还包括:当所述变量的变量类型为计算变量且所述变量中包含未知参数时,基于所述初始公式,根据所述初始公式,解析所有所述初始公式中所有变量以及变量的变量属性。
在一种可能得实现方式中,在当所述变量的变量类型为所述数据库查询变量时,基于所述变量在变量数据库中查询,以确定所述变量的变量值之后,基于所述变量类型以及所述变量属性,对所述变量进行变量赋值,以确定所述变量的变量值,还包括:将所述变量的变量值存储在缓存表中,所述缓存表包括变量以及与所述变量对应的变量值。
作为本申请的第二方面,本申请还提供了一种多参数公式编译器,包括:
获取模块,获取与目标公式相关的多个初始公式,所述目标公式具有多个变量;
变量属性确定模块,用于根据所述初始公式,解析所有所述初始公式中所有变量以及变量的变量属性;计算顺序确定模块,用于根据所有初始公式中所有变量,确定多个所述初始公式之间的计算顺序;变量值确定模块,用于根据变量的变量属性,对所有所述变量进行变量赋值,以获取所述变量的变量值;编译公式生成模块,基于多个所述初始公式之间的计算顺序,对所有所述初始公式进行公式编译,生成公式编译码;以及计算模块,用于基于所述变量的变量值对所述公式编译码进行计算,以获取目标公式所对应的计算数值。
本申请提供的多参数公式编译方法,对应具有多参数的目标公式的编译过程中,采用了将目标公式拆分成多个初始公式,然后解析每个初始公式中的变量一方面追溯变量的变量属性,并对变量进行变量赋值,另一方面,根据变量确定初始公式之间的计算顺序,并进行公式编译,获得公式编译码,基于变量值以及公式编译码进行计算,获得目标公式所对应的计算数值。相较于每次只能计算一个计算式而言,本申请提供的多参数公式编译方法,在整个编译过程中,对多个公式中的变量的依赖关系以及多个公式之间的依赖关系(即计算顺序)进行解析,以对多个公式以多嵌套的方式进行一次性计算,减少了计算的工作量,从而提高了计算效率。
附图说明
通过结合附图对本申请实施例进行更详细的描述,本申请的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请,并不构成对本申请的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1所示本申请提供的一种多参数公式编译方法的流程示意图。
图2所示为本申请提供的一种多参数公式编译方法中的目标公式与初始公式之间的层级关系图。
图3所示为本申请另一实施例提供的多参数公式编译方法的流程示意图。
图4所示为本申请另一实施例提供的多参数公式编译方法的流程示意图。
图5所示为本申请另一实施例提供的多参数公式编译方法的流程示意图。
图6所示为本申请另一实施例提供的多参数公式编译方法的流程示意图。
图7所示为本申请另一实施例提供的多参数公式编译方法的流程示意图。
图8所示为本申请另一实施例提供的多参数公式编译方法的流程示意图。
图9所示为本申请另一实施例提供的多参数公式编译方法的流程示意图。
图10所示为本申请另一实施例提供的多参数公式编译器的工作原理图。
图11所示为本申请一实施例提供的电子设备的结构框图。
具体实施方式
本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。本申请实施例中所有方向性指示(诸如上、下、左、右、前、后、顶、底……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
另外,在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
示例性方法
图1所示本申请提供的一种多参数公式编译方法的流程示意图。如图1所示,此多参数公式编译方法具体可以包括如下步骤:
S1:获取与目标公式相关的所有初始公式,目标公式具有多个变量;
初始公式具有至少一个子变量,子变量为变量的关联变量;
具体的,图2所示为目标公式与初始公式之间的层级关系图,如图2所示,目标公式具有多个变量,而每个变量可能由第一公式计算得到,第一公式中可能依然具有至少一个子变量,而每个子变量可能由第二公式计算得到,第二公式中可能依然具有至少一个子变量,而每个子变量可能由第三公式计算得到,依次类推。
初始公式则包括与所述目标公式相关的所有公式,例如包括上述第一公式、第二公式以及第三公式。
S2:根据初始公式,解析所有初始公式中的变量以及变量的变量属性;
具体的,变量属性包括独立变量以及依赖变量。
获取所有初始公式中的独立变量以及依赖变量,独立变量是一个量改变不会引起除因变量以外的其他量的改变。依赖变量为非独立变量,指一个量改变会引起除因变量以外的其他量改变。
具体的,确定变量属性时,可以根据变量之间的变量关系来确定,变量之间的变量关系包括:变量之间的归属关系,例如变量之间是否属于同一个初始公式内;以及变量之间的依赖关系,例如依赖变量之间的依赖关系,依赖变量与独立变量之间的依赖关系。
例如:独立变量1与独立变量2在同一个初始公式1中;独立变量1与依赖变量在同一个初始公式2中;依赖变量1与依赖变量2和依赖变量3之间具有直接依赖关系,即,依赖变量2以及依赖变量3任何一个改变均可以直接影响依赖变量1的改变;或依赖变量1与独立变量1以及独立变量2之间具有直接依赖关系,即独立变量1以及独立变量2任何一个改变均可以直接影响依赖变量1的改变。
S3:根据所有初始公式中所有变量,确定多个初始公式之间的计算顺序;
具体的,如图2所示,多个初始公式之间的计算顺序可以为:首先根据第三公式111以及第三公式112计算第二公式11,根据第三公式121计算第二公式12,根据第三公式211计算第二公式21……;然后根据第二公式11、第二公式12计算第一公式1,根据第二公式21以及第二公式22计算第一公式2……;最后根据第一公式1、第一公式2以及第一公式3计算目标公式。
S4:根据变量的变量属性,对所有变量进行变量赋值,以获取变量的变量值。
变量是在程序中用来指向数据对象,对变量进行变量赋值则是把数据和变量关联起来,即对变量进行变量赋值后,变量的变量值则为数据和变量的关联信息。
由于变量属性可以为独立变量,也可以为依赖变量,而变量属性不同,变量的变量赋值方式也不同。
S5:基于多个初始公式之间的计算顺序,对所有初始公式进行公式编译,生成公式编译码;
具体的,基于多个初始公式之间的计算顺序,对所有初始公式进行公式编译,生成公式编译码,具体包括如下步骤:
(1)词法分析:基于计算顺序,通过有限状态机,得到记号流,即变量之间的变量关系流。
词法分析是将字符序列转换为单词(Token)序列的过程。
有限状态机(FSM finite state machine或者FSA finite state automaton)是为研究有限内存的计算过程和某些语言类而抽象出的一种计算模型。有限状态机拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串即可决定执行哪个状态的迁移。有限状态机可以表示为一个有向图。
即采用词法分析即可将字符流转化为记号流。
(2)语法分析:定义语句产生式,输入词法分析后得到的记号流,依照产生式,通过自顶向下的上下文无关文法分析,产生Java字节码。
具体的,语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“表达式”等等,即通过语法分析可以将S1中的初始公式编译成计算机语言中的表达式。
语法分析程序判断源程序在结构上是否正确,源程序的结构由上下文无关文法描述。
语法分析程序可以用YACC等工具自动生成。
(3)生成字节码:在Java执行计算结果。
字节码是一种中间状态的二进制文件。即在Java执行计算结果,以得到公式编译码。
S6:基于变量的变量值对公式编译码进行计算,以获取目标公式所对应的计算数值。
将变量的变量值以及公式编译码进行计算,即可确定目标公式所对应的计算数值,即可计算出根据目标公式所能得到的数据。
本申请提供的多参数公式编译方法,对应具有多参数的目标公式的编译过程中,采用了将目标公式拆分成多个初始公式,然后解析每个初始公式中的变量,一方面追溯变量的变量属性,并对变量进行赋值;另一方面,根据变量确定多个初始公式之间的计算顺序,并进行公式编译,获得公式编译码,并基于变量值以及公式编译码进行计算,获得目标公式所对应的计算数值。相较于多参数的公式每次只能计算一个计算式,计算多次才能计算多参数的公式而言,本申请提供的多参数公式编译方法,在整个编译过程中,对多个公式中的变量的依赖关系以及多个公式之间的依赖关系(即计算顺序)进行解析,以对多个公式以多嵌套的方式进行一次性计算,减少了计算的工作量,从而提高了计算效率。
在一种可能的实现方式中,如图3所示,S1:(获取与目标公式相关的所有初始公式)具体包括如下步骤:
S11:获取用户输入的需求信息,其中,需求信息与目标公式对应;
具体的,需求信息与目标公式对应,即用户输入的需求信息指的是用户所需要计算的数据,例如数据A,那么该数据A则对应一个目标公式,通过对应的目标公式即可计算得到数据A。
而目标公式则对应一个公式文件包,公式文件包中包括多个公式。
S12:根据需求信息在公式库中查询与需求信息对应的公式文件包,公式文件包包括多个公式;
具体的,公式库为构建完成的,公式库中存储有公式文件包以及与公式文件包对应的需求信息,公式文件包中包括多个公式,多个公式按照计算顺序依次计算则可得到目标公式。
因此,当根据用户输入的需求信息,在公式库中查找与之对应的需求信息,即可查询得到与需求信息对应的公式文件包,而公式文件包中的多个公式则为与目标公式相关的初始公式。
在一种可能的实现方式中,如图4所示,在S11(获取用户输入的需求信息,其中,需求信息与目标公式对应)之前,多参数公式编辑器编译方法,还包括以下步骤:
S10:构建公式库,公式库包括需求信息以及与需求信息对应的公式文件包;其中,公式文件包包括多个公式。
具体的,S10(构建公式库)可具体包括如下步骤:
S101:基于需求信息,选择公式类型;
具体的,公式类型可以包括:自定义公式,搜索公式。用户可以选择公式类型,当用户选择自定义公式类型之后,前端页面上会显示出公式编辑页面,用户可以在编辑页面上取与需求信息对应的变量,以及变量之间所需要的运算符。
当用户选择搜索公式类型之后,前端页面上会显示输入框,用户输入与需求信息对应的变量,即可自动匹配对应的公式。
S102:基于公式类型,获取与需求信息对应的变量以及常规运算符,并基于变量以及常规运算符确定多个公式;
当确定公式类型后,即可根据需求信息以及对应的变量以及常规运算符,确定多个公式。具体的确定过程如下:
(1)当自定义公式为使用运算符自定义公式,即根据用户输入的需求信息,根据与需求信息相关的变量,并使用常规运算符,录入公式,以形成自定义公式。
具体的,常规运算符包括但不限于:
①算数运算符:加(+)、减(-)、乘(*)、除(/)、括号(())
②关系运算符:大于(>)、小于(<)、等于(=)、大于等于(>=)、小于等于(<=)、不等于(!=)
③逻辑运算符:与(&&)、或(||)、非(!=)
④特殊运算符:引号(‘’、””,英文格式)
⑤取整方式:四舍五入,保留两位小数
(2)当用户选择了搜索公式类型
搜索公式则根据用户的输入的需求信息在公式数据库中进行搜索,公式数据库中包括数据以及与数据对应的公式,例如数据B对应的为公式B,即通过公式B即可计算得到数据B,同理,公式B中包括有变量A,变量A则也是数据一种形式,那么变量A对应为公式A,通过公式A可以计算得到变量A。
也就是说,通过在公式数据库中可以搜索到与需求信息对应的公式。
(3)无论是通过自定义表达式类型还是搜索公式类型而确定的公式后,需要根据每个公式之间的关系,进行梯度设置以及分段公式设置。
例如,如图2所示,目标公式由第一公式1、第一公式2以及第一公式3计算得到的,而第一公式1由第二公式11以及第二公式12计算得到的,第一公式2则由第二公式21以及第二公式22计算得到,第一公式3则由第二公式31以及第二公式32计算得到,依次类推,第二公式11则由第三公式111以及第三公式112计算得到。
S103:将需求信息、多个公式打包为公式文件包,并将公式文件包存入公式库中。
当确定公式后,即可将需求信息、公式以及计算顺序打包为公式文件包,并将公式文件包存储公式库中。
以此类推,公式库中存储有多个需求信息以及与需求信息对应的公式文件包。即完成了公式库的构建。
在一种可能的实现方式中,如图5所示,S3(根据所有初始公式中所有变量,确定多个初始公式之间的计算顺序)具体包括以下步骤:
S31:基于多个初始公式,确定变量池,变量池包括多个初始公式中的所有变量;
具体的,在确定变量池时,对每个初始公式进行逐一查找每个初始公式中的变量。确定变量池的具体过程如下:
①在初始公式里提取一个变量;
②判断该变量是否在变量池中已经存在;
具体的,在进行变量查找时,查找第一个初始公式之前,变量池中的变量为0,当查找N个初始公式之后,变量池中已经存储有多个变量。由于多个初始公式中可能会存在重复的变量,例如初始公式1具有变量F1和变量F2,初始公式2具有变量F2以及M1,那么若初始公式1中的变量被提取存入变量池后,变量池内已经存储有变量F1以及F2,那么当提取初始公式2中的变量时,变量F2已经存储在变量池中了,再次存储则会造成存储冗余,且不唯一。因此在将识别出来的变量存储至变量池之前,首先判断该变量是否已经存储在变量池。当变量池中已经存储有该变量,则不用再存储变量。当变量池中还未存储该变量,那么则将该变量存储在变量池中。
S32:采用正则方式对变量池中的变量进行统计,以确定多个初始公式中的变量之间的依赖关系;
当S32中将所有初始公式的变量识别结束且存储在变量池之后,采用正则方式对变量池中的变量进行统计,以确定多个初始公式中的变量之间的依赖关系。依赖关系即指的是变量之间的计算关系,例如变量1是变量2以及变量3计算得到。
S33:基于变量之间的依赖关系,采用拓扑排序算法,确定多个初始公式之间的计算顺序;
当确定好每个初始公式中的变量之间的依赖关系后,那么则拓扑排序算法,确定多个公式之间的计算顺序,例如图2所示,首先根据第三公式111以及第三公式112计算第二公式11,根据第三公式121计算第二公式12,根据第三公式211计算第二公式21……;然后根据第二公式11、第二公式12计算第一公式1,根据第二公式21以及第二公式22计算第一公式2……;最后根据第一公式1、第一公式2以及第一公式3计算目标公式。目标公式即与用户输入的需求信息对应的公式。
在一种可能的实现方式中,如图6所示,S2(基于初始公式,解析所有初始公式中所有变量以及变量属性)具体包括如下步骤:
S21:基于初始公式,解析初始公式中的变量,并确定变量池,变量池包括所述多个初始公式中的所有变量;
获取到初始公式之后,对每个初始公式进行解析,以获取每个初始公式中的变量。
变量池的具体确定过程如上述S31中所述,再次不再做赘述。
S22:采用正则方式对变量池中的变量进行统计,以确定多个初始公式中的变量之间的依赖关系;
当S21中将所有初始公式的变量识别结束且存储在变量池之后,采用正则方式对变量池中的变量进行统计,以确定多个初始公式中的变量之间的依赖关系。依赖关系即指的是变量之间的计算关系,例如变量1是变量2以及变量3计算得到。
S23:根据变量之间的依赖关系确定变量的变量属性,变量的变量属性包括依赖变量以及独立变量。
对初始公式中的变量进行属性分类,以更容易解析每个变量之间的变量关系。
在一种可能的实现方式中,如图7所示,S4(根据变量的变量属性,对所有变量进行变量赋值,以获取变量的变量值)具体包括如下步骤:
S41:判断变量是否为空值;
当S41中的判断结果为是时,即变量为空值,那么需要对空值进行变量赋值,那需要确定变量的变量类型,即执行S42~S43。当S41中的判断结果为否时,即变量不是空值,则无需对变量进行变量赋值,即可直接执行下一步,即执行S5(基于多个初始公式之间的计算顺序,对所有初始公式进行公式编译,生成公式编译码)。
S42:确定变量的变量类型;
具体的,变量类型可以包括常数变量,数据库查询变量以及计算变量;
常数变量则表示变量为常数。
数据库查询变量指的是在数据库即可查询到该变量的变量值。
计算变量指的是通过计算得到的变量值。
S43:基于变量类型以及变量的变量属性,对变量进行变量赋值,以确定变量的变量值。
当确定变量的变量类型后,即可根据变量类型以及变量属性,对变量进行变量赋值,以确定变量的变量值。
具体的,对变量进行变量赋值则是把数据和变量关联起来,即对变量进行变量赋值后,变量的变量值则为数据和变量的关联信息。
在一种可能的实现方式中,如图8所示,S43(基于变量类型以及变量的变量属性,对变量进行变量赋值,以确定变量的变量值)具体包括如下步骤:
S431:当变量的变量类型为常数变量时,将与常数变量对应的数值确定为常数变量的变量值;
当变量为常数变量时,则可说明变量为常数,即可将与常数变量对应的数值确定为变量的变量值。
常数变量的变量值可以从初始公式里即可确定。即在确定变量是否是常数变量时,即是根据初始公式里该变量的数值来确定的,当是常数时,那么该数值则直接为该变量的变量值。
S432:当变量的变量类型为数据库查询变量时,基于变量,在变量数据库中查询,以确定变量的变量值;
当变量的变量类型为数据库查询变量时,那么即可说明该变量的变量值可以直接在数据库中进行查询。
具体的,数据库中包括变量以及与变量对应的变量值。
即可在数据库中查询得到与该变量对应的变量值。
S433:当变量类型为计算变量时,判断该变量是否包含未知参数,当S433中的判断结果为是时,即该变量包含未知参数,即计算该变量的变量值时,该变量的因变量(即未知参数)依然是由初始公式计算得到的,此时,则执行S21(解析初始公式中的变量)以及后续步骤,即解析与计算变量中的未知参数对应的初始公式中的变量,并确定变量的变量值,然后再依照该变量的变量值计算未知参数的变量值,并根据该未知参数的变量值计算该变量的变量值。
需要说明的是,在计算该未知参数的变量值时,该未知参数的变量值计算时可能依然由未知子参数,那么依然解析与该未知子参数对应的初始公式里的子变量,并确定子变量的变量值,然后再依照该子变量的变量值计算未知子参数的变量值,并根据未知子参数的变量值计算未知参数的变量值,并根据该未知参数的变量值计算该变量的变量值。直到该变量中不包含未知参数,循环结束。
当S433中的判断结果为否时,即该变量不包含未知参数,则直接进行计算,在执行S434。
S434:获取与变量对应的初始公式以及关联变量;并基于关联变量以及初始公式计算变量的变量值。
具体的,该变量为计算变量,那么该变量则是由一个初始公式可以计算得到的。那么即可根据该变量对应的初始公式,确定与变量相关的关联变量以及关联表达式(关联表达式也是多个初始公式中的其中一个)。
例如,如图2所示,若对变量对应的初始公式为第二公式32,而该第二公式32中不包括未知参数,那么即可根据第二公式32确定第二公式32中的变量(例如为常数变量),该变量即为变量的关联变量,由于该关联变量为常数,那么即可直接根据第二公式32计算得到该变量的变量值。
在一种可能的实现方式中,如图9所示,在S432(当变量的变量类型为数据库查询变量时,基于变量在变量数据库中查询,以确定变量的变量值)之后,S43(基于变量类型以及变量的变量属性,对变量进行变量赋值,以确定变量的变量值)还包括如下步骤:
S435:将变量的变量值存储在缓存表中,缓存表包括变量以及与变量对应的变量值。
即将变量的变量值存储在缓存表中,当再次查询时,无需再在数据库中进行检索,直接在缓存表中进行查询。
即当变量的变量类型为数据库查询时,优先根据变量在缓存表中进行查询,若缓存表中不存在变量时,再在数据库中进行检索,以确定变量的变量值。
作为本申请的第二方面,本申请还提供了一种多参数公式编译器,图10所示为该多参数公式编译器的工作原理图,如图10所示,该多参数公式编译器1包括:
获取模块101,用于获取与目标公式相关的多个初始公式,目标公式具有多个变量;
即获取模块101用于执行上述一种多参数公式编译方法的中的S1。
变量属性确定模块102,用于根据初始公式,解析所有初始公式中所有变量以及变量的变量属性;
即变量属性确定模块102用于执行上述一种多参数公式编译方法的中的S2。
计算顺序确定模块106,用于根据所有初始公式中所有变量,确定多个初始公式之间的计算顺序;
即计算顺序确定模块106用于执行上述一种多参数公式编译方法的中的S3。
变量值确定模块103,用于根据变量的变量属性,对所有变量进行变量赋值,以获取变量的变量值;
变量值确定模块103用于执行上述一种多参数公式编译方法的中的S4。
编译公式生成模块104,用于基于多个初始公式之间的计算顺序,对所有初始公式进行公式编译,生成公式编译码;
编译公式生成模块104用于执行上述一种多参数公式编译方法的中的S5。
计算模块105,用于基于所述变量的变量值对所述公式编译码进行计算,以获取目标公式所对应的计算数值。
计算模块105用于执行上述一种多参数公式编译方法的中的S6。
下面,参考图11来描述根据本申请实施例的电子设备。
图11图示了根据本申请实施例的电子设备的结构框图。
如图11所示,电子设备10包括一个或多个处理器11和存储器12。
处理器11可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备10中的其他组件以执行期望的功能。
存储器12可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器11可以运行所述程序指令,以实现上文所述的本申请的各个实施例的多变量表达式的计算方法以及/或者其他期望的功能。
在一个示例中,电子设备10还可以包括:输入装置13和输出装置14,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
在该电子设备是单机设备时,该输入装置13可以是通信网络连接器,用于从第一设备和第二设备接收所采集的输入信号。
此外,该输入装置13还可以包括例如键盘、鼠标等等。
该输出装置14可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置14可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图11中仅示出了该电子设备10中与本申请有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备10还可以包括任何其他适当的组件。
作为本申请的第三个方面,本申请提供一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序用于执行下列步骤:
获取与目标公式相关的多个初始公式,所述目标公式具有多个变量;
根据所述初始公式,解析所有所述初始公式中所有变量以及变量的变量属性;
根据所有初始公式中所有变量,确定多个所述初始公式之间的计算顺序;
根据变量的变量属性,对所有所述变量进行变量赋值,以获取所述变量的变量值;
基于多个所述初始公式之间的计算顺序,对所有所述初始公式进行公式编译,生成公式编译码;以及
基于所述变量的变量值对所述公式编译码进行计算,以获取目标公式所对应的计算数值。
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序信息,计算机程序信息在被处理器运行时使得处理器执行本说明书中描述的根据本申请各种实施例的多参数公式编译方法中的步骤。
计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序信息,计算机程序信息在被处理器运行时使得处理器执行本说明书根据本申请各种实施例的多参数公式编译方法中的步骤。
计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。

Claims (10)

1.一种多参数公式编译方法,其特征在于,包括:
获取与目标公式相关的多个初始公式,所述目标公式具有多个变量;
根据所述初始公式,解析所有所述初始公式中所有变量以及变量的变量属性;
根据所有初始公式中所有变量,确定多个所述初始公式之间的计算顺序;
根据变量的变量属性,对所有所述变量进行变量赋值,以获取所述变量的变量值;
基于多个所述初始公式之间的计算顺序,对所有所述初始公式进行公式编译,生成公式编译码;以及
基于所述变量的变量值对所述公式编译码进行计算,以获取目标公式所对应的计算数值。
2.根据权利要求1所述的多参数公式编译方法,其特征在于,获取与目标公式相关的多个初始公式,包括:
获取用户输入的需求信息,其中,所述需求信息与所述目标公式对应;
根据所述需求信息在公式库中查询与所述需求信息对应的公式文件包,所述公式文件包包括多个公式;其中,所述公式库包括需求信息以及与需求信息对应的公式文件包;
其中,所述初始公式为所述公式文件包中的多个公式。
3.根据权利要求2所述的多参数公式编译方法,其特征在于,在获取用户输入的需求信息之前,所述多参数公式编辑器编译方法,还包括:
构建公式库,所述公式库包括需求信息以及与需求信息对应的公式文件包;其中,公式文件包包括多个公式。
4.根据权利要求1所述的多参数公式编译方法,其特征在于,根据所有初始公式中所有变量,确定多个所述初始公式之间的计算顺序,包括:
根据所有所述初始公式中所有变量,确定变量池,所述变量池包括所述多个初始公式中的所有变量;
采用正则方式对所述变量池中的变量进行统计,以确定多个初始公式中的变量之间的依赖关系;
基于所述变量之间的依赖关系,采用拓扑排序算法,确定多个初始公式之间的计算顺序。
5.根据权利要求1所述的多参数公式编译方法,其特征在于,根据所述初始公式,解析所有所述初始公式中所有变量以及变量的变量属性,包括:
基于所述初始公式,解析所述初始公式中的变量,并确定变量池,所述变量池包括所述多个初始公式中的所有变量;
采用正则方式对所述变量池中的变量进行统计,以确定多个初始公式中的变量之间的依赖关系;
根据所述变量之间的依赖关系确定所述变量的变量属性,所述变量的变量属性包括依赖变量以及独立变量。
6.根据权利要求5所述的多参数公式编译方法,其特征在于,根据变量的变量属性,对所有所述变量进行变量赋值,以获取所述变量的变量值,包括:
当所述变量为空值时,确定所述变量的变量类型,所述变量类型包括常数变量、数据库查询变量以及计算变量;以及
基于所述变量类型以及所述变量属性,对所述变量进行变量赋值,以确定所述变量的变量值;
当所述变量不为空值时,基于多个所述初始公式之间的计算顺序,对所有所述初始公式进行公式编译,生成公式编译码。
7.根据权利要求6所述的多参数公式编译方法,其特征在于,基于所述变量类型以及所述变量属性,对所述变量进行变量赋值,以确定所述变量的变量值,包括:
当所述变量的变量类型为所述常数变量时,将与所述常数变量对应的数值确定为所述变量的变量值;
当所述变量的变量类型为所述数据库查询变量时,基于所述变量,在变量数据库中查询,以确定所述变量的变量值;
当所述变量的变量类型为计算变量且所述变量中未包含未知参数时,获取与所述变量对应的初始公式以及所述变量的关联变量,并基于所述关联变量以及所述初始公式计算所述变量的变量值。
8.根据权利要求7所述的多参数公式编译方法,其特征在于,基于所述变量类型以及所述变量属性,对所述变量进行变量赋值,以确定所述变量的变量值,还包括:
当所述变量的变量类型为计算变量且所述变量中包含未知参数时,基于所述初始公式,根据所述初始公式,解析所有所述初始公式中所有变量以及变量的变量属性。
9.根据权利要求7所述的多参数公式编译方法,其特征在于,在当所述变量的变量类型为所述数据库查询变量时,基于所述变量在变量数据库中查询,以确定所述变量的变量值之后,基于所述变量类型以及所述变量属性,对所述变量进行变量赋值,以确定所述变量的变量值,还包括:
将所述变量的变量值存储在缓存表中,所述缓存表包括变量以及与所述变量对应的变量值。
10.一种多参数公式编译器,其特征在于,包括:
获取模块,获取与目标公式相关的多个初始公式,所述目标公式具有多个变量;
变量属性确定模块,用于根据所述初始公式,解析所有所述初始公式中所有变量以及变量的变量属性;
计算顺序确定模块,用于根据所有初始公式中所有变量,确定多个所述初始公式之间的计算顺序;
变量值确定模块,用于根据变量的变量属性,对所有所述变量进行变量赋值,以获取所述变量的变量值;
编译公式生成模块,基于多个所述初始公式之间的计算顺序,对所有所述初始公式进行公式编译,生成公式编译码;以及
计算模块,用于基于所述变量的变量值对所述公式编译码进行计算,以获取目标公式所对应的计算数值。
CN202311320035.9A 2023-10-11 2023-10-11 一种多参数公式编译方法及其编译器 Pending CN117453222A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311320035.9A CN117453222A (zh) 2023-10-11 2023-10-11 一种多参数公式编译方法及其编译器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311320035.9A CN117453222A (zh) 2023-10-11 2023-10-11 一种多参数公式编译方法及其编译器

Publications (1)

Publication Number Publication Date
CN117453222A true CN117453222A (zh) 2024-01-26

Family

ID=89593844

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311320035.9A Pending CN117453222A (zh) 2023-10-11 2023-10-11 一种多参数公式编译方法及其编译器

Country Status (1)

Country Link
CN (1) CN117453222A (zh)

Similar Documents

Publication Publication Date Title
CN107704265B (zh) 一种面向业务流可配置的规则生成方法
CN109254776B (zh) 多语言代码编译方法及编译器
CN108717470B (zh) 一种具有高准确度的代码片段推荐方法
CN110502227B (zh) 代码补全的方法及装置、存储介质、电子设备
CN107704382B (zh) 面向Python的函数调用路径生成方法和系统
CN102541521B (zh) 基于结构化查询语言的操作指令自动生成装置及方法
CN113641701B (zh) 一种数据查询方法、系统、异构加速平台及存储介质
JPH08202545A (ja) ターゲット言語コードを生成するためのオブジェクト指向システム及びその方法
JPS6375835A (ja) 目的コ−ド、プログラム・リスト及び設計文書を生成する装置
CN110059006A (zh) 代码审计方法及装置
CN103077064A (zh) 一种解析并执行程序语言方法及解释装置
CN109857458B (zh) 基于ANTLR的AltaRica 3.0的扁平化的转化方法
CN105044653A (zh) 一种智能电表的软件一致性检测方法
CN111814449B (zh) 表单解析方法、装置、设备及存储介质
KR20010024576A (ko) 기계 기술로부터의 명령군 구조의 시뮬레이터 및 어셈블러생성 방법
CN114816420A (zh) 一种数据处理方法和装置
CN113987405A (zh) 一种基于ast的数学表达式计算算法
CN102298552A (zh) 基于代码查询进行源代码插桩的方法
CN115454702A (zh) 日志故障分析方法、装置、存储介质及电子设备
CN111143038A (zh) Risc-v架构微处理器内核信息模型建模及生成方法
CN103049504A (zh) 基于源代码查询的半自动插桩方法
CN108664238A (zh) 一种解释型脚本语言c-sub的执行方法及装置
CN117453222A (zh) 一种多参数公式编译方法及其编译器
CN114090017B (zh) 编程语言的解析方法及装置、非易失性存储介质
Romanov et al. Representing programs with dependency and function call graphs for learning hierarchical embeddings

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