一种基于直观建模的优化问题求解方法与流程

文档序号:32502256发布日期:2022-12-10 05:40阅读:42来源:国知局
一种基于直观建模的优化问题求解方法与流程

1.本发明涉及一种解决优化问题的方法,尤其涉及一种基于直观建模的优化问题求解方法。


背景技术:

2.常见的优化问题包括线性方程组求解、非线性方程组求解、混合整数线性规划、非线性规划等问题。在解决实际的工程问题时,需要先给出工程问题的数学表述形式,即用抽象的变量去代表实际的物理量,给出各个变量之间的数学关系式,然后通过编程将优化目标、约束条件、优化变量输入计算机,交由某些求解器或工具包完成计算,得到优化结果。在上述过程中,开发人员不仅需要进行优化问题的数学建模,还需要学习编程语言来具体实现该数学模型,而且开发的一个程序往往只能解决某一个特定的工程问题,遇到优化问题的数学模型发生改变的情况,开发人员需要重新编程,程序在模型上遇到了难以重复利用、需多次开发、灵活性和可扩展性差等问题。因此,需要发明一种可通过输入数学表述形式直接进行计算得到结果的优化问题求解方式,它将十分显著地减少开发人员的开发工作量,使研发人员只关注优化问题的数学模型本身。


技术实现要素:

