一种Simulink模型到C语言的优化参数自动配置方法

文档序号:31392750发布日期:2022-09-03 02:44阅读:254来源:国知局
一种Simulink模型到C语言的优化参数自动配置方法
一种simulink模型到c语言的优化参数自动配置方法
技术领域
1.本发明涉及软件测试技术领域,尤其涉及一种基于强化学习的simulink模型到c语言的优化参数自动配置方法。


背景技术:

2.信息物理系统(cps)是在环境感知的基础上,深度融合计算、通信和控制能力的可控可信可拓展的网络化物理设备系统,主要应用于各种智能系统。cps开发工具链在cps数据流模型的设计、仿真和验证中得到了广泛的应用。典型的cps开发工具,例如mathworks的simulink,包含基于模型的设计工具,仿真器,编译器和自动代码生成器。开发人员可快速利用该工具对复杂的系统进行基于图形模型的设计,结合自动代码生成工具将数据流模型自动生成目标代码,并为软件开发节省了大量的时间和人工成本,提高了开发效率。
3.编译器的作用是将某种编程语言转换为可执行程序,现在的工作主要使用基于机器学习的方法来解决许多问题不同的编译器参数优化问题。这些技术提高了编译后获得的可执行程序的质量,可以有效提高编译器的性能。这为simulink模型转为c代码过程中的参数优化提供了思路。由于新的目标架构,编译器优化空间持续增长,使用现有技术为simulink模型转为c代码过程中的参数进行优化依旧存在很多困难,首先其他编译器在编译代码时,针对的都是c或c++等编程语言,而simulink模型本身是一个包含了编程逻辑和时序关系的图,以往的针对编译器优化进行的研究无法捕捉simulink模型本身存在的这些信息。另外在使用matlab自带的embedded coder工具为simulink模型生成c语言代码时,该工具会针对simulink模型自动推荐编译时可优化的参数,而使用推荐的这些参数生成的代码在时间复杂度上并不能达到最优的性能。


技术实现要素:

4.根据现有技术存在的问题,本发明公开了一种基于强化学习的simulink模型到c语言的优化参数自动配置方法,具体包括如下步骤:
5.使用现有的随机生成工具生成simulink模型、构建模型种子库,在种子库生成过程中,记录simulink模型里每一个组件的权重和组件之间边的权重,最终生成节点和边的权重矩阵,采用权重矩阵构建图结构;
6.构建强化学习代理,将深度强化学习算法和simulink模型到c语言编译过程中优化参数自动配置相结合,对simulink模型转为c代码过程中的参数进行优化,将优化过程存在的时序关系建模为马尔科夫决策过程;
7.按顺序打开种子库的一个模型,将图结构输入至强化学习代理,所述强化学习代理根据输入信息选择simulink模型下一步要执行的动作,并将要执行的动作传送至simulink模型,simulink模型执行该动作,重复该步骤对模型进行参数优化;
8.将选择的参数序列用于当前simulink模型编译为c语言的过程中,编译完毕后计算c语言的执行时间,将该执行时间与使用matlab自行推荐的优化参数进行比较,求出时间
加速比,将该时间加速比作为奖励的参考;当时间加速比越大则使用求出的参数生成的c语言的执行时间越短,模型效果越好;
9.根据时间加速比对强化学习代理进行更新,将新的simulink模型输入至完成更新的强化学习代理中进行优化参数的推荐。
10.采用深度强化学习算法对simulink模型转为c代码过程中的参数进行优化时:将马尔科夫决策记作一个四元组,包括状态集、动作集、状态转换策略和奖励函数。
11.其中状态代表当前simulink模型构成的图结构的状态,强化学习代理根据当前模型的状态执行下一个动作选择,每一个动作为一组参数优化序列,将从环境状态到动作的映射学习关系定义为状态转换策略。
12.进一步的,动作选择的方式为:强化学习代理根据状态特征的输入选择动作时,采取ε-greedy策略,具体方式为,设置一阈值ε,在动作选择过程中有ε概率是随机选择动作,1-ε的概率执行神经网络预测的动作,初始ε设置为较大数值,在不断迭代过程中ε值逐渐衰减,以较大的概率执行神经网络预测的动作。
13.进一步的,对强化学习代理进行更新时:将每个simulink模型的状态从种子库中依次读入当前的强化学习模型,该模型使用一个代理来指导优化参数序列的选择,反馈出行为价值最大的动作,强化学习代理在执行该动作后获得奖励,并得到选择动作后的下一个状态,将当前状态、动作、奖励和下一状态重新输入强化学习模型中,用于计算强化学习模型的损失函数,以更新当前值网络的参数,每隔固定的步数,将当前值网络的参数拷贝给目标值网络以对其更新。
14.由于采用了上述技术方案,本发明提供的一种基于强化学习的simulink模型到c语言的优化参数自动配置方法,在simulink模型图编译为c语言的过程中,使用强化学习来为这一过程自动配置最优参数,可以有效的捕获cps模型本身的信息,并在优化空间的开发和探索之间取得平衡,进而可以提高生成的代码的质量,提升了编译效果,解决了simulink模型图编译为c语言的过程中的参数优化问题,另外该方法求出的参数编译成的c语言的执行时间将比使用matlab自行推荐的参数编译成的c语言的执行时间更短。
附图说明
15.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
16.图1为本发明方法的流程图。
具体实施方式
17.为使本发明的技术方案和优点更加清楚,下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚完整的描述:
18.如图1所示的一种基于强化学习的simulink模型到c语言的优化参数自动配置方法,具体包括如下步骤:
19.s1:构建初始模型种子库组件:
20.在利用强化学习为simulink模型生成代码自动推荐优化参数前,通过现有模型生成方法构建一个模型种子库,在每一个simulink模型生成的过程中记录其节点权重和边权重等信息,以便构成图结构。在使用强化学习自动推荐优化参数过程中循环遍历种子模型库,并利用上述信息进行构图,将构成的图输入到强化学习中,为代理提供初始模型。
21.s2:构建强化学习代理
22.使用强化学习来为simulink模型转为c代码过程中的参数进行优化的过程,其存在的时序关系可以建模为马尔科夫决策过程。我们习惯性将马尔科夫决策记作一个四元组,它包含状态集、动作集、状态转换策略和奖励函数。我们将强化学习算法用于simulink模型转c代码优化,算法中各要素定义如下:
23.a)状态:模型的状态即为当前simulink模型构成的图结构。
24.b)动作:强化学习代理根据当前模型的状态指导模型执行下一个动作,每一个动作为一组参数优化序列。
25.c)策略:强化学习是从环境状态到动作的映射学习,称该映射关系为策略。通俗的理解,即智能体如何选择动作的思考过程称为策略。
26.d)奖励:强化学习代理选择一组优化参数后,应用这组参数为当前的simulink模型生成c代码,并计算该代码的执行时间。而后使用matlab针对该simulink模型推荐的参数转换成c语言并计算执行时间,计算时间加速比。并根据加速比给予合适的奖励。若加速比大于1,则奖励为正值;若加速比小于1,奖励为负值。
27.s3:训练强化学习代理:
28.按顺序打开种子库的一个模型,智能体的初始状态为第一次读入的simulink模型图结构,然后选择要执行的动作,即从所有参数中挑选出一套参数进行推荐。智能体执行完动作后按照状态转换策略转换到下一个状态,即下一个simulink模型,然后执行下一个动作,即下一套推荐的参数。状态转移到下一个图模型,以此类推。值得注意的是,模型与模型之间并不存在逻辑关系,因此这是一个退化的强化学习模型,即我们的模型是mode-free模型,状态转移策略为随机转移。
29.我们的状态和动作空间是高维的,因此随着维数的增加,计算量呈指数倍增长。深度神经网络对复杂特征的提取有很好效果,因此我们采用将深度学习与强化学习相结合的算法,即deep q-network(dqn)算法。dqn算法中的代理是根据状态-动作价值函数(该函数表示处于某种状态且立即采取相关动作,并且后续均按照最优策略操作能获得的总效用)来为当前状态选择最优的动作。而后根据选择的动作进入下一个状态。由于simulink模型之间是没有关联的,因此状态转移策略为随机转移。
30.状态-动作价值函数会根据当前状态选择动作得到的奖励进行更新。更新采用渐进的方式,类似梯度下降,这就能够减少估计误差造成的影响,最后可以收敛到最优的函数。转移规则如下:
31.q(s
t
,a
t
)

