基于规则引擎和几何优化的智能库位推荐系统及方法与流程

文档序号:17772145发布日期:2019-05-28 19:33阅读:504来源:国知局
基于规则引擎和几何优化的智能库位推荐系统及方法与流程

本发明涉及物流管理技术领域,具体地,涉及一种基于规则引擎和几何优化的智能库位推荐系统及方法。



背景技术:

随着工业4.0和智慧制造理念的提出,现代工业对仓储物流中的智能化管理、高效性运行提出更高的要求。在钢铁制造业中,行车是其生产中的重要组成部分。而随着无人化全自动行车的提出与投产使用,大大减少了人力的投入,提高了工业生产物流效率,改善作业车间的安全生产环境,实现库区无人化生产。其采用计算机软件控制技术,根据接收到的执行指令对钢卷原料进行入库、转出、出库等任务,实现对物料生产过程中的全自动管理。其中,在钢卷原料的入库时,需全自动无人行车系统(uacs)下达给行车钢卷摆放位置的指令,由全自动无人行车将其吊运至目标位置,实现对钢卷原料入库时的库位推荐,从而实现对库区空间的最优利用。因此,在全自动无人行车系统(uacs)的模型功能中,当模型接收到钢卷的库位推荐的计算请求时,需要调用系统的库位推荐模型,根据待入库的钢卷信息等为其推荐合适的库区和鞍座位置,达到对库区库容的最优利用,实现高效率、高安全性的库区无人化管理。

由于在钢卷的仓库管理中,不同的仓库对钢卷的存放管理存在着大量灵活多变的库位推荐规则。在传统的钢卷库位推荐方法设计中,针对钢卷库位推荐的规则变化和优化,都是通过修改软件系统的功能以适应规则的变化,将业务逻辑和代码逻辑混杂在一起,这种方式存在维护周期长、成本高、风险大等特点。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种基于规则引擎和几何优化的智能库位推荐系统及方法。

根据本发明提供的一种基于规则引擎和几何优化的智能库位推荐系统,包括:

事实库和规则库编写模块:根据钢卷库位推荐规则,编写库区钢卷堆放的事实库和规则库;

小区域推荐模块:根据事实库和规则库,利用正向推理机制对规则进行解析、匹配以及执行;

鞍座堆放位置推荐模块:依据波浪形鞍座堆放规则,判断并推荐出满足堆放条件的波浪形鞍座堆放位置。

较佳的,还包括:

双层堆放鞍座选择模块:依据钢卷双层堆放规则,判断并推荐出满足堆放条件的鞍座。

较佳的,所述事实库和规则库编写模块为基于pyke规则引擎编写,事实库和规则库都是基于prolog语言编写,其中,事实库保存针对不同钢卷仓库的钢卷库位推荐规则,规则库保存的是依据事实库,生成钢卷在满足堆满一个库区的条件下推荐下一个库区的事实实例。

较佳的,所述小区域推荐模块读取规则库中的规则集,并对规则集进行规则解析,然后事实库进行匹配,在匹配成功的状态下导入议程,并由议程对规则集进行排序,生成规则实例,接口引擎执行规则实例,执行结果导入应用程序。

较佳的,在判断出钢卷放置的小区域后,所述鞍座堆放位置推荐模块从小区域中的标定的坐标原点开始堆放钢卷,并判断待入库的钢卷在当前位置堆放是否与其他钢卷相互挤压,转换成矩形堆放问题,判断待堆放矩形在当前位置放置是否与已堆放矩形相交,在相交的状态下将已堆放矩形的右上角的x坐标赋值给待堆放矩形的左下角的x坐标,同时改变待堆放矩形的坐标,判断并选择空间利用率最大的摆放位置。

较佳的,所述双层堆放鞍座选择模块所依据的依据钢卷双层堆放规则包括五个,由优先级高到低依次为:判断数据库中指令表和指令顺序表中是否存在下层待压的两个钢卷、判断待入库钢卷与下层钢卷的外径差是否满足、判断待入库钢卷的重量与下层钢卷的重量差是否满足、判断待入库钢卷的宽度与下层钢卷的宽度差是否满足,以及判断待入库钢卷的合同号与下层钢卷的合同号是否相同。

较佳的,若依照五个钢卷双层堆放规则没有推选出合适的鞍座,则按照优先级舍去最低级的规则,再推荐出合适的鞍座,依次类推。

较佳的,还包括:

调用接口模块:与全自动无人化行车系统之间进行通信,将为钢卷推荐的堆放鞍座位置的指令生成行车吊运指令发送给行车。

根据本发明提供的一种基于规则引擎和几何优化的智能库位推荐方法,包括:

