一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

认知工程的自动化工程学习框架的制作方法

2022-07-11 04:47:12 来源:中国专利 TAG:

认知工程的自动化工程学习框架
1.相关申请的交叉引用
2.本技术要求于2019年8月16日提交的美国临时申请号62/887,822的权益,其公开内容通过引用被整体并入本发明。


背景技术:

3.工业自动化正在经历一场智能生产的技术革命,这得益于智能机器人、传感器、大数据、先进材料、先进超级计算、物联网、信息物理系统和人工智能方面的最新突破。这些系统目前正在通过软件集成到工厂、电网、交通系统、建筑物、家庭和消费设备中。工业自动化系统的生命周期可以分为两个阶段:工程和运行时。工程阶段是指在系统运行之前发生的活动。这些工程活动可以包括硬件选择、硬件配置、自动化代码开发、测试和模拟。另一方面,运行时阶段是指在系统运行期间发生的活动。示例运行时活动包括控制、信号处理、监控、预测等。
4.由于传感器大量数据可用,人工智能(ai)在工业自动化中的应用主要集中在运行时阶段。例如,时间序列预测算法在信号处理方面已经非常成功。计划和约束满足用于控制和控制代码生成。异常检测算法在针对网络攻击的系统监控中变得非常流行。概率图形模型和神经网络用于复杂信息物理系统(例如风力和燃气轮机)的预测和健康管理。
5.然而,本文认识到,由于与在工程阶段应用ai相关的各种技术问题,ai在工程阶段的使用尚未得到充分发展。


技术实现要素:

6.本发明的实施例通过提供可以使用机器学习或人工智能(ai)来完成自动化工程任务的方法、系统和装置来解决和克服本文描述的一个或多个缺点。
7.在示例方面,计算系统、例如自动化工程系统,可以使用机器学习来执行各种自动化工程任务。该系统可以基于自动化源代码训练神经网络,例如,学习模块的神经网络可以被配置为学习可编程逻辑控制器(plc)的可编程逻辑控制器(plc)源代码和制造系统的自动化源代码。该系统可以根据训练生成代码嵌入。例如,学习模块可以被配置为基于对plc源代码和自动化源代码的学习,生成将plc源代码片段和自动化源代码片段定义为空间中的相应向量的代码嵌入。基于代码嵌入,系统可以确定与特定代码片段相关联的类别。可替代地或附加地,基于代码嵌入,系统可以确定不同的代码片段类似于给定的源代码片段。特别地,在某些情况下,语义代码搜索模块可以生成与由源代码定义的空间中的向量相比与近邻相关联的评分,以确定不同的代码片段在代码语法或代码功能方面与给定的源代码(例如,plc源代码或自动化源代码)相似。在一些情况下,语义代码搜索模块还可以被配置为与空间中的向量相比对近邻进行评分,以确定不同的代码片段在代码功能方面与源代码片段(例如plc源代码或自动化源代码)相似,而在代码语法上不同。
8.在另一个示例方面,该系统可以基于部分硬件配置生成与硬件组件相关联的概率分布。例如,可以配置硬件推荐模块来学习用于完成自动化工程任务的硬件配置。硬件推荐
模块还可以被配置为接收部分硬件配置。基于学习硬件配置,硬件推荐模块可以确定多个硬件组件以及与多个硬件组件相关联的相应概率。相应概率可以定义选择多个硬件组件的完成部分硬件配置的硬件组件,从而定义完成自动化工程任务的完整的硬件配置。
附图说明
9.当结合附图阅读时,从以下详细描述中可以最好地理解本发明的前述和其他方面。为了说明本发明,在附图中示出了当前优选的实施例,然而应当理解,本发明不限于所公开的具体手段。图中包括以下附图:
10.图1是根据本发明描述的各种实施例的被配置为学习自动化代码和硬件以使自动化工程任务自动化的示例自动化工程系统的框图。
11.图2是描绘自动化工程系统预测具有人工注释的代码的示例性能结果的图表。
12.图3是描绘自动化工程系统的不同分类器的示例性能结果的图表。
13.图4是描绘自动化工程系统使用代码预测代码的示例性能结果的图表。
14.图5示出了可以输入到自动化工程系统中的示例代码片段,以便自动化工程系统可以识别代码片段之间的相似性。
15.图6是示出了可以由根据示例实施例的自动化工程系统执行的示例操作的流程图。
16.图7示出了可以在其中实现本发明的实施例的计算环境的示例。
具体实施方式
17.首先,本发明认识到,迄今为止,各种问题限制了将人工智能应用于工业自动化工程阶段的能力。例如,工程数据由于其专有性质而普遍稀缺。再如,与运行时阶段相比,工程阶段的持续时间通常较短。例如,一些工业自动化系统的运行时间超过30年。因此,工程阶段通常被认为不如运行阶段重要。再例如,获取人类意图和知识通常是一项艰巨的技术挑战。在专家系统中获取工程专业知识可能既耗时又昂贵。然而,本文认识到,制造正在从集中式大规模生产转变为分布式批量生产。即使工程阶段相对于运行时阶段的持续时间较短,这种转换也会增加工程阶段相对于自动化总成本的成本。
18.然而,本发明进一步认识到,自动化工程涉及将其与通用软件区分开来的各种技术挑战。例如,自动化工程的软件开发通常由自动化工程师而不是软件专家完成,这可能导致代码不可重用和不精确。此外,自动化工程软件(aes)与物理世界的交互通常要求工程师了解定义传感器、执行器和其他硬件如何连接到给定系统的数字和模拟输入和输出的硬件配置。因此,为工程工具的开发定义硬件配置可能需要在硬件和软件开发之间进行多次迭代。硬件和软件产品之间的这种紧密耦连可能会导致aes的开发周期更长以及其它影响。
19.根据本发明描述的各种实施例,自动化工程任务是使用机器学习来执行的。特别地,例如,可以根据本发明描述的实施例使用机器学习来执行代码分类、语义代码搜索和硬件推荐。代码分类一般是指将现有代码和新代码组织成功能库,例如具有不同类别的代码功能。示例类别包括但不限于信号处理、信号生成和机器人运动控制。在某些情况下,随着生产需求的变化,可能需要将新功能高效地集成到生产中。再如,生产系统的频繁重新配置可能需要更高程度的代码可重用性。本发明认识到,语义代码搜索例如可以通过允许工程
师找到功能等效的代码来帮助工程师的生产力。在某些情况下,在编写软件以自动化他们以前从未体验过的硬件时,类似的代码可以通知他们的决策制定。关于硬件推荐的任务,自动化工程包括将各种硬件组件与软件集成以实现生产目标的任务。因此,选择良好的硬件配置可能是一项关键活动。在示例实施例中,系统可以推荐硬件以帮助工程师进行硬件配置自动完成。例如,在某些情况下,给定部分硬件配置,系统可以预测完整的硬件配置。
20.现在参照图1,根据本文描述的各种实施例,示例架构或自动化工程系统100可以执行自动化工程任务。该系统100包括代码分类模块102、语义代码搜索模块104和硬件推荐模块106,被配置为执行各种自动化工程任务,如本文所述。系统100还包括学习模块108,其可以包括一个或多个神经网络。
21.系统100可以包括一个或多个处理器和存储器,该存储器具有存储的应用程序、代理和计算机程序模块以实现本公开的实施例,包括学习模块108、代码分类模块102、语义代码搜索模块104以及硬件推荐模块106等。模块可以指代执行一个或多个功能的软件组件。每个模块可以是一个离散单元,或者多个模块的功能可以组合成形成一个大型程序的一部分的一个或多个单元。
22.可以收集各种数据用于训练学习模块108。在示例中,可以关于工业数据集110和制造商数据集112来训练学习模块108。工业数据集110可以包括工业自动化系统使用的源代码114。尤其是,例如,源代码114可以包括用于可编程逻辑控制器(plc)的程序。制造者数据集112可以包括来自制造自动化系统的源代码116和硬件配置数据118。在示例用例中,源代码116和硬件配置数据118可以包括从公共源收集的数据,例如,在create.arduino.cc的arduino project hub。示例测试数据集在本公开全文中被引用以说明由系统100生成的示例结果,但是应当理解实施例不限于示例数据集和来自示例数据集的示例结果。尤其是,示例数据集包括2,927个arduino项目和683个plc项目。各种源代码116和/或硬件配置数据118可以与相应的项目相关联。此外,制造者数据集112可以包括各种元数据,这些元数据指示与相应代码或数据相关的各种信息,例如但不限于,与特定代码相关的项目类别、项目标题、摘要、项目的各种标签或描述,以及硬件配置(例如,组件和供给)。在示例中,制造者数据集112包括与多个项目相关联的数据,并且多个项目中的每一个被分类,使得每个项目与一个类别相关联。在示例中,代码分类模块102使用项目的类别作为标签。如本发明进一步描述的,代码分类模块102可以将标签应用于给定代码,以预测代码的分类。在某些情况下,给定项目的标题、摘要、标签和描述元数据可以为标签分类提供上基线。也就是说,例如,提供额外的特征可以提高机器学习模型的预测性能。
23.类似地,硬件配置数据118可以与多个项目相关联。在示例中,硬件配置数据118包括特定项目所需的组件列表。在一些示例中,硬件配置数据118在数据管护模块120处被管护以便清理数据。数据管护模块120可以执行自动化操作以清理数据。另外或替代地,自动化专家可以在数据管护模块120处清理数据。举例来说,在示例测试用例中,硬件配置数据118包括用于2,927个项目的超过6,500个独特组件。继续该示例,在数据管护模块120处,确定6,500个组件中的一些组件实际上不是唯一的。例如,在某些情况下,同一组件在不同列表中的名称不同(例如,“resister 10k”与“resistor 10k ohm”)。这样的命名差异可以在数据管护模块120处被移除。在一些示例中,组件可以根据它们的功能被重命名,以便管护硬件配置数据118。尤其是,例如,可以为硬件定义抽象的功能级别以便正确命名组件。示例
第一抽象级别(例如,级别1)中的示例类别可以包括但不限于执行器、arduino、通信、电子器件、人机界面、材料、存储器、电源和传感器。第二或更精细抽象级别(例如,级别2)中的示例类别可以包括但不限于:执行器{声学、空气、流量、电机}、arduino{大、中、其他、小}、通信{以太网、光纤、无线电、串行、wifi}、电子器件{电容器、二极管、继电器、电阻器、晶体管}、人机界面{按钮、显示器、输入、led}、材料{适配器、接线板、螺钉、焊料、接线}、存储器{固态}、电源{电池、调节器、移位器、电源、变压器}和传感器{加速、声学、相机、编码器、流体、gps、杂项、光学、图像、pv、rfid、温度}。
24.尽管出于示例的目的呈现了用于对硬件组件进行分类的两个抽象级别,但应当理解,硬件可以被抽象为附加或替代级别以管护数据,并且所有此类数据管护都被认为是在本发明的范围内。此外,尽管出于示例的目的呈现了特定分类,但应当理解,硬件组件可以根据替代的、更少的和/或附加的分类进行分类,并且所有这样的分类都被认为在本发明的范围内。
25.与制造者数据集112类似,工业数据集110可以包括从公共来源收集的数据。例如,plc代码可以从www.oscat.de上的os cat库收集,这是一个独立于供应商的公开可用的plc程序库。可以在oscat库中找到不同类别的可重用代码函数,例如信号处理(sigpro)、几何计算(geometry)和字符串操作(strings)。在示例中,所收集的源代码114可以包括其关联类别,例如在文件注解部分中。这些类别可以被提取,并且可以被代码分类模块102用作标签。在示例中,源代码114是用scl语言编写的,但应当理解,实施例不限于此。
26.继续参照图1,给定代码片段,代码分类模块102可以预测与代码相关联的标签。在一些情况下,在代码输入到代码分类模块102之前,它在一个或多个预处理模块(例如第一或plc代码预处理器122或第二代码预处理器124)处被预处理。例如,plc代码预处理器122可以处理源代码114以从源代码114中提取各种特征。类似地,第二代码预处理器124可以处理源代码116以提取各种特征。举例来说,预处理器122和124可以丢弃对硬件的评论和/或引用,使得学习模块108被输入高质量数据。下面的表1说明了可以在plc代码预处理器122和第二代码预处理器124处提取的示例特征。在示例中,制造者数据集112包含比工业数据集110更多的特征,因此,在制造者数据集112中存在一些在工业数据集110中不可用的特征。尤其是,示例源代码114不含有includes函数和项目数据,例如标签、标题、描述和组件。然而,应当理解,表中的特征被呈现为示例,并且可以根据其他示例实施例提取替代或附加特征。
[0027][0028][0029]
表1
[0030]
继续参照图1,系统100还可以包括特征选择模块126,其被配置为从plc代码预处理器122和第二代码预处理器124提取的特征中选择特征。特征选择模块126可以选择不同的特征以将不同的特征集相互组合,从而调整学习模块108以进行特征空间研究。此外,特征选择模块126可以以适合机器学习的方式格式化各种特征。例如,代码可以用不同的特征组合来表示,例如includes函数、功能、注解、记号和关键词。再举个例子,代码文档可以由标签、标题和描述的组合来表示。或者,在某些情况下,可以组合代码表示和代码文档特征。
[0031]
基于来自特征选择模块126的所选特征或特征组合,学习模块108可以生成代码嵌入128。特征选择模块126可以生成所选特征的文本表示,并且学习模块108可以嵌入那些具有向量的文本表示,使得源代码114和源代码116与多个向量相关联。因此,学习模块108可以将代码映射到空间中的向量。此外,举例来说,学习模块108可以将彼此相似的代码段映射到空间中彼此接近的点。学习模块108可以执行各种算法或计算以生成代码嵌入128。举例来说,学习模块108可以包括被配置为执行doc2vec算法的第一或文档到向量(doc2vec)处理器130和被配置为执行tf-idf算法的第二或词频-逆文档频率(tf-idf)处理器132,但应当理解,可以实现替代处理器和方法以根据需要生成代码嵌入128。
[0032]
在示例中,代码嵌入128由第一或doc2vec处理器130和第二或tf-idf处理器132生成,并且这些嵌入被相互比较。学习模块108可以执行doc2vec处理器130以生成关注的超参数,其可以包括嵌入维度和训练算法(例如,分布式存储器和分布式词袋)。在本文进一步描述的示例中,负样本为5。
[0033]
在一些示例中,在生成代码嵌入128之后,可以训练代码分类模块102。尤其是,代码分类模块102可以包括有监督的神经网络或模型。代码嵌入128可被输入到代码分类模块102中,使得代码嵌入128定义输入样本。编码标签可以由编码分类模块102输出,使得编码标签定义编码分类模块102的目标值。该目标值或编码标签可以对应于原始工业数据集110和制造者数据集112的类别。代码分类模块102可以包括各种分类器,例如逻辑回归分类器134、随机森林分类器136等。在某些情况下,可以比较分类器,例如使用f
1-评分指标。f
1-评
分通常考虑精度(p)和召回率(r),以衡量测试的准确性。在数学上,f
1-评分可被定义为精度(p)和召回率(r)的调和平均值。在本发明描述的各种示例中,f1-评分可以计算为评分可以计算为
[0034]
在示例中,代码分类模块102使用代码标签分类的下限和上限。在某些情况下,下限可以通过使用随机嵌入训练代码标签分类器来定义,上限可以通过使用人工注释训练代码标签分类器来定义。尤其是,例如,制造者数据集112可以包括注释,例如标签和描述,它们可以组合或相互独立地使用。在示例中,参照图2,可以使用doc2vec处理器130和tf-idf处理器132将注释配置(例如,标签、描述、标签和描述)嵌入到代码嵌入128中,并且由处理器130和132中的每一个产生的标签分类可以使用各自的f1评分进行比较。
[0035]
还参照图2,示出了doc2vec处理器130和tf-idf处理器132的示例f1评分200。尤其是,示出了标签注释配置202、描述注释配置204以及描述和标签注释配置206的f1评分200。如图2所示,根据示例,doc2vec处理器130比tf-idf处理器132有更好的性能。在示例中,doc2vec处理器130的嵌入维度被设置为50,并且tf-idf处理器132为标签注释配置202生成1,469的嵌入维度;为描述注释配置204生成66,310的嵌入维度;为描述和标签注释配置206生成66,634的嵌入维度。如示例中所示,描述和标签注释配置206提供f1评分200的上限0.8213。
[0036]
还参照图3,示出了示例f1评分300,其说明了使用来自doc2vec处理器130的示例50维度代码嵌入128的逻辑回归分类器134和随机森林分类器136的性能的示例比较。在该示例中,逻辑回归分类器134比随机森林分类器136执行得更好,但应当理解,性能可以例如基于输入数据以及其他因素而变化。在该示例中,可以通过生成50维度随机码嵌入128并使用逻辑回归分类器134预测标签来建立下限。还参照图4,示例f1评分400来自代码分类模块102使用代码来预测标签。尤其是,示例f1评分400指示0.3538的下限由tf-idf处理器132和doc2vec处理器130定义。特征选择模块126可以选择示例特征402用于预测标签。在某些情况下,在建立上限和下限之后,可以使用不同的代码特征402来预测标签。在图4所示的示例中,包括特征“includes函数”和“功能”的代码嵌入128产生比随机基线稍好的性能,因为例如,这些特征中包含的信息有限。相比,根据示例,包括其他代码特征的代码嵌入128显著提高了分类准确度。例如,包括代码特征“记号”和“代码”的代码嵌入128分别产生相似的f1评分400,0.63和0.67。图4的示例结果还说明了得分为0.67的注解特征可以包含可用于预测代码标签的有价值信息。例如,包括特征的代码和注解组合的代码嵌入128和包括特征的代码和标题组合的代码嵌入128产生的f1评分400大约为0.71,这是示例中的最高评分。因此,根据各种实施例,不受理论束缚,具有代码特征嵌入的预测性能可以优于人类注释嵌入。
[0037]
再次参考图1,系统100还可以包括语义代码搜索模块104,其被配置为响应于代码或代码片段来查找程序,其中找到的程序与代码或代码片段相似。在自动化工程的上下文中,根据各种实施例,可以在语法和功能方面来定义相似性。例如,语法相似性504可以帮助工程师在给定的上下文中找到有用的功能,并且功能相似性可以让工程师知道已经设计了其他自动化解决方案。在某些情况下,doc2vec处理器130可以使相似文档在嵌入空间中彼此靠近(例如,代码嵌入128)。举例来说,对于与源代码片段116相关联的给定代码嵌入128,最接近给定代码嵌入128的近邻可以表示与代码片段相似的代码。因此,语义代码搜索模块
104可以基于代码片段的代码嵌入128来识别与代码片段相关联的一个或多个最近邻138。此外,根据各种实施例,可以在代码嵌入128中捕获函数结构,因此语义代码搜索模块104不仅可以发现具有相似语法的文档的最近邻138。
[0038]
在示例中,通过从源代码116中随机抽样50个代码片段来验证代码嵌入128的质量。在该示例中,可以基于每个代码片段与其前3最近邻的相似性对示例代码片段进行评分。在某些情况下,对于每个代码片段配对,都会给出代码语法和代码结构的相似度评级。举例来说,评级1可以代表相似性,评级0可以代表缺乏相似性。代码语法可以指代使用类似的变量和函数名。代码结构可以指代使用类似的代码排列,诸如,例如if-then-else和for循环。在本发明进一步描述的示例中,软件专家可以提供评级和相关联的置信度评分。作为示例而非限制,置信度评分的范围可以从1(最低置信度)到5(最高置信度)。不管评分是如何计算的,置信度评分都可以代表给定专家在评估过程中的自信程度。继续本发明描述的示例,在专家评估期间,50个样本中的5个被淘汰。例如,如果前3个最近邻中的至少一个是空文件或包含与相应代码片段或示例不同的编程语言的代码,则可以消除示例。
[0039]
继续上面介绍的示例,下面的表2示出了专家给出的平均代码语法和代码结构相似度评分。表2包括高置信度等级(例如,平均置信度≥4.5),以消除不确定答案的影响。专家之间的一致也可以通过fleiss kappa(k)来衡量。如表2中所示的示例所示,前1个近邻的语法和结构的相似性得分很高(分别为0.68和0.61),但前2个和前3个近邻的相似性得分显著降低(低于0.50)。此外,在该示例中,专家的语法相似度得分基本一致(0.61≤k≤0.80),结构相似性得分一致(0.41≤k≤0.60)。因此,根据示例结果,来自doc2vec处理器130的代码嵌入128可以捕获语法相似性和结构相似性。
[0040][0041][0042]
表2
[0043]
再如,参照下面的表3,在另一个示例用例中,选择了三个相似的代码片段,并且选择了三个不同的代码片段。如表3所示,可以测量与相应代码片段的代码嵌入128相关联的余弦相似度。表30中示出的示例代码片段表明专家之间的一致很强,并且对前3最近邻的相似性和缺乏相似性的置信度很高。该示例的结果说明专家认为彼此最相似的代码片段也被语义代码搜索模块104定义为相似。尤其是,专家认为彼此最相似的代码片段在由学习模块108定义的代码嵌入空间中也彼此接近。此外,专家认为彼此最不同的代码片段在由学习模块108定义的代码嵌入空间中相距很远。
[0044][0045]
表3
[0046]
现在参照图5,示出了第一示例代码片段500和第二示例代码片段502。示例代码片段500和502定义由源代码116的arducode产生的相似的arduino代码片段。第一示例代码片段500和第二示例代码片段502定义不同级别的相似性。例如,arduino程序有setup()和loop()函数来初始化程序,并指定每个周期执行的控制逻辑。从语法的角度来看,两个示例程序使用相同的示例标准函数:0pinmode()将硬件连接的arduino板引脚配置为输入或输出;analogread()从引脚读取模拟值;serial.print()经由串口打印ascii字符;delay()将程序暂停由参数指定的时间量(以ms为单位);和analogwrite()将模拟值写入引脚。
[0047]
仍然参照图5,在语义上,示例程序读取传感器值(例如,示例代码片段500中的1个值和示例代码片段502中的3个值);将传感器值缩放到一个范围(例如,在示例代码片段50054中使用map()从300-1024到0-255,和在示例代码片段502中使用(x 100)/4);经由串口打印缩放后的传感器值;将模拟值写入led(例如,示例代码片段500中的单个led和示例代码片段502中的三个led);并暂停程序(例如,示例代码片段500中的10ms和示例代码片段502中的100ms)。在包括第一和第二示例代码片段500和502的示例程序中,调度上述操作的顺序是不同的。在功能上,示例程序500和502执行相同的任务,即使用led为传感器值创建热图。虽然在图5所示的例子中有一些语法相似之处,根据各种实施例,语义代码搜索模块104可以捕获程序或代码片段之间的语义和功能相似性。
[0048]
再次参照图1,示例系统100还可以包括硬件推荐模块106,其可以被配置为在给定硬件组件的部分列表的情况下预测用于完成任务的硬件组件。例如,在一些情况下,给定硬件组件的部分列表,硬件推荐模块106可以识别通常与部分列表结合使用的其他硬件组件。在一些示例中,硬件配置数据118可能是混乱的或不一致的。在这样的示例中,硬件配置数据118可以在数据管护模块120中被清理以便定义银本位或干净的硬件配置数据140。在一些情况下,自动化专家可以使用数据管护模块120来产生银本位数据。硬件推荐模块106可以使用干净的硬件配置数据140来学习硬件配置数据118所代表的硬件组件的联合概率分布。然后,给定硬件组件的部分列表,硬件推荐模块106可以生成一个与用于完成该部分列表的相应硬件组件相关联的条件概率。为了执行其任务,硬件推荐模块106可以包括各种机器学习或神经网络。例如,硬件推荐模块106可以包括贝叶斯网络模块142和自动编码器模块144。
[0049]
在示例实现方式中,贝叶斯网络模块142和自动编码器模块144基于干净硬件配置
数据140中定义的随机硬件配置生成硬件的预测或推荐。在该示例中,干净硬件配置数据140的类别定义由贝叶斯网络模块142学习的贝叶斯网络的随机变量。在该示例实现方式中,贝叶斯网络模块142可以使用pomegrate来学习贝叶斯网络的结构,从而以70%的干净硬件配置数据140来拟合模型。在该示例中,1级组件的贝叶斯网络由9个节点组成,2级组件的网络由45个节点组成。然而,本发明认识到,使用2级配置中变量的数量(45),贝叶斯网络的初始化需要大量时间。因此,在该示例中,自动编码器模块144被实现为keras,以便学习干净的硬件配置数据140的低维度表示。自动编码器模块144的解码器可以学习从低维度表示重构原始输入。为了避免过拟合,自动编码器模块144可以使用l1和l2正则项。
[0050]
在示例中,硬件推荐模块106可以推荐预定数量(在本发明中由k表示)的硬件组件。因此,硬件推荐模块106可以推荐前k个硬件组件,并且可在precision@k方面来评估得到的模型。precision(p)@k可以表示前k个集合中推荐的硬件组件的相关部分。在下面表4中表示的本发明描述的示例中,对于测试数据中的每个硬件配置,一个硬件组件被省略并且测量其precision@k被测量。表4示出了随机基线、贝叶斯网络模块142和自动编码器模块144的示例结果。如图所示,对于1级硬件预测,随机基线的性能从p@1=0.1、p@3=0.32和p@5=0.54线性提高到p@9=1。贝叶斯网络也从p@1=0.32、p@3=0.59和p@5=0.79线性提高。在该示例中,自动编码器在p@1=0.36、p@3=0.79和p@5=0.95时提供了最佳性能和最佳改进。如图所示,自动编码器的p@3与贝叶斯网络的p@5的性能相同,均为0.79。此外,如图所示,自动编码器在示例中的p@5处实现了大于0.95的精度。
[0051][0052]
表4
[0053]
42继续这个例子,如上所述,学习2级硬件组件的贝叶斯网络在计算上可能是不切实际的。因此,在该示例中,自动编码器模块144学习2级硬件组件以定义下表5中所示的示例p@k结果。参照表5,根据示例,2级的自动编码器模块144的总体p@k相比低于1级,因为示例2级硬件配置比1级稀疏。然而,该示例相对于随机基线的改进是p@1的10倍、p@3的5倍、p@5的4倍和p@10的3倍。
[0054][0055]
表5
[0056]
现在参照图6,计算系统,例如自动化工程系统100,可以执行示例操作600以便执行各种自动化工程任务。在602,系统可以基于自动化源代码训练神经网络。例如,学习模块108的神经网络可以被配置为学习用于可编程逻辑控制器(plc)的可编程逻辑控制器(plc)
源代码和用于制造系统的自动化源代码。在604,该系统可以基于训练生成代码嵌入。例如,学习模块108可以被配置为基于学习plc源代码和自动化源代码,生成将plc源代码片段和自动化源代码片段定义为空间中的相应向量的代码嵌入。在606,基于代码嵌入,该系统可以确定与特定代码片段相关联的类别。
[0057]
例如,代码分类模块102可以从学习模块108接收plc代码嵌入,其中该plc代码嵌入将plc源代码的片段定义为空间中的向量。基于plc代码嵌入,代码分类模块102可以确定与plc源代码片段相关联的类别。备选地或附加地,代码分类模块102可以进一步被配置为从学习模块108接收制造代码嵌入,其中制造代码嵌入将自动化源代码的片段定义为空间中的向量。基于制造代码嵌入,代码分类模块108可以确定与自动化源代码片段相关联的类别。在某些情况下,系统可以从plc源代码和自动化源代码中提取多个特征。该系统可以包括特征选择模块126,其可以被配置为由从plc源代码和自动化源代码提取的多个特征中来选择特定特征或特征组合。可以基于一个或多个所选特征或所选特征的组合来调整神经网络。例如,特征选择模块126可以被配置为将从plc源代码和自动化源代码中选择的特征以一种或多种组合提供给学习模块,以便基于选择的特征的一种或多种组合来调整学习模块。
[0058]
仍然参照图6,在608,系统可以确定不同的代码片段类似于给定的源代码片段。例如,系统可以包括语义代码搜索模块104,其可以被配置为接收来自学习模块的plc代码嵌入。基于plc代码嵌入,语义代码搜索模块104可以确定不同的代码片段定义plc源代码片段的空间中的向量附近的近邻,从而确定不同的代码片段类似于plc源代码片段。备选地或附加地,系统可以生成具体制造代码嵌入,其将自动化源代码的具体片段定义为空间中的向量。基于制造代码嵌入,语义代码搜索模块104可以确定不同的代码片段定义在具体自动化源代码片段的空间中的向量附近的近邻,从而确定不同的代码片段与具体自动化源代码片段相似。尤其是,语义代码搜索模块104可以生成与空间中的向量相比与近邻相关联的评分,以确定不同的代码片段在代码语法或代码功能方面与给定的源代码(例如,plc源代码或自动化源代码)相似。在一些情况下,语义代码搜索模块104还可以被配置为与空间中的向量相比对近邻进行评分,以确定不同的代码片段在代码功能上与源代码片段(例如plc源代码或自动化源代码)相似,在代码语法上不同。
[0059]
继续参照图6,在610,系统可以基于部分硬件配置生成与硬件组件相关联的概率分布。例如,硬件推荐模块106可以被配置为学习用于完成自动化工程任务的硬件配置。硬件推荐模块还可以被配置为接收部分硬件配置。基于学习该硬件配置,硬件推荐模块106可以确定多个硬件组件以及与多个硬件组件相关联的相应概率。相应概率可以定义选择多个硬件组件中完成部分硬件配置的硬件组件,从而定义用于完成自动化工程任务的完整硬件配置。
[0060]
图7示出可以在其中实现本发明的实施例的计算环境的示例。计算环境或自动化工程系统700包括计算机系统510,该计算机系统可以包括诸如系统总线521之类的通信机制或用于在计算机系统510内传递信息的其他通信机制。计算机系统510还包括与系统总线521耦连的一个或多个处理器520,用于处理信息。例如,代码分类模块102、语义代码搜索模块104、硬件推荐模块106和学习模块108可以包括或耦连到一个或多个处理器520。
[0061]
处理器520可以包括一个或多个中央处理单元(cpu)、图形处理单元(cpu)或本领
域已知的任何其他处理器。而且一般地,如本发明所描述的处理器是用于执行存储在计算机可读介质上的机器可读指令的设备,用于执行任务,并且可以包括硬件和固件中的任何一个或它们的组合。处理器还可以包括存储机器可读指令的存储器,可执行该指令用于执行任务。处理器通过操纵、分析、修改、转换或传输信息以供可执行程序或信息设备使用,和/或通过将信息路由到输出设备来对信息起作用。例如,处理器可以使用或包括例如计算机、控制器或微处理器的能力,并且可以使用可执行指令来调节以执行通用计算机不执行的专用功能。处理器可以包括任何类型的合适的处理单元,包括但不限于中央处理单元、微处理器、精简指令集计算机(risc)微处理器、复杂指令集计算机(cisc)微处理器、微控制器、应用程序专用集成电路(asic)、现场可编程门阵列(fpga)、片上系统(soc)、数字信号处理器(dsp)等。此外,处理器520可以具有任何合适的微架构设计,包括任何数量的组成组件,例如寄存器、多路复用器、算术逻辑单元、用于控制对高速缓存存储器的读/写操作的高速缓存控制器、分支预测器等。处理器的微架构设计可能能够支持多种指令集中的任何一种。处理器可以与任何其他能够实现它们之间的交互和/或通信的处理器耦连(电耦连和/或作为包括可执行组件)。用户界面处理器或生成器是包括用于生成显示图像或其部分的电子电路或软件或两者的组合的已知元件。用户界面包括使用户能够与处理器或其他设备交互的一个或多个显示图像。系统总线521可以包括系统总线、存储器总线、地址总线或消息总线中的至少一种,并且可以允许在计算机系统510的各种组件之间交换信息(例如,数据(包括计算机可执行代码)、信令等),
[0062]
系统总线521可以包括但不限于存储器总线或存储器控制器、外围总线、加速图形端口等。系统总线521可以与任何合适的总线架构相关联,包括但不限于工业标准架构(isa)、微通道架构(mca)、增强型isa(eisa)、视频电子标准协会(vesa)架构、加速图形端口(agp)架构、外围组件互连(pci)架构、pci-express架构、个人计算机存储卡国际协会(pcmcia)架构、通用串行总线(usb)架构等。
[0063]
继续参照图7,计算机系统510还可以包括耦连到系统总线521的系统存储器530,用于存储要由处理器520执行的信息和指令。系统存储器530可以包括易失性和/或非易失性形式的计算机可读存储介质存储器,例如只读存储器(rom)531和/或随机存取存储器(ram)532。ram 532可以包括其他动态存储设备(例如,动态ram、静态ram和同步dram)。rom 531可以包括其他静态存储设备(例如,可编程rom、可擦除prom和电可擦除prom)。此外,系统存储器530可用于在处理器520执行指令期间存储临时变量或其他中间信息。基本输入/输出系统533(bios)包含有助于在计算机系统510内部元件之间传递信息的基本例程,例如在启动期间,可以存储在rom 531中。ram 532可以包含处理器520可以立即访问和/或当前正在由该处理器操作的数据和/或程序模块。系统存储器530可以另外包括例如操作系统534、应用程序535和其他程序模块536。应用程序535还可以包括用于开发应用程序的用户门户,以允许输入参数并根据需要进行修改。
[0064]
操作系统534可以被加载到存储器530中并且可以提供在计算机系统510上执行的其他应用软件与计算机系统510的硬件资源之间的接口。更具体地,操作系统534可以包括一组用于管理计算机系统510的硬件资源和为其他应用程序提供公共服务(例如,管理各种应用程序之间的存储器分配)的计算机可执行指令。在某些示例实施例中,操作系统534可以控制一个或多个被描述为存储在数据存储器540中的程序模块的执行。操作系统534可以
包括现在已知的或者将来可以开发的任何操作系统,包括但不限于任何服务器操作系统、任何大型机操作系统或任何其他专有或非专有操作系统。
[0065]
计算机系统510还可以包括磁盘/媒体控制器543,其耦连到系统总线521以控制一个或多个用于存储信息和指令的存储设备,例如磁性硬盘541和/或可移动媒体驱动器542(例如,软盘驱动器、光盘驱动器、磁带驱动器、闪存驱动器和/或固态驱动器)。可以使用适当的设备接口(例如,小型计算机系统接口(scsi)、集成设备电子器件(ide)、通用串行总线(usb)或火线)将存储设备540添加到计算机系统510。存储设备541、542可以在计算机系统510的外部。
[0066]
计算机系统510还可以包括耦连到系统总线521的现场设备接口565,以控制现场设备566,例如,在生产线中使用的设备。计算机系统510可以包括用户输入接口或gui 561,其可以包括一个或多个输入设备,例如键盘、触摸屏、平板和/或点击设备,用于与计算机用户交互并向处理器520提供信息。
[0067]
响应于处理器520执行包含在诸如系统存储器530的存储器中的一个或多个指令的一个或多个序列,计算机系统510可以执行本发明实施例的部分或全部处理步骤。这样的指令可以从存储器540的另一计算机可读介质,例如磁性硬盘541或可移动介质驱动器542读入系统存储器530。磁性硬盘541和/或可移动介质驱动器542可以包含一个或多个本发明的实施例使用的数据存储器和数据文件。数据存储器540可以包括但不限于数据库(例如关系型、面向对象型等)、文件系统、平面文件、分布式数据存储器,其中数据存储在计算机网络的一个以上节点上、对等网络数据存储器等。数据存储器可以存储各种类型的数据,例如技能数据、传感器数据或根据本发明的实施例生成的任何其他数据。数据存储器内容和数据文件可能会被加密以提高安全性。处理器520也可以在多处理布置中使用以执行包含在系统存储器530中的一个或多个指令序列。在替代实施例中,可以使用硬连线电路来代替软件指令或与软件指令结合使用。因此,实施例不限于硬件电路和软件的任何特定组合。
[0068]
如上所叙述,计算机系统510可以包括至少一个计算机可读介质或存储器,用于保存根据本发明实施例编程的指令并用于包含数据结构、表格、记录或本发明描述的其他数据。如本发明所用,术语“计算机可读介质”是指参与向处理器520提供指令以供执行的任何介质。计算机可读介质可以采取多种形式,包括但不限于非瞬态、非易失性介质、易失性介质和传输介质。非易失性介质的非限制性示例包括光盘、固态驱动器、磁盘和磁光盘,例如磁性硬盘541或可移动介质驱动器542。易失性介质的非限制性示例包括动态存储器,例如系统存储器530。传输介质的非限制性示例包括同轴电缆、铜线和光纤,包括构成系统总线521的线。传输介质还可以采用声波或光波的形式,例如在无线电波和红外数据通信期间产生的那些。
[0069]
用于执行本发明的操作的计算机可读介质指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据或或以一种或多种编程语言的任意组合编写的源代码或目标代码,包括面向对象的编程语言,例如smalltalk、c 等,以及传统的过程编程语言,例如“c”编程语言或类似的编程语言。计算机可读程序指令可以完全在用户计算机上、作为独立软件包部分在用户计算机上、部分在用户计算机上和部分在远程计算机上或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(lan)或广域网(wan),或者
可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来个性化电子电路来执行计算机可读程序指令,以便执行本发明的各方面。
[0070]
本发明参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本发明的各方面。应当理解,流程图和/或框图的每一方框,以及流程图和/或框图中的方框的组合,可以通过计算机可读介质指令来实现。
[0071]
计算环境1300还可以包括使用与一台或多台远程计算机例如远程计算设备580的逻辑连接在连网环境中操作的计算机系统510。网络接口570可以例如经由网络571与其他远程设备580或系统和/或存储设备541、542进行通信。远程计算设备580可以是个人计算机(笔记本计算机或台式机)、移动设备、服务器、路由器、网络pc、对等设备或其他公共网络节点,并且通常包括上面关于计算机系统510描述的许多或所有元件。当在网络环境中使用时,计算机系统510可以包括调制解调器572,用于通过网络571(例如因特网)建立通信。调制解调器572可以经由用户网络接口570或经由另一种适当的机制连接到系统总线521。
[0072]
网络571可以是本领域公知的任何网络或系统,包括因特网、内联网、局域网(lan)、广域网(wan)、城域网(man)、直接连接或一系列连接、蜂窝电话网络或能够促进计算机系统510与其他计算机(例如,远程计算设备580)之间的通信的任何其他网络或介质。网络571可以是有线的、无线的或其组合。有线连接可以使用以太网、通用串行总线(usb)、rj-6或本领域公知的任何其他有线连接来实现。无线连接可以使用wi-fi、wimax和蓝牙、红外线、蜂窝网络、卫星或本领域通常已知的任何其他无线连接方法来实现。此外,多个网络可以单独工作或相互通信以促进网络571中的通信。
[0073]
应当理解,存储在系统存储器530中、图7所描绘的程序模块、应用程序、计算机可执行指令、代码等仅仅是说明性的而不是详尽的,并且被描述为由任何特定模块支持的处理可以替代地分布在多个模块中或由不同的模块执行。此外,可以提供各种程序模块、脚本、插件、应用程序编程接口(api)或在计算机系统510、远程设备580本地托管的,和/或在可通过一个或多个网络571访问的其他计算设备上托管的任何其他合适的计算机可执行代码以支持由图1所示的程序模块、应用程序或计算机可执行代码提供的功能和/或附加或替代功能。此外,功能可以被不同地模块化,使得描述为由图1中描绘的程序模块的集合共同支持的处理可以由更少或更多数量的模块来执行,或被描述为由任何特定模块支持的功能可以至少部分地由另一个模块支持。此外,支持本发明描述的功能的程序模块根据任何合适的计算模型,例如,客户端服务器模型、对等模型等,可以形成在任何数量的系统或设备上可执行的一个或多个应用程序的一部分。此外,被描述为由图1中所描绘的任何程序模块支持的任何功能都可以至少部分地在任何数量的设备上以硬件和/或固件来实现。
[0074]
还应当理解,在不背离本发明的范围的情况下,计算机系统510可以包括除了所描述或描绘的那些之外的替代和/或附加硬件、软件或固件组件。更具体地,应当理解,描述为形成计算机系统510的一部分的软件、固件或硬件组件仅仅是说明性的,并且在各种实施例中,一些组件可能不存在,或者可能提供附加组件。尽管已经将各种说明性程序模块描绘和描述为存储在系统存储器530中的软件模块,但是应当理解,描述为由程序模块支持的功能可以通过硬件、软件和/或固件的任何组合来实现。还应当理解,在各种实施例中,上述模块
中的每一个可以表示所支持的功能的逻辑分区。该逻辑分区是为了便于解释功能而描绘的,并且可能不代表用于实现该功能的软件、硬件和/或固件的结构。因此,应当理解,在各种实施例中,描述为由特定模块提供的功能可以至少部分地由一个或多个其他模块提供。此外,在某些实施例中可能不存在一个或多个描绘的模块,而在其他实施例中,可能存在未描绘的附加模块并且可以支持所描述的功能和/或附加功能的至少一部分。此外,虽然某些模块可以被描绘和描述为另一个模块的子模块,但在某些实施例中,这些模块可以被提供为独立模块或其他模块的子模块。
[0075]
虽然已经描述了本发明的具体的实施例,但是本领域技术人员将认识到许多其他修改和替代实施例在本公开的范围内。例如,关于特定设备或组件描述的任何功能和/或处理能力可以由任何其他设备或组件执行。此外,虽然已经根据本公开的实施例描述了各种说明性实现方式和架构,但是本领域技术人员将理解,对本发明描述的说明性实现方式和架构的许多其他修改也在本公开的范围内。此外,应当理解,本发明描述为基于另一操作、元素、组件、数据等的任何操作、元素、组件、数据等可以另外基于一个或多个其他操作、元素、组件、数据等。因此,短语“基于”或其变体应被解释为“至少部分基于”。
[0076]
尽管已经以特定于结构特征和/或方法行为的语言描述了实施例,但应当理解,本发明不一定限于所描述的特定特征或行为。相反,具体特征和动作被公开为实现实施例的说明性形式。条件性语言,例如“可以”、“可能”等,除非另有明确说明,或在所使用的上下文中以其他方式理解,通常旨在传达某些实施例可以包括,而其他实施例不包括某些特征、元件和/或步骤。因此,这种条件性语言通常不旨在暗示一个或多个实施例以任何方式需要特征、元素和/或步骤,或者一个或多个实施例必须包括用于在有或没有用户输入或提示的情况下决定这些特征、元素和/或步骤是否被包括或将在任何特定实施例中执行的逻辑。
[0077]
图中的流程图和框图说明了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。就这一点而言,流程图或框图中的每个方框可以表示模块、段或指令的一部分,其包括用于实现指定逻辑功能的一个或多个可执行指令。在一些替代实现中,方框中标注的功能可能不按图中标注的顺序出现。例如,连续显示的两个方框实际上可以基本上同时执行,或者这些方框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,框图和/或流程图说明的每个方框,以及框图和/或流程图说明中的方框的组合,可以通过执行指定功能或行为或执行专用硬件和计算机指令的组合的基于专用硬件的系统来实现。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献