3.针对上述背景技术中存在的技术问题,本发明提出一种优化问题的直观建模方法以及基于自动微分的求解方法,该方法可有效降低代码编写量,使开发人员无需将数学表述形式转换为编程语言,而可以直接得到优化问题的结果。
4.为此,本发明采取以下技术方案:
5.1)优化问题的数学表达式的直观描述格式中的要素包括优化变量、数值和运算符。
6.101)数学表达式优化变量一般用字母、数字和上下标来表示,在字符串中,下标采用下划线的格式进行书写,使优化变量的直观描述方式与数学表达式中基本相同。优化变量的字符串表示中:第一个字符必须是字母,而不能是下划线或者数字,后续的字符可由字母、下划线和数字任意组合。
7.102)数学表达式中的数值可分为整数、浮点数和科学计数法格式的数。整数由若干数字字符组成,浮点数由若干数字字符和小数点组成。科学计数法格式的数在字符串表示中使用“小数+e+整数”的格式,前一个小数是有效值,后一个整数表示10的次幂数。
8.103)数学表达式中的运算符的字符格式包括各种数学中常用的算数运算符,如加(+)、减(-)、乘(*)、除(/)、取余(%)、次幂(^)、阶乘(!)等,也包括布尔操作符,如相等(==)、不相等(!=)、大于(》)、小于(《)、大于等于(》=)、小于等于(《=)等。
9.运算符还包括一些常见函数(下称内置函数),它们也可以用字符串形式表达,具体示例如表1所示:如求绝对值、求平方根、求以e为底的指数、取整、取最大值、取最小值、三角函数、反三角函数、自然对数、常用对数等。
10.表1
[0011][0012]
2)以字符串形式对优化问题进行直观描述。优化问题的数学表述形式包括优化目标、优化变量、约束条件三个部分。
[0013]
具体而言,线性方程组求解和非线性方程组求解的优化目标为求解方程组中未知变量的值,这些未知的变量就是优化变量,约束条件是具体的方程组中的等式条件。混合整数线性规划和非线性规划的优化目标是指改变优化变量的值,使其在满足约束条件的情况下,某个表达式的值达到最大或最小,优化变量是可变化的未知量,约束条件是等式条件或不等式条件。
[0014]
在一般的等式约束和不等式约束中,左侧的式子是包含有优化变量的计算式,表示优化变量的某些计算过程,右侧的式子是一个数值,表达式中间用等号或不等号连接。
[0015]
优化问题的直观描述形式由若干行字符串表示。线性方程组和非线性方程组的表述形式为:从第一行开始,每一行表示一个方程,都是等式,最后一行是优化变量声明。混合整数线性规划和非线性规划问题的表述形式为:第一行是优化目标,通常为某一计算式的最大值或最小值,可以使用内置的常见函数中最大值和最小值的表示方式进行表示,之后
的每一行都是一个约束条件,可以是等式约束,也可以是不等式约束,最后一行是优化变量声明。
[0016]
优化变量声明应当包括约束条件和优化目标中出现的所有优化变量,约束条件和优化目标中不能出现未声明的优化变量。优化变量声明中的优化变量之间用逗号分隔。需要进一步定义优化变量类型或值的范围的,可在优化变量后紧跟着冒号进行说明。
[0017]
如前所述,规定的字符串形式都能与数学表述形式一一对应,优化变量、约束条件、优化目标均可以使用上述规则进行字符串形式的表述,而且它与数学表述形式在书写和视觉上达到了统一,二者有相似的直观视觉感受。
[0018]
3)根据字符串描述方式的规则,通过字符串解析的方法进行优化问题的直观建模。
[0019]
字符串的解析使用匹配器完成,匹配器按照字符串直观描述规则,将输入的字符串识别为变量、数值、单目运算符、双目运算符、左括号、右括号、内置函数、参数分隔符等表达式元组。匹配器之间可以相互调用嵌套,如:数值匹配器由数字匹配器、小数点匹配器组成,变量匹配器由字母匹配器、数字匹配器和下划线匹配器组成。单目运算符和双目运算符的区分需要根据字符串上下文进行匹配,内置函数需要事先设定,变量名不能与内置函数名重合。匹配器可以有效防止字符串的解析错误。
[0020]
表达式的字符串格式由匹配器解析为表达式元组集合,这个表达式元组集合是中缀格式的,需要转换为后缀表达式以进行计算关系的存储和表达式计算。
[0021]
301)线性方程组的直观建模:在等式约束中,左侧的多项式字符串以“数值/数值计算式+乘+优化变量”为基本单元,基本单元之间由加减关系连接,形成“ax=b”的格式。数值计算式是根据步骤103)所述的内置函数对数值进行计算,然后根据表达式字符串格式提取优化变量的系数,形成系数矩阵,储存时可以采用稀疏矩阵的存储方式。优化变量只需要指明变量名,优化变量的值是浮点数。
[0022]
302)非线性方程组的直观建模:在等式约束中,使用“f(x)=0”的形式进行表示,即左侧的多项式包含带有优化变量的计算式和常数项,使等式右边始终为0。由此,可以省略该行等式字符串的右半部分。储存每一步的优化变量、数值和运算符,形成计算关系,乘除运算中,数值与优化变量的前后关系无需规定。优化变量只需要指明变量名,优化变量的值是浮点数。
[0023]
303)混合整数线性规划的直观建模:在优化目标和约束中,多项式字符串以“数值/数值计算式+乘+优化变量”为基本单元,基本单元之间由加减关系连接。每个优化变量类型都可定义为0/1变量、整数或浮点数,故不仅需要指明变量名,还需要指明各个优化变量的类型,也可以指定各个优化变量的值的范围。储存每一步的优化变量、数值和运算符,形成计算关系。
[0024]
304)非线性规划的直观建模:在优化目标和约束中,多项式字符串可由数值、数值计算式、运算符和优化变量任意组合。必须为每个优化变量规定范围。储存每一步的优化变量、数值和运算符,形成计算关系。
[0025]
步骤302)-304)中,形成的计算关系以后缀表达式的形式进行存储,在事先给定变量的值时,顺序计算后缀表达式即可得到表达式的计算结果。
[0026]
以上对四种优化问题的直观建模规定了字符串的解析规范和模型的储存方式。
[0027]
4)基于自动微分求解优化问题,得到优化问题的结果。
[0028]
前一步储存了各表达式中的优化变量和数值的计算关系,利用这些计算关系和约束条件,可以进行基于自动微分的求解过程。
[0029]
优化问题的求解需要计算导数值,尤其是非线性规划问题需要计算多元函数的雅可比矩阵和海森矩阵。雅可比矩阵是一阶偏导数组成的矩阵,海森矩阵是二阶偏导数组成的矩阵。自动微分能够快速的计算各阶偏导数,从而加快优化问题的求解。
[0030]
计算结果按照“优化变量名:值”的方式进行表示,字符串的每一行代表一个优化变量。
[0031]
优化问题中储存的优化变量和约束条件提供自动微分算法所需的各变量计算关系表达式。计算关系表达式是后缀形式,将后缀形式的表达式元组集合从前到后遍历,每遇到单目运算符或双目运算符便意味着一次运算,形成一个自动微分算法的中间变量,根据后缀表达式形成中间变量后,按照自动微分的反向模式算法顺序逐步计算,最终得到导数值。
[0032]
依据上述方法搭建优化问题的计算平台,平台只需直接输入优化问题数学表述形式的字符串,包括优化目标、约束条件、优化变量,字符串自动解析,求解后将各优化变量的优化结果返还给用户。
[0033]
本发明方法将优化问题的求解解耦为字符串形式描述和通用模型计算两个部分,提高了求解优化问题的速度和效率,且具有良好的可扩展性。
[0034]
本发明的有益效果为:
[0035]
1)本发明采用直观的方式进行建模,省去了一般的编程操作,大大提升了优化问题建模的效率。本发明采用字符串形式进行优化问题的描述,使它与优化问题的数学表述形式几乎相同。与将数学表述形式转换为编程语言的步骤相比,本发明的直观建模方法在可读性和开发效率上都优于编程语言描述方式,降低了应用成本。
[0036]
2)本发明所实现的优化问题模型灵活度高,可自由变换。当优化问题变化时,只需要更改问题描述的字符串即可实现优化问题的求解,不需要重新进行编程。本发明方法突破了以往建模中只能更改某些模型参数的限制,可以在短时间内完成优化问题的重构。
[0037]
3)计算导数值在优化问题求解中占据了许多时间和资源,本发明采用自动微分计算导数值,加快了导数值计算的速度和准确度。这既保证了结果的正确,也提高了整体的计算速度和计算效率。
[0038]
4)本发明的直观建模方法通过字符串传递优化问题,最终的计算结果也以字符串形式返回,中间的计算过程快速且无需外部程序干预,易于与其他程序功能集成,快速解决工程实际问题。
具体实施方式
[0039]
以下结合具体实现示例对本发明的技术方案做进一步的详细说明。
[0040]
1)解线性方程组。
[0041]
求解一个含有三个变量的线性方程组:
[0042][0043]
优化目标为求x1、x2、x3的值。在字符串的直观建模方式中,变量用“x1”、“x2”、“x3”进行表达,约束条件只需将上述方程组公式中的变量写成“x1”、“x2”、“x3”,其余部分无需改变。上述问题的直观建模字符串如下所示:
[0044]
x1+3/3*x2+min(2,5)*x3=1
[0045]
1*3*x2+8*x1=4*3
[0046]
x2+sin(8-2)*x3=7
[0047]
x1,x2,x3
[0048]
为了充分展示字符串形式的灵活和内置函数的功能,在本实施例中,“3/3”的计算结果为数值1;“min(2,5)”表示从2和5中取最小值,计算结果为2;“1*3”的计算结果为3;“4*3”的计算结果为12;“sin(8-2)”代表计算sin(6)的值。优化问题的字符串的表述形式和数学表述实现了一一对应。
[0049]
最终的计算结果为:
[0050]
x1:-0.8901070035599608
[0051]
x2:6.373618676159895
[0052]
x3:-2.241755836299967
[0053]
每一行展示了一个优化变量的优化结果,最终的结果与数学方式计算得到的结果相同,没有精度上的损失和误差。
[0054]
2)混合整数线性规划。
[0055]
求解如下优化问题:
[0056][0057]
优化目标是求取5x1+3x2+2x3+7x4+4x5的最大值,约束条件是2x1+8x2+4x3+2x4+5x5≤10,优化变量也有限制,除x3为任意实数外,其余变量均只可取值0或1。同样的,在字符串的直观建模方式中,变量名用“x1”、“x2”、“x3”、“x4”、“x5”进行表达。变量类型为1,表明变量为0/1变量;变量类型为2,表明变量取值为整数;变量类型为3,表明变量取值为任意实数,在计算机中为浮点数。上述问题的直观建模字符串如下所示:
[0058]
max(5*x1+3*x2+2*x3+(10-3)*x4+4*x5)
[0059]
2*x1+8*x2+4*x3+2*x4+max(1,5)*x5《=10
[0060]
x1:1,x2:1,x3:3,x4:1,x5:1
[0061]
在本实施例中,优化目标使用“max()”的形式进行表达,表示求取表达式的最大值为优化目标。若优化目标为求取表达式的最小值,则需要用“min()”的方式进行表达。“(10-3)”的计算结果是7。“max(1,5)”表示1和5的最大值,计算结果为5。字符串的建模结果和优化问题模型实现了一一对应。
[0062]
最终的计算结果为:
[0063]
x1:1
[0064]
x2:0
[0065]
x3:0.25
[0066]
x4:1
[0067]
x5:1
[0068]
每一行展示了一个优化变量的优化结果,最终的结果与数学方式计算得到的结果相同,没有精度上的损失和误差。
[0069]
3)非线性规划。
[0070]
求解如下优化问题:
[0071][0072]
优化目标是求取x1x2(x1+x2+x3)+x3的最小值,约束条件是x1x2x3x4≥25和。优化变量也有限制,x1的取值范围是从0到5的任意实数,其他变量的取值范围是从1到5的任意实数。同样的,在字符串的直观建模方式中,变量用“x1”、“x2”、“x3”、“x4”进行表达。变量的范围和约束条件中表示表达式的上下限都采用“x:[a,b]”的形式,表示变量或计算式x的范围是从a到b的实数。上述问题的直观建模字符串如下所示:
[0073]
x1*x4*(x1+x2+x3)+x3
[0074]
x1*x2*x3*x4:[25/2e19]
[0075]
x1^2+x2^2+x3^2+x4^2:[40/40]
[0076]
x1:[0/5],x2:[1/5],x3:[1/5],x4:[1/5]
[0077]
在本实施例中,优化目标未使用“min()”的形式进行表达,而是只写表达式,因为许多实际的优化问题的优化目标都是求解表达式最小值,所以当“min()”和“max()”省略时,优化目标默认为求取表达式的最小值。“[25/2e19]”表示这是一个不等式约束,左侧表达式的值要大于25,小于2
×
10
19
,在这里采用了科学计数法的表达方式,“2e19”代表数值2
×
10
19
。在问题所涉及的优化区间内,2
×
10
19
这是一个较大的数,表示表达式的上限较大。“[40/40]”表示这是一个等式约束,即左侧表达式的值等于40。字符串的建模结果和优化问题模型实现了一一对应。
[0078]
最终的计算结果为:
[0079]
x1:0.754508661515331
[0080]
x2:4.639368618443926
[0081]
x3:3.7885688192696683
[0082]
x4:1.8851317736427156
[0083]
每一行展示了一个优化变量的优化结果,最终的结果与数学方式计算得到的结果相同,没有精度上的损失和误差。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1