事实库和规则库编写步骤:根据钢卷库位推荐规则,编写库区钢卷堆放的事实库和规则库;

小区域推荐步骤:根据事实库和规则库,利用正向推理机制对规则进行解析、匹配以及执行。

较佳的,还包括:

鞍座堆放位置推荐步骤:依据波浪形鞍座堆放规则,判断并推荐出满足堆放条件的波浪形鞍座堆放位置;

双层堆放鞍座选择步骤:依据钢卷双层堆放规则,判断并推荐出满足堆放条件的鞍座。

与现有技术相比,本发明具有如下的有益效果:

通过使用本发明提出的基于规则引擎和几何优化的智能库位推荐系统及方法,可使为钢卷推荐库区小区域的一次性推荐成功率达到97%,无需重复推荐,可以提高软件系统开发的灵活性和适应性,减少因库位推荐规则的变化增加的软件系统功能的代码修改,为库位推荐业务逻辑提供一种灵活、动态的实现机制,使得该软件系统具有更加广泛的操作性和适用性。

同时,几何优化算法和双层堆放方式的提出,提高了库区的库容,增加了库区的存储能力,可将库区的钢卷存储能力提高15%-20%。本发明能够广泛应用于拥有全自动无人行车库区的生产作业流程中,针对多样化的库位推荐规则,为待入库的钢卷推荐最优的鞍座堆放位置,具有良好的应用前景。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为事实库和规则库编写模块的工作流程图;

图2为小区域推荐模块的程序设计流程图;

图3为鞍座堆放位置推荐模块的程序设计流程图;

图4为双层堆放鞍座选择模块的矩形选择堆放位置示意图;

图5为双层堆放鞍座选择模块的程序设计流程图;

图6为调用接口模块的程序设计流程图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

本发明提供的一种基于规则引擎和几何优化的智能库位推荐系统,是在全自动无人化行车系统(uacs)接收到入库钢卷的库位推荐请求后启动,包括:事实库和规则库编写模块、小区域推荐模块、鞍座堆放位置推荐模块、双层堆放鞍座选择模块以及调用接口模块。

事实库和规则库编写模块:根据钢卷库位推荐规则,编写库区钢卷堆放的事实库和规则库。在本实施例中,利用规则引擎的工作原理,选择pyke规则引擎,即根据已知事实和反向推理规则,推断出新的事实或者证明目标结论,并且把python函数汇集成反向推理方式的“调用序图”(“方案图”)。规则引擎的工作原理是将当前提交到引擎中的事实对象和加载到引擎中的规则进行匹配,激活那些符合事实对象的规则,从而根据规则中定义的执行动作,触发应用程序作出响应。事实库和规则库编写模块的工作流程图如图1所示。

pyke规则引擎拥有不同类型的知识库,它们均是基于prolog语言编写,其中包括事实库、规则库、问题库。事实库是一种已知的事实,可作为检验其他陈述是否真实的证据,事实库以.kfb的文件形式保存;规则库是由if-then规则语言构成的规则库,它们是规则的集合,运行它们的if-then规则,可以确定某一陈述是否真实,规则库中可以包含正向推理和反向推理,规则库以.krb的文件形式保存;问题库保存的是需要向客户询问的问题,以及对回答的检验和显示的评审信息,问题库以.kqb的文件形式保存。规则引擎的核心包括规则定义、规则解析、规则匹配和规则执行,其中规则解释器是负责定义规则的编写格式,对规则文件进行校验、解析、执行,模拟匹配器是从规则库中过滤符合条件的规则,并提交给议程,议程则是对规则集进行重新组合并赋予其优先级。在本实施例中,规则库中使用正向推理,即从第一个规则的if语句开始,查看它是否与已知的实施匹配,若匹配则进入then语句,启用此规则。正向推理的执行顺序,以其在.krb规则库中的次数为准,prolog语言编写的规则库中用foreach和assert代替if和then。

在本实施例中,事实库保存的是针对不同钢卷仓库的由库区操作工提供的钢卷库位推荐的规则,规则库保存的是依据事实库,实现生成钢卷在满足堆满一个库区的条件下推荐下一个库区的事实实例。以如下库位推荐规则为例:

轧机产出是连退封闭卷时候,优先进a2区,然后依次是a4、a6、a7、a1、a3、a5;

轧机产出是热镀封闭卷时候,优先进a1区,然后依次是a3、a5、a7、a2、a4、a6;

依据上述库位推荐规则,编写事实库如下,并以coil_area.kfb的文件形式保存:

#碳钢钢卷类型

coil_information(back_closed_coil,10080)

