数据建模方法、装置、设备和存储介质与流程

文档序号:30349343发布日期:2022-06-08 10:31阅读:164来源:国知局
数据建模方法、装置、设备和存储介质与流程

1.本发明涉及数据处理技术领域,尤其涉及一种数据建模方法、装置、设备和存储介质。


背景技术:

2.在很多应用场景中都存在需要求解的优化问题,为此,对优化问题进行数学建模并进行求解,成为广泛采用的解决思路。在当前的建模工具软件的使用过程中,用户往往需要准备好完整的模型文件和数据文件,然后调用某种建模语言对模型文件进行解析,并加载对应的数据文件,以完成模型实例的建模,最后使用求解器对建模得到的模型实例进行求解。这种方式在模型开发和调试的阶段有许多不便,灵活性较差。


技术实现要素:

3.本发明实施例提供一种数据建模方法、装置、设备和存储介质,用以提高建模的灵活性。
4.第一方面,本发明实施例提供一种数据建模方法,所述方法包括:
5.获取模型文件和数据文件,所述模型文件中包含用于对目标应用系统对应的待求解问题进行建模的代码,所述代码中包括多个参数,所述数据文件中至少包括部分参数对应的参数值;
6.响应于用户对所述模型文件中目标段代码触发的运行操作,若确定所述目标段代码中包含未赋值参数,则显示与所述未赋值参数对应的提示信息,以用于提示输入对应的参数值;
7.根据所述用户输入的所述未赋值参数对应的参数值,以及所述目标段代码中已赋值参数对应的参数值,生成与所述目标段代码对应的模型实例。
8.第二方面,本发明实施例提供一种数据建模装置,所述装置包括:
9.获取模块,用于获取模型文件和数据文件,所述模型文件中包含用于对目标应用系统对应的待求解问题进行建模的代码,所述代码中包括多个参数,所述数据文件中至少包括部分参数对应的参数值;
10.确定模块,用于响应于用户对所述模型文件中目标段代码触发的运行操作,确定所述目标段代码中是否包含未赋值参数;
11.显示模块,用于若所述确定模块确定所述目标段代码中包含未赋值参数,则显示与所述未赋值参数对应的提示信息,以用于提示输入对应的参数值;
12.生成模块,用于根据所述用户输入的所述未赋值参数对应的参数值,以及所述目标段代码中已赋值参数对应的参数值,生成与所述目标段代码对应的模型实例。
13.第三方面,本发明实施例提供一种电子设备,包括:存储器、处理器、通信接口;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器至少可以实现如第一方面所述的数据建模方法。
14.第四方面,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现如第一方面所述的数据建模方法。
15.第五方面,本发明实施例提供一种电力系统的数据建模方法,所述方法包括:
16.获取模型文件和数据文件,所述模型文件中包含用于对电力系统对应的节点电价求解问题进行建模的代码,所述代码中包括多个参数,所述数据文件中至少包括部分参数对应的参数值,所述多个参数中包括用于表示电网状态信息的参数;
17.响应于用户对所述模型文件中目标段代码触发的运行操作,若确定所述目标段代码中包含未赋值参数,则显示与所述未赋值参数对应的提示信息,以用于提示输入对应的参数值;
18.根据所述用户输入的所述未赋值参数对应的参数值,以及所述目标段代码中已赋值参数对应的参数值,生成与所述目标段代码对应的模型实例;
19.调用与所述模型实例对应的求解器,以对所述模型实例进行变量求解。
20.概括来说,模型文件中包含用于对目标应用系统对应的待求解问题进行建模的代码,这些代码主要用于定义与待求解问题对应的各种函数、等式、不等式、变量以及参数。数据文件中包括模型实例建模过程中所需使用到的相关数据,主要包括各种参数的参数值。
21.在本发明实施例中,开发者在进行模型文件的开发时,不再要求开发者将其中所有参数的参数值都设置好,比如直接在模型文件中给出对应的参数值或者参数值在数据文件中对应的读取路径,而是运行开发者可以不对其中一些参数的参数值进行赋值操作。另外,与传统建模工具软件仅允许在一次建模过程中要执行完整的模型文件不同,本发明实施例中,允许用户(可以是开发者、调试者)选择模型文件中的部分代码进行运行。基于此,当用户对模型文件中目标段代码触发运行操作时,首先确定目标段代码中是否包含未赋值参数,如果遍历完目标段代码发现其中包含未赋值参数,则显示与未赋值参数对应的提示信息,以用于提示输入对应的参数值。当接收到用户基于该提示信息输入的未赋值参数所对应的参数值后,再次运行目标段代码,以根据用户输入的未赋值参数对应的参数值以及目标段代码中已赋值参数对应的参数值,生成与目标段代码对应的模型实例。
22.在本发明实施例提供的建模方案中,配置建模工具软件可以支持不赋值参数的设置,以及某种特定的运行模式——在该运行模式下,首先遍历确定被运行代码段中包含的未赋值参数,之后输出提示信息让用户根据需求自行输入当前所需的参数值,之后再运行这段代码以完成相应模型实例建模。这种运行模式便于用户对模型文件进行按需调试,使得建模过程具有更好的灵活性。
附图说明
23.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
24.图1为建模框架的示意图;
25.图2为本发明实施例提供的一种数据建模方法的流程图;
26.图3为本发明实施例提供的一种建模工具的界面交互示意图;
27.图4为本发明实施例提供的一种扫描未赋值参数过程的界面交互示意图;
28.图5为本发明实施例提供的一种数据建模方法的流程图;
29.图6为本发明实施例提供的一种电力系统的数据建模方法的流程图;
30.图7为本发明实施例提供的一种数据建模装置的结构示意图;
31.图8为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
32.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
33.下面结合附图对本发明的一些实施方式作详细说明。在各实施例之间不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
34.本发明实施例提供的数据建模方法可以由一电子设备来执行,该电子设备可以是服务器,也可以是用户终端,该服务器可以是云端的物理服务器或虚拟服务器(虚拟机)。
35.先对本发明实施例中涉及到的一些概念进行说明:
36.数学建模语言(adaptive modelling language,简称aml),是一种面向对象的、复杂系统全自动的工程设计框架开发工具。可以将复杂的优化模型转化为抽象的代数表达形式在脚本程序中进行输入,并且可以连接各个优化求解器。常见的建模语言工具比如可以包括ampl(a mathematical programming language)、gams(the general algebraic modeling system)、fico xpress、aimms等。常见的求解器包括:mindopt、gurobi、cplex等。
37.模型文件:采用某种建模语言来编写用户定义的某个数学模型的脚本程序,便可以称为模型文件。本发明实施例中涉及到的数学模型可以针对一些线性、非线性数学规划问题建模得到的模型,相应的,模型文件中包含的代码即为用于描述这些数学模型的,比如其中的目标函数、等式或不等式约束、决策变量以及各种参数。
38.数据文件:其中包含建模时所需使用的数据,一般存储的是上述模型中定义的各种参数的参数值。
39.模型实例:是基于模型文件中描述的模型定义,结合从数据文件等数据源中加载到的数据值建模出的一个具体的模型。概括来说,数据源不同,针对定义的同一个数学模型,也会建立出不同的模型实例。
40.集成开发环境(integrated development environment,简称ide),是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。
41.以ampl这种建模语言工具为例,结合图1示意通用的建模框架。如图1中所示,ampl读取模型文件以及数据文件后生成模型实例,之后调用能够求解各种数学规划问题的求解器(图1中示意的是minos和cplex这两种求解器)进行求解,得到模型实例中决策变量的解。
42.图2为本发明实施例提供的一种数据建模方法的流程图,如图2所示,该方法包括
如下步骤:
43.201、获取模型文件和数据文件,模型文件中包含用于对目标应用系统对应的待求解问题进行建模的代码,代码中包括多个参数,数据文件中至少包括部分参数对应的参数值。
44.202、响应于用户对模型文件中目标段代码触发的运行操作,若确定目标段代码中包含未赋值参数,则显示与未赋值参数对应的提示信息,以用于提示输入对应的参数值。
45.203、根据用户输入的未赋值参数对应的参数值,以及目标段代码中已赋值参数对应的参数值,生成与目标段代码对应的模型实例。
46.上述目标应用系统可以是存在优化问题求解需求的任一应用系统,比如电力系统,待求解问题可以是一种优化问题。用户可以基于目标应用系统中存在的这个待求解问题,进行相应的数学模型的定义。从构成角度来说,一般地,这类数学模型由一个目标函数以及多个约束条件构成,其中,约束条件表示为等式或不等式的形式。在目标函数和约束条件中会定义多个决策变量以及多个参数,其中,决策变量即为需要求解的未知变量,参数一般包括决策变量对应的系数以及一些常数项。
47.用户在定义好上述数学模型后,便可以使用某种建模工具软件所提供的建模语言来编写程序代码脚本,以形成模型文件。建模语言中会提供数学符号、运算符等供用户使用,用户在编写模型文件时需要遵循建模语言所要求的语法,以便模型文件能够被顺利执行。
48.除了进行模型文件的编写外,还需要生成数据文件。如上文所述,用户定义的数学模型中会包含若干参数,其中有些参数所对应的参数值可以在用户编写模型文件中直接给出,有些参数所对应的参数值可以从数据文件中加载,而这些参数值往往反映的是目标应用系统的实际状态信息,因此需要通过采集目标应用系统的相关实际状态数据而生成数据文件。
49.需要说明的是,为给建模过程提供更大的灵活性,与传统建模过程中用户在编写模型文件时必须给出各个参数所对应的参数值不同的是,本发明实施例中,用户可以不对一些参数的参数值进行赋值。从而,本发明实施例中,将模型文件中包含的参数可以划分为两类:已赋值参数和未赋值参数。
50.其中,需要说明的是,本发明实施例中的已赋值参数并不是仅限定用户直接给出其参数值取值的参数,还包括给出在数据文件中对应的参数值读取路径的参数。未赋值参数是指参数值缺省或以设定字符来表示该缺省状态的参数。
51.举例来说,比如针对参数(parameter)x来说,直接给出其参数值的情形是:x=10,而给出其读取路径的情形可以是x={read“users/mdoaml/example/zpl/matching_set1.zpl”},大括号中表示的是一个在数据文件中读取参数x的参数值的读取路径。而未赋值的参数的情形可以是:x=&,其中,&表示一个预设的占位符,也就是说,当某参数的参数值的设置位置处被预设字符占位时,可以认为该参数为未赋值参数,该预设字符为预先定义的表明参数未赋值状态的字符。当然,可选地,也可以将参数的参数值设置为缺省状态,即参数值设置位置处空白,来表示该参数为未赋值参数。
52.实际上,如上文所述,模型文件中除了参数外,还包括各种需要被求解的变量(variable),变量也是不具有对应取值的状态。由于建模语言中对于变量和参数的定义提
供有不同的关键词,因此,可以基于关键词来区分哪些是变量哪些是参数,比如,变量前具有关键词var,参数前具有关键词param。
53.在实际应用中,用户可以自行决定哪些参数作为未赋值参数,哪些参数给出对应的参数值或参数值读取路径。但是,由于支持用户可以设置未赋值参数的最终目的是便于用户对模型进行调试,以为能够建立合适的数学模型提供更多的灵活性和便利性,因此,如果用户将大部分甚至全部参数都设置为未赋值参数,或者将一些没有必要设置为未赋值参数的参数也设置为未赋值参数,将会产生不必要的设置,因为基于下文中介绍的“高级运行模式”下对用户选择的模型文件中目标段代码的执行过程可知,当执行代码过程中遇到未赋值参数时,需要用户基于当时需求实时输入对其的赋值,以便实现不同用户或同一用户,不同时刻调试一段代码时可以按需灵活地设置未赋值参数的参数值的目的。因此,可以基于预先的分析或者专家建议,提示用户在目标应用系统中,面对某待求解问题进行建模时,可以考虑将哪些类型的参数设置为未赋值参数。也就是说,这些未赋值参数往往是带有特殊含义的参数,例如数据文件的日期、模型中某些变量的系数等一些用户需要调试和分析的部分。
54.其中,数据文件的日期是指:在模型调试过程中,可能需要基于不同日期采集的数据文件分别建立对应的模型实例,基于生成的各个模型实例的求解结果确定模型是否需要进行修改,此时,数据文件的日期这个参数可以设置为未赋值参数,这样用户在调试时可以按需输入不同日期对应的数据文件。
55.其中,以某变量的系数来说,在模型调试过程中,用户可以不断更新这个系数的取值,以便观察取不同值时最终形成的不同模型实例的解的效果。
56.模型文件的开发,可能是某个用户独自完成的,也可能是多个用户协同开发的。在模型文件初步开发完毕后,需要进行模型调试。调试的目的是检验已经设计的数学模型是否合理,编写的模型文件是否存在错误等等。传统地建模工具中仅支持用户对模型文件整体进行调试,即在每次调试过程中,都需要执行整个模型文件。但是,在本发明实施例提供的方案中,支持用户可以选择模型文件中的部分代码进行执行,比如涉及的数学模型中包括多个约束条件,用户想要查看去掉其中部分约束条件后是否能够得到符合预期的变量的解,此时,用户可以选择模型文件中除去这部分约束条件对应的代码的剩余代码来运行。将用户选择出的想要执行的代码称为目标段代码。
57.为了与传统的建模工具中所提供的运行模式相兼容,在本发明实施例中,建模工具中除了支持这种传统的运行模式(为区别,称为常规运行模式),还提供一种新的运行模式,称为高级运行模式。
58.如图3所示,实际应用中,用户可以首先在建模工具的ide中打开模型文件,在该界面中,可以提供图中示意的两个运行模式按钮:常规运行模式和高级运行模式。假设模型文件中包括图中示意的行号为1~n的多行代码,当用户选择1~m行代码作为目标段代码,并点击高级运行模式时,执行高级运行模式下对目标段代码的运行,其中,n》m》1。
59.其中,常规运行模式,是指对整个模型文件中全部代码进行运行的模式,在此模式下,要求模型文件中所有参数都是已赋值参数。相反地,高级运行模式下,可以选择模型文件的全部或部分代码来运行,并且运行其中全部或部分参数是未赋值参数。
60.概括来说,在高级运行模式下运行目标段代码,需要执行两次运行过程:第一次运
行过程中,主要目的是为了解析出目标段代码中是否包含未赋值参数,以便在第一次执行结束后,提示用户对未赋值参数进行赋值;第二次执行过程,才是真正运行目标段代码以基于目标段代码中包含的各个参数的参数值,建立与目标段代码对应的模型实例的过程。
61.如前文所述,可以基于定义参数时所采用的设定关键词来识别目标段代码中包含的参数,进而,根据参数值的设置位置处是否已经直接给出参数值或参数值读取路径,或者是否填写有设定的表示未设置参数值的占位字符,或者参数值处是否为缺省状态,来确定未赋值参数。如果确定目标段代码中包含未赋值参数,则可以显示提示信息,以用于提示用户需要输入这些未赋值参数所对应的参数值。
62.如上文所述,步骤202中,基于用户对模型文件中目标段代码触发的运行操作(对应于高级运行模式的运行操作),首先,在第一次执行目标段代码的过程中来确定目标段代码中是否包含未赋值参数。在一可选实施例中,显示与未赋值参数对应的提示信息的过程具体可以是:
63.在第一次执行目标段代码的过程中,逐行确定每行代码中是否包含未赋值参数;
64.若确定包含未赋值参数,则为未赋值参数进行设定字符的标记;
65.若目标段代码执行完毕,则根据所述标记获取目标段代码中包含的全部未赋值参数;
66.显示与该全部未赋值参数对应的提示信息。
67.其中,上述设定字符即为上文中所说的表示未设置参数值的占位字符。因为实际上,用户在模型文件中可能有些未赋值参数已经在其参数值设置位置处标出了占位字符,但是有些未赋值参数所对应的参数值设置位置处确实缺省状态(空着),为了在第一次执行过程中将目标段代码中所有的未赋值参数进行统一标示,将识别出的未赋值参数都进行统一的该设定字符的标记:在其参数值设置位置处标出该设定字符。
68.另外,在上述实施例中,对于未赋值参数所对应的提示信息的显示,是指从头到尾地遍历完目标段代码后,再统一地对扫描出的所有未赋值参数进行参数值的输入提示。
69.为便于理解,结合图4举例来说。在图4中,假设模板文件中被选择的目标段代码中包括如下四行代码:
70.param x1:=10;
71.param x2:=&;
72.param x3:={read“users/mdoaml/example/zpl/matching_set1.zpl”};
73.param x4:=;
74.基于关键词param确定x1、x2、x3和x4都是参数,并根据参数值设置位置所写内容可以确定参数x1和x3是已赋值参数,参数x2和x4是未赋值参数,其中,&表示上述设定字符。假设x4所对应的一行代码为目标段代码的最后一行,在遍历其中每行代码的过程中,比如当发现x2是未赋值参数时,记录下来x2是未赋值参数(比如将x2打上上述设定字符的标记),在遍历到最后一行代码后,基于记录结果便可以得知目标段代码中有哪些参数是未赋值参数,进而如图4中所示,可以在界面中弹出一个输入提示界面,在该输入提示界面中依次显示有每个未赋值参数所对应的输入提示框。其中,为便于用户理解每个参数的含义,与每个未赋值参数所对应的输入提示框关联地显示相应参数的说明信息,比如参数名称、参数的含义等。
75.用户基于相关提示信息进行未赋值参数所对应的参数值的输入,如图4中所示,假设用户针对参数x2输入的参数值为3,针对参数x4输入的参数值为{read“users/mdoaml/example/zpl/matching_set3.zpl”}。基于用户的输入操作,将用户输入的未赋值参数所对应的参数值以及该未赋值参数对应地存储在目标存储空间,比如缓存中。
76.这里需要说明两点:第一,用户输入的参数值并非直接赋值到模型文件中的未赋值参数上,也就是说,模型文件中未赋值参数的参数值设置位置处仍旧为缺省或填写有占位字符的状态,该赋值操作并不会对模型文件本身有改变。第二,由于第一次执行目标段代码的目的是发现其中是否具有未赋值参数,因此,针对给出在数据文件中对应的参数值读取路径的已赋值参数,可以并不执行从数据文件中加载对应的参数值的操作。
77.其中,关于上述第一点,正是由于模型文件中未赋值参数的状态没有发生改变,从而使得当用户再次选择包含上述未赋值参数的一段代码进行调试运行时,可以根据实际需求再次输入不同的参数值,而不必受限于此前针对该未赋值参数输入的其他参数值,为代码的反复调试提供了很大灵活性。
78.在一可选实施例中,在界面上显示与未赋值参数对应的提示信息,以让用户基于该提示信息输入参数值的同时,也可以显示已赋值参数及其参数值,以便让用户可以查看全局的参数及其各自对应的参数值。
79.在一可选实施例中,也可以基于定义参数是所采用的关键词,识别出目标段代码中包含的全部参数后,显示对应于全部参数的提示信息,即提示用户目标段代码中有哪些参数,并且,在确定出其中哪些参数是已赋值参数时,还可以显示已赋值参数各自对应的参数值,这样,用户可以通过排除法确定未赋值参数。
80.在用户基于未赋值参数所对应的提示信息输入对应的参数值之后,在步骤203中,具体是在第二次执行目标段代码的过程中,根据用户输入的未赋值参数对应的参数值,以及目标段代码中已赋值参数对应的参数值,生成与目标段代码对应的模型实例。
81.具体地,如上文所述,已赋值参数包括直接给出参数值的参数以及给出在数据文件中对应的参数值读取路径的参数,从而,生成与目标段代码对应的模型实例的过程包括:
82.响应于用户触发的确认完成所述未赋值参数的赋值操作,在第二次执行目标段代码的过程中:
83.针对未赋值参数,从目标存储空间中加载与未赋值参数对应的参数值;
84.针对给出在数据文件中对应的参数值读取路径的参数,根据参数值读取路径从数据文件中加载对应的参数值;
85.根据加载到的未赋值参数对应的参数值以及已赋值参数对应的参数值,生成与目标段代码对应的模型实例。
86.其中,如图4中所示,在输入提示界面中设置有“确认”按钮,当用户输入未赋值参数对应的参数值,并点击确认按钮时,确定用户确认完成了未赋值参数的赋值操作,触发目标段代码的第二次执行过程。在第二次执行过程中,从头到尾逐行遍历各个参数,并加载每个参数对应的参数值。其中,用户输入的与未赋值参数对应的参数值被存在上述目标存储空间内,所以从该目标存储空间内加载未赋值参数的参数值。未直接给出参数值的已赋值参数,其参数值从数据文件中加载。
87.最终,基于加载到的各个参数的参数值,以及模型文件中描述的变量、参数等函数
关系,完成目标段代码所对应的模型实例的创建。
88.为了便于理解该模型实例,举例说明如下:假设设计的数学模型中包括如下不等式约束:ax+by《10,其中,x和y为变量,a、b和10为参数,则在模型文件中会包含描述这个不等式的相应代码,且该代码中会包含关于这些变量、参数的定义。假设a和b这两个参数都设置为未赋值参数,用户基于提示信息输入的参数值分别为参数值读取路径,并假设在相应的参数值读取路径中包括三个参数值:a1、a2、a3,以及b1、b2、b3。则基于参数值的加载结果会生成三个具体的不等式实例:a1x+b1y《10,a2x+b2y《10,a3x+b3y《10。这里仅以一个不等式约束为例进行了其对应的实例的含义说明,实际上,目标段代码中可能包含数学模型中定义的各种等式、不等式等函数关系式,每种函数关系式都可以生成一个或多个具体实例,所有这些实例便构成了目标段代码对应的一个模型实例。
89.之后,可以调用与该模型实例对应的求解器,以对该模型实例进行变量求解。该模型实例的求解结果可以在界面中进行显示,以便用户可以查看该求解结果。如果该求解结果不符合预期,比如与目标应用系统的实际运行情况不符,或者不适宜根据该求解结果对目标应用系统的运行进行管控,则用户可以更新此前设计的数学模型。
90.比如,如果此前设计的数学模型中包括15个约束条件以及一个目标函数,当用户基于选择其中14个约束条件以及目标函数所对应的代码作为目标段代码进行高级运行模式的运行后发现相应模型实例的求解结果,比基于全部15个约束条件所建立的模型实例所对应的求解结果更优,则用户可以将数学模型更新为仅包括这14个约束条件。
91.另外,在第二次执行目标段代码的过程中,为防止不能正常执行,可以先对目标段代码进行语法检测,以检测其中是否有语法错误,如果有语法错误,则进行报错,以便用户更正语法错误。
92.综上,基于本发明实施例提供的模型文件的高级运行模式,在对模型文件中被选择的需要执行的目标段代码进行解析时,若遇到未赋值的参数,则以占位符的形式进行表示,待整个被选代码初次解析后,再弹出对话框,供用户设置这些未赋值参数的参数值,以便基于用户输入的参数值执行建模过程。上述高级运行模式给用户对数学模型进行反复多次调试提供了更大的灵活性。
93.而且,基于该高级运行模式,还可以保证多人使用同一数学模型时模型文件的安全性。比如,模型文件是用户a开发的,虽然允许除用户a的其他用户对该模型文件进行调试,但是,如果设置仅用户a具有修改模型文件的权限,那么,基于用户a在该模型文件中设置的多个未赋值参数以及上述高级运行模式,其他用户在对模型进行调试过程中,可以按需选择目标段代码并对其中的未赋值参数进行按需赋值,但是并不具有修改模型文件的权限,所以模型文件中各参数(包括未赋值参数)的参数值设置不会收到不同用户的调试过程而改变,保证了模型文件的安全性。
94.以上实施例中介绍的是用户选择的目标段代码中存在未赋值参数的情形,下面结合图5说明目标段代码中不存在未赋值参数的调试过程。
95.图5为本发明实施例提供的一种数据建模方法的流程,如图5所示,该方法包括如下步骤:
96.501、获取模型文件和数据文件,模型文件中包含用于对目标应用系统对应的待求解问题进行建模的代码,代码中包括多个参数,数据文件中至少包括部分参数对应的参数
值。
97.502、响应于用户目标段代码触发的运行操作,若在第一次执行目标段代码的过程中,确定目标段代码中不存在未赋值参数,则在第二次执行目标段代码的过程中,基于获取的目标段代码中已赋值参数对应的参数值,生成与目标段代码对应的模型实例。
98.由此可见,当用户选择目标段代码并触发特定的高级运行模式后,在第一次执行目标段代码的过程中,逐行解析目标段代码,以确定其中是否包含未赋值参数,如果遍历完目标段代码仍未发现其中包含未赋值参数,则自动进入第二次执行目标段代码的过程。此时说明目标段代码中包含的各个参数都是已赋值参数。在第二次执行目标段代码的过程中,基于获取的目标段代码中已赋值参数对应的参数值,生成与目标段代码对应的模型实例。之后调用相关求解器来对该模型实例进行求解。
99.本发明实施例提供的数据建模方法可以适用于任何具有相应数学模型建模需求的应用系统中,比如电力系统。
100.图6为本发明实施例提供的一种电力系统的数据建模方法的流程图,如图6所示,该方法包括如下步骤:
101.601、获取模型文件和数据文件,模型文件中包含用于对电力系统对应的节点电价求解问题进行建模的代码,代码中包括多个参数,数据文件中至少包括部分参数对应的参数值,多个参数中包括用于表示电网状态信息的参数。
102.602、响应于用户对模型文件中目标段代码触发的运行操作,若确定目标段代码中包含未赋值参数,则显示与未赋值参数对应的提示信息,以用于提示输入对应的参数值。
103.603、根据用户输入的未赋值参数对应的参数值,以及目标段代码中已赋值参数对应的参数值,生成与目标段代码对应的模型实例。
104.604、调用与模型实例对应的求解器,以对模型实例进行变量求解。
105.在电力系统中,一个主要的需要求解的问题就是确定节点电价的问题。节点电价是指在满足各类设备和资源的运行特性和约束条件的情况下,在某一节点增加单位负荷需求时的边际成本,即代表在某时间、某地点消费“多一度电”所需要增加的成本。一般来说,影响节点电价的“设备和资源”主要指发电机组和输电线路,“运行特性和约束条件”包括电力负荷平衡、发电机组最大最小出力与爬坡、输电线路和输电断面在正常和故障状态下的传输能力等。
106.在计算节点电价时,需要使用到节点电价出清模型,就是用于计算节点电价的数学模型,可以是以机组节点有功功率等变量作为决策变量,带有网络安全约束的,最小化总成本为目标的模型。节点电价出清模型实际上就是一个线性规划模型。
107.线性规划模型:一种数学模型,其决策变量均为连续实变量,且目标函数和约束条件均为线性。在使用标准的算法或者求解程序进行求解后,会把决策变量划分为基变量和非基变量两部分,且会为每个约束条件赋予一个影子价格。
108.每个节点对应的各约束的影子价格相加来最终形成该节点的节点电价。
109.基于上述介绍可知,为了进行节点电价的计算,首先,需要定义一个数学模型,称为节点电价出清模型,之后,用户针对该数学模型的定义,开发对应的模型文件,在该模型文件中会包括多种决策变量、多个参数,这些参数、变量之间的关系、取值,被按照数学模型中定义的目标函数、各种约束进行描述。
110.另外,由于节点电价是实时调度的,因此,需要针对每个调度时间获取电网的实时状态信息以形成数据文件,而这些电网状态信息即对应于模型文件中定义的多个参数。其中,表示电网状态信息的参数比如包括如下一些类型的数据:电网系统中各机组节点的相关数据,负载节点的负载数据,电网系统的拓扑结构数据,等等。其中,各机组节点的相关数据比如可以包括:各机组节点的最大爬坡速率、最大最小发电能力、开机成本、运行成本,等等。电网系统的拓扑结构数据比如包括各输电线路的有功潮流极限、各节点与线路之间的连接关系,等等。
111.如上文所述,用户在模型文件中定义参数时,可以赋值其中一些参数的参数值,也可以不赋值其中一些参数的参数值。比如上述举例的一些电网状态信息中的动态变化的信息所对应的参数可以被设置为未赋值参数,而其中一些稳定不变的信息所对应的参数可以被设置为已赋值参数。
112.用户进行模型调试的时候,可以选择整个模型文件或者其中的一段代码作为调试对象(称为目标段代码),并选择高级运行模式,以触发对该目标段代码的运行。之后,如上文所述,首先,确定目标段代码中是否包含未赋值参数,若包含,则显示与未赋值参数对应的提示信息。具体地,在第一次执行目标段代码的过程中,逐行确定每行代码中是否包含未赋值参数,若确定包含未赋值参数,则为未赋值参数进行设定字符的标记,若目标段代码执行完毕,则根据所述标记获取目标段代码中包含的全部未赋值参数,显示与全部未赋值参数对应的提示信息。用户基于该提示信息对未赋值参数进行赋值操作,比如给出某些未赋值参数所对应的参数值,或者给出未赋值参数所对应的参数值读取路径,以便后续根据该读取路径从相应数据文件中加载参数值。
113.之后,响应于用户触发的确认完成未赋值参数的赋值操作,将所述未赋值参数以及未赋值参数对应的参数值存储在目标存储空间,在第二次执行所述目标段代码的过程中:针对所述未赋值参数,从目标存储空间中加载与未赋值参数对应的参数值;针对给出在数据文件中对应的参数值读取路径的参数,根据参数值读取路径从数据文件中加载对应的参数值;根据加载到的未赋值参数对应的参数值以及已赋值参数对应的参数值,生成与目标段代码对应的模型实例。之后,调用相应求解器完成该模型实例的求解。
114.本实施例中未详细展开介绍的内容可以参考前述其他实施例中的相关说明,在此不赘述。
115.以下将详细描述本发明的一个或多个实施例的数据建模装置。本领域技术人员可以理解,这些装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。
116.图7为本发明实施例提供的一种数据建模装置的结构示意图,如图7所示,该装置包括:获取模块11、确定模块12、显示模块13、生成模块14。
117.获取模块11,用于获取模型文件和数据文件,所述模型文件中包含用于对目标应用系统对应的待求解问题进行建模的代码,所述代码中包括多个参数,所述数据文件中至少包括部分参数对应的参数值。
118.确定模块12,用于响应于用户对所述模型文件中目标段代码触发的运行操作,确定所述目标段代码中是否包含未赋值参数。
119.显示模块13,用于若所述确定模块12确定所述目标段代码中包含未赋值参数,则显示与所述未赋值参数对应的提示信息,以用于提示输入对应的参数值。
120.生成模块14,用于根据所述用户输入的所述未赋值参数对应的参数值,以及所述目标段代码中已赋值参数对应的参数值,生成与所述目标段代码对应的模型实例。
121.可选地,所述装置还包括:求解模块,用于调用与所述模型实例对应的求解器,以对所述模型实例进行变量求解。
122.可选地,所述确定模块12具体用于:在第一次执行所述目标段代码的过程中,逐行确定每行代码中是否包含未赋值参数;若确定包含未赋值参数,则为所述未赋值参数进行设定字符的标记;若所述目标段代码执行完毕,则根据所述标记获取所述目标段代码中包含的全部未赋值参数;显示与所述全部未赋值参数对应的提示信息。
123.可选地,所述已赋值参数包括直接给出参数值的参数以及给出在所述数据文件中对应的参数值读取路径的参数,所述确定模块12具体用于:在第一次执行所述目标段代码的过程中,不执行根据所述参数值读取路径加载对应的参数值的操作。
124.可选地,所述装置还包括:存储模块,用于将所述未赋值参数以及所述未赋值参数对应的参数值存储在目标存储空间。
125.可选地,所述已赋值参数包括直接给出参数值的参数以及给出在所述数据文件中对应的参数值读取路径的参数;所述生成模块14具体用于:响应于所述用户触发的确认完成所述未赋值参数的赋值操作,在第二次执行所述目标段代码的过程中:针对所述未赋值参数,从所述目标存储空间中加载与所述未赋值参数对应的参数值;针对给出在所述数据文件中对应的参数值读取路径的参数,根据所述参数值读取路径,从所述数据文件中加载对应的参数值;根据加载到的所述未赋值参数对应的参数值以及所述已赋值参数对应的参数值,生成与所述目标段代码对应的模型实例。
126.可选地,所述生成模块14还用于:生成与所述目标段代码对应的模型实例之前,对所述目标段代码进行语法检测。
127.可选地,所述确定模块12还用于:响应于所述用户对所述目标段代码触发的运行操作,若在第一次执行所述目标段代码的过程中,确定所述目标段代码中不存在未赋值参数,则触发所述生成模块14在第二次执行所述目标段代码的过程中,基于获取的所述目标段代码已赋值参数对应的参数值,生成与所述目标段代码对应的模型实例。
128.图7所示装置可以执行前述实施例中提供的步骤,详细的执行过程和技术效果参见前述实施例中的描述,在此不再赘述。
129.在一个可能的设计中,上述图7所示数据建模装置的结构可实现为一电子设备。如图8所示,该电子设备可以包括:处理器21、存储器22、通信接口23。其中,存储器22上存储有可执行代码,当所述可执行代码被处理器21执行时,使处理器21至少可以实现如前述实施例中提供的数据建模方法。
130.另外,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现如前述实施例中提供的数据建模方法。
131.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的网元可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
132.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
133.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1