q(s
t
,a
t
)+α[r
t+1
+γmaxaq(s
t+1
,a)-q(s
t
,a
t
)]
[0032]
其中st表示在t时刻的状态,at表示在t时刻执行的动作,st+1表示在t时刻执行动作at之后的状态,rt+1表示从状态s转移到st1所获得的即时的奖励,q(st,at)表示在状态st下执行动作a所能得到的总的奖励。γ为衰变值,是满足0≤γ《1的常数。γ越接近于1代表它越有远见会着重考虑后续状态的的奖励,当γ接近0的时候就会变得近视只考虑当前
的奖励的影响.α为学习率,表示新的值对更新后值所造成的影响大小。
[0033]
s4:计算强化学习奖励
[0034]
执行动作的过程中,将推荐的参数输入到simulink中,编译成出c语言后并执行,计算c语言的执行时间。将使用matlab推荐的参数转换成的c语言的执行时间进行除以该时间,计算时间加速比,并根据加速比给予合适的奖励。加速比大于1,奖励为正值;加速比小于一,奖励为负值。
[0035]
s5:更新强化学习代理
[0036]
我们使用了两个结构一模一样的dqn网络,q_net与tq_net,两个网络唯一的区别在于参数不同。q_net是我们要训练的网络,tq_net中的参数是旧的q_net的参数。每训练固定个步数之后,将q_net的参数赋予tq_net,提高了训练的稳定性。q_net的损失函数如下
[0037][0038][0039]
dqn是一种离线学习法,它能学习当前经历着的,也能学习过去经历过的,所以在学习过程中随机的加入之前的经验会让神经网络更有效率。经验池解决了相关性及非静态分布问题。在t时刻,强化学习代理做出动作之后,产生的样本记做(s
t
,a
t
,r
t
,s
t+1
),我们将(s
t
,a
t
,r
t
,s
t+1
)保存在经验池中。每隔固定的时间步,便从记忆库中随机抽,打乱其中的相关性,然后进行训练。采取记忆库+随机抽样,破坏样本的连续性,使得训练更加有效。
[0040]
具体实施方法如下:
[0041]
步骤一:设置一个阈值ε,它是一个介于0-1之间的数值。在训练过程中采用的优化参数序列不都是根据神经网络计算出来的,有ε概率是随机选择动作,1-ε的概率执行神经网络预测的动作。ε值随训练次数不断衰减。
[0042]
步骤二:我们使用一个代理来指导优化参数序列的选择。为了能够捕获当前simulink模型的逻辑关系和时序信息,我们将simulink模型构成图结构。该代理以simulink模型构成的图结构作为输入,在动作库中选择模型下一步执行的动作并输出给模型。状态是模型的具体信息,即构成的图结构,动作是指选择一组优化参数序列应用于当前模型。
[0043]
步骤三:计算生成c语言的执行时间并计算加速比
[0044]
通过对大量的simulink模型进行编译,统计matlab对于这些模型转换成c语言时推荐的参数,并取交集。将这些参数作为我们的动作空间。在上一步骤中,强化学习代理会根据当前的simulink模型推荐出一套推荐优化参数序列。我们将这套参数输入到matlab中进行sil仿真,编译为c语言,并求出代码的执行时间。与使用matlab自行推荐的优化参数进行比较,求出时间加速比。此加速比作为我们的奖励的参考。加速比越大,说明使用我们的方法求出的参数生成的c语言的执行时间越短,模型效果越好。
[0045]
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1