coil_information(hot_closed_coil,10081)

#连退封闭卷

coil_area_ruler(back_closed_coil,0,a2,1)

coil_area_ruler(back_closed_coil,a2,a4,2)

coil_area_ruler(back_closed_coil,a4,a6,3)

coil_area_ruler(back_closed_coil,a6,a7,4)

coil_area_ruler(back_closed_coil,a7,a1,5)

coil_area_ruler(back_closed_coil,a1,a3,6)

coil_area_ruler(back_closed_coil,a3,a5,7)

#热镀锌封闭卷

coil_area_ruler(hot_closed_coil,0,a1,1)

coil_area_ruler(hot_closed_coil,a1,a3,2)

coil_area_ruler(hot_closed_coil,a3,a5,3)

coil_area_ruler(hot_closed_coil,a5,a7,4)

coil_area_ruler(hot_closed_coil,a7,a2,5)

coil_area_ruler(hot_closed_coil,a2,a4,6)

coil_area_ruler(hot_closed_coil,a4,a6,7)

事实库编写的格式依照coil_area_ruler(钢卷种类,推荐区域1,推荐区域2,优选第几推荐区域),例如事实库中的coil_area_ruler(hot_closed_coil,a7,a2,5)语句表示热镀锌封闭卷在a7区域堆满的情况下,可以堆放在a2区域,a2区域是热镀锌封闭卷在库位推荐规则中第5个推荐的备选区域。

在本实施例中,依据上述事实库,编写规则库如下,并以fc_area_recommend.krb的文件形式保存:

#推荐给第一个备选库区区域

#推荐给第二个备选库区区域

规则库的编写是按照正向推理规则编写,正向推理规则在为了断言新事实而激活规则库是自动运行的。在规则库语言的编写中,在foreach语言中读取事实库中的两条事实库,同时并验证事实库中的status位的标志号,即验证该区域是第几备选推荐区域,然后生成move_area新的事实语言,即推荐该status对应的备选推荐区域。

因此,针对不同钢卷仓库不同类型的钢卷的多样的库位推荐规则,只要依据库区操作工提供的库位推荐规则,用任意文本编辑器就可编写当前库区的事实库和规则库,具有较高的灵活性和适应性。

小区域推荐模块根据事实库和规则库,利用正向推理机制对规则进行解析、匹配以及执行,其程序设计流程图如图2所示。根据事实库和规则库,利用正向推理机制对规则进行解析、匹配、执行,实现钢卷在堆放过程中一个库区堆放满了则推荐下一个库区。

在小区域推荐模块中主要是执行库位推荐的规则,即读取fc_area_recommend.krb中的规则集,并对其进行规则解析,然后与coil_area.kfb中的事实库进行匹配,若匹配成功能导入议程,并由议程对规则集文件进行排序,生成规则实例,接口引擎执行规则实例,执行结果导入应用程序,在本实施例中,将执行结果导入到driver.py的应用程序中。在该应用程序中,由于需要对规则库进行解析,因此需要导入pyke第三方库。利用engine=knowledge_engine.engine(_file_)创建规则引擎的实例,并激活规则库engine.activate(“fc_area_recommend”)。定义fc_test(coil_kind,external_diameter,width,status1=1)的正向推理解析函数,在该函数中,以钢卷种类、钢卷外径、钢卷宽度和初始备选第一个库区作为形式参数,前面三个参数都能依据待入库的钢卷材料号在钢卷信息数据表中读出。首先通过fc_goal=goal.compile(‘coil_area.move_area($coil_kind,$area,$status)’)对目标文件夹下的事实库和规则库进行编译,利用fc_goal.prove(engine,coil_kind=coil_kind,status=status1)对规则库的规则进行验证,并在其找到第一个验证结果后停止验证,同时将验证结果返回。在本实施例中,利用withfc_goal.prove(engine,coil_kind=coil_kind,status=status1)asgen的形式将验证结果赋值给gen,通过forvars,planingen读取返回的验证结果,关键是读取var[‘area’],其表示依据库位推荐的规则推荐的小区域。一般地,推荐出的小区域是备选的第一个区域。在读取到推荐区域之后,读取库图定义数据表中该小区的库区信息,即读取空闲鞍座和占用鞍座的个数,在满足最大库容限制的条件下选择该区域。若超过了最大库容的限制,在本实施例中,可以通过配置的数据表查看该库区是否支持双层堆放,若支持双层堆放,则选择双层堆放模式,若不支持双层堆放的方式,则推荐下一个备选区域,通过改变status状态位实现下一个备选区域的选择,即status_1=status1+1,returnfc_test(coil_kind,external_diameter,width,status=status_1)。在该模块中返回推荐库区var[‘area’],该区域是第几备选区域的状态位status1。在该模块中还通过try…catch对程序进行了异常保护,增强了程序的健壮性,在返回值中1001表示待入库钢卷的钢种不存在,1002表示所有库区都满了。

鞍座堆放位置推荐模块:依据波浪形鞍座堆放规则,判断并推荐出满足堆放条件的波浪形鞍座堆放位置,其程序设计流程图如图3所示。针对库区内的波浪形鞍座,在满足钢卷堆放的相邻间距的条件下,使得单层堆放的钢卷与钢卷之间更紧凑,达到最大的空间利用率,从而使得库区的库容最优。

由于在一般库区中都是一地一物的鞍座布局,此类库区的库容是恒定数量的,即存放恒定数量的钢卷。为了扩大库区库容,增加库区的库容能力,库区鞍座设计为波浪形鞍座,因此如何在一定面积的库区中堆放更多的钢卷成为关键。由于钢卷在波浪形鞍座上的堆放方式类似于矩形的堆放,因此,在本发明中提出,在面积一定的条件下,如何选择矩形的堆放位置使得空间利用率最高,从而达到库容最优,即如图4所示中,三个虚线框的矩形表示该矩形有三个备选的堆放位置,放在哪个位置才能使得(s1+s2+s3)/(max_length*max_width)最大。在该模块中定义的主要函数为find_suit_pos(rect,rect_list,max_length,max_width,area_name,current_capacity),其中rect表示待入库的钢卷,rect_list表示所推荐的区域中的已堆放的钢卷,max_length表示所推荐区域的最大长度,max_width表示所推荐区域的最大宽度,area_name表示所推荐的区域的名字,current_capacity表示所推荐区域的当前库容率。在该函数中主要实现几何算法,在该算法中,以数据库中库图区域数据信息表中定义的x坐标,y坐标为绝对坐标,即整个大库区作为绝对坐标区域,而将为钢卷堆放位置划分的小区域作为相对坐标区域。每次接收到钢卷的入库请求时,在判断出钢卷放置的小区域后,为钢卷推荐具体的鞍座位置时,都将从小区域中的标定的坐标原点(相对坐标)开始堆放钢卷,并判断若待入库的钢卷在当前位置堆放是否与其他钢卷相互挤压,转换成矩形堆放问题,即被堆放的矩形四个顶点(左下角、左上角、右下角、右上角)的初始坐标为(0,0),(0,external_diameter),(width,0),(width,external_diameter)判断若矩形在当前位置放置是否与其他矩形相交。如果相交,则将相交矩形的右上角的x坐标赋值给被堆放矩形的左下角的x坐标,同时改变被堆放的矩形的四个点的坐标,实现被堆放矩形的位置的移动,即j=cross_rect.top_right.x,rect.lower_left.x=j,rect.change_rect()。在程序设计中通过不断改变被堆放的矩形的坐标实现被堆放的矩形与其他矩形不相交,即待入库的钢卷堆放在当前位置不与任何钢卷发生挤压。在满足矩形不相交的条件下,将此位置上的矩形记为new_recommend_rect,将矩形的中心点通过坐标转换,即将小区域的相对坐标转换成大区域的绝对坐标,并在数据库中的库图鞍座的数据信息表中找到对应的鞍座,并计算若钢卷放置在该鞍座上时的空间利用率ratio_saddle,将新的位置上的矩形和空间利用率以元组的形式保存并添加到列表中,即ratio_saddle_rect_tuple=(ratio_saddle,new_recommend_rect),new_ratio_rect_list.append(ratio_saddle_rect_tuple)。按照上述操作方法,改变待堆放的矩形的坐标,即将矩形的位置分别在x,y方向上移动,判断每个待摆放位置上的空间利用率,并选择空间利用率最大的摆放位置。在该模块中返回推荐的绝对坐标中的钢卷堆放的位置new_saddle_rect,钢卷堆放在该位置时的库容率storage_capacity。在本实施例的该模块中,为了模拟钢卷堆放库区位置的操作,使用pylab第三方库将钢卷的堆放位置绘制出来,增加了程序在调试过程中的可读性,有利于检验程序运行结果。

双层堆放鞍座选择模块:依据钢卷双层堆放规则,判断并推荐出满足堆放条件的鞍座,其程序设计流程图如图5所示。根据库区需求,若库区单层钢卷堆放库容超过限制的最大库容时,则开启双层堆放。

双层堆放鞍座的选择主要是依据不同类型钢卷的双层堆放规则进行选择。在本发明的实施例中,钢卷的双层堆放是按照品字型堆放。以如下表所示的双层堆放规则为例:

表1双层堆放规则

依据上述双层堆放的规则,编写5个判断函数,check_order_queue(coil_in_order,coil_in_orderqueue)判断数据库中指令表和指令顺序表中是否存在下层待压的两个钢卷;check_outdia(coil_external_diameter,ll_coil_outdia,lr_coil_outdia)判断待入库钢卷与下层钢卷的外径差是否满足;check_weight(coil_weight,ll_coil_weight,lr_coil_weight)判断待入库钢卷的重量与下层钢卷的重量差是否满足;check_width(coil_width,ll_coil_width,lr_coil_width)判断待入库钢卷的宽度与下层钢卷的宽度差是否满足;check_contract(coil_contract,ll_coil_contract,lr_coil_contract)判断待入库钢卷的合同号与下层钢卷的合同号是否相同。在该模块中,主函数为find_suit_saddle(coil_no,area_name)其中coil_no表示钢卷的材料号,area_name表示推荐的小区域,若在该区域中开启双层堆放,则调用该函数。在该函数中,利用待入库钢卷的材料号在钢卷信息表中读取钢卷信息,包括钢卷的宽度、外径、重量、合同号。同时,在数据库中的库图鞍座数据信息表里读取该小区中第二层的所有鞍座,即读取layer=2的所有鞍座并保存至saddle_result_list中,利用foriteminsaddle_result_list的循环语句遍历第二层的每一个鞍座,读取其鞍座号、x坐标、y坐标、左下角鞍座号、右下角鞍座号,并依据左、右下角的鞍座号读取其上堆放的钢卷的信息。将左下角、右下角鞍座上的钢卷信息以及待入库的钢卷信息进行比较,依照双层堆放规则推荐出合适的第二层鞍座堆放位置。如果依照5个规则没有推选出合适的鞍座,则按照双层堆放规则的优先级,舍去最低级的规则,再去推荐出合适的鞍座,依次类推。在该模块中返回的是第二层的鞍座号。

调用接口模块:与全自动无人化行车系统之间进行通信,将为钢卷推荐的堆放鞍座位置的指令生成行车吊运指令发送给行车,其程序设计流程图如图6所示。由于全自动无人化行车系统(uacs)是基于c#和c++语言开发的,为了增加其库位推荐方法的适应性和可移植性,选择解释型、面向对象的python语言进行库位推荐方法的软件开发。

在本实施例中,该模块的设计主要是为了实现全自动无人行车系统(uacs)中的指令系统与库位推荐方法之间的通信,由于只有在指令系统发出库位推荐请求的时候,才会启动库位推荐模型方法。指令系统发送给库位推荐模型方法待入库钢卷的材料号,库位推荐模型方法依据该材料号读取数据库钢卷信息表中该钢卷的其他信息,如钢卷的外径、宽度、钢种。在该模块中,主函数为recommend_stock_position(coil_no,status1=1),其中coil_no为钢卷材料号,status1=1为初始状态位。在该函数中,首先依据钢卷种类,利用规则引擎为钢卷推荐堆放的小区域,若该小区域开启了双层堆放,则调用双层堆放模块,若没有,则调用几何算法推荐鞍座摆放位置模块。该模块返回推荐的鞍座号saddle_no,并将其传送给指令系统,并由指令系统下达给行车,由行车将待入库的钢卷吊运至推荐的鞍座位置。在该模块中还通过try…catch对程序进行了异常保护,增强了程序的健壮性,在返回值中1003表示被推荐的钢卷号在钢卷信息表中不存在,1004表示在库区鞍座数据表中,鞍座上堆放的钢卷的材料号在钢卷信息表中不存在。

基于上述一种基于规则引擎和几何优化的智能库位推荐系统,本发明还提供一种基于规则引擎和几何优化的智能库位推荐方法,包括:

事实库和规则库编写步骤:根据钢卷库位推荐规则,编写库区钢卷堆放的事实库和规则库;

小区域推荐步骤:根据事实库和规则库,利用正向推理机制对规则进行解析、匹配以及执行;

鞍座堆放位置推荐步骤:依据波浪形鞍座堆放规则,判断并推荐出满足堆放条件的波浪形鞍座堆放位置;

双层堆放鞍座选择步骤:依据钢卷双层堆放规则,判断并推荐出满足堆放条件的鞍座。

在本发明提出的设计基础之上,本发明还可以通过改变编程语言,利用规则引擎的工作原理,例如用java语言实现基于规则引擎的库位推荐系统等。同时,在推荐鞍座位置的模块中,还可以改变并优化几何算法,实现对库区库容的更优化。

本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1