一种基于最大二分配的贴片机吸嘴分配方法
文献发布时间:2024-04-18 20:01:23
技术领域
本发明涉及电器技术及电气工程技术领域,具体为一种基于最大二分配的贴片机吸嘴分配方法。
背景技术
表面贴装行业中最重要的贴片机装备对吸嘴头的分配方法非常关注,合理的分配方法会提高生产效率,减少可能产生的生产问题。由于印刷电路板(简称PCB)贴装点元件类型的多样性,为了保证贴装效率的最大化,贴片机作业过程中吸杆通常会根据不同的PCB,选择性地将若干吸杆装配同类型的吸嘴,并在贴装过程中前往ANC(Auto Nozzle Changer,自动吸嘴更换装置)更换吸嘴。操作人员根据不同贴片机特性或自身经验,指定其中吸杆可安装的吸嘴类型。这种人工的方式降低了贴片机整体工作效率。
发明内容
本发明的目的是:针对现有技术中由于人工的方式指定吸杆可安装的吸嘴类型,这样降低了贴片机整体工作效率的问题,提出一种基于最大二分配的贴片机吸嘴分配方法。
本发明为了解决上述技术问题采取的技术方案是:
一种基于最大二分配的贴片机吸嘴分配方法,包括以下步骤:
步骤一:获取PCB板生产数据,并根据PCB板生产数据获取贴装元件所需的吸嘴类型、吸嘴类型的贴装点数目以及贴片机装配吸杆数,并获取吸嘴可用吸杆约束NzUseableHD(s),之后利用吸嘴类型以及吸嘴类型的贴装点数目确定吸嘴分配周期的上界与下界,在吸嘴分配周期的上界与下界之间根据吸嘴类型和吸嘴分配周期进行分组,得到吸嘴分配组;
步骤二:遍历吸嘴分配组,并在每个吸嘴分配组中,根据吸嘴类型、贴片机装配吸杆数以及吸嘴可用吸杆约束NzUseableHD(s)确定拾贴周期内吸杆的吸嘴分配初始解;
步骤三:根据吸嘴分配初始解,在满足吸嘴可用吸杆约束NzUseableHD(s)条件下,对各吸杆间的工作负载进行平衡,得到可行解,取不同可行解之间的工作效率指标最高的解为最优解,即完成贴片机吸嘴分配,其中,s代表者吸嘴的类型。
进一步的,所述步骤一中确定吸嘴分配周期的上界与下界的具体步骤为:
步骤一一:统计各类型吸嘴对应的贴装点数目,并按照贴装点数目降序进行排列,得到吸嘴组NozzleGroup(i),表示为:
NozzleGroup(i)=[NzGroupType(i) NzGroupNum(i)]
其中,NzGroupType(i)表示为贴装点数目排序第i多对应贴装数据中使用的吸嘴类型,NzGroupNum(i)表示贴装点数目排序第i多对应贴装数据中贴装点的数量;
NzGroupNum(i)需要满足以下下条件:
其中,m为总的使用的吸嘴类型数目,n为不同吸嘴类型对应的最大贴装点数;
步骤一二:计算吸嘴分配周期数cycle的上界cycle
吸嘴分配周期数的上界与下界表示为:
其中,cycle
进一步的,所述步骤一中在吸嘴分配周期的上界与下界之间根据吸嘴类型和吸嘴分配周期进行分组,得到吸嘴分配组的具体步骤为:
令cycle=cycle
令cycle=cycle+1,进行迭代,直到cycle>cycle
进一步的,所述步骤二中在每个吸嘴分配组中,根据吸嘴类型、贴片机装配吸杆数以及吸嘴可用吸杆约束NzUseableHD(s)确定拾贴周期内吸杆的吸嘴分配初始解的具体步骤为:
步骤二一:记j为吸嘴分配组NzDividGroup的索引,k为工作链索引,初始化j=1,k=1,将吸嘴分配组进行排序,排序规则第一优先级为吸嘴分配组贴装点数、第二优先级为吸嘴类型对应的贴装点数;
对排序后的吸嘴分配组NzDividedGroup重新编号,记录吸嘴分配组数量为K;
步骤二二:初始化二维矩阵ColUseableHD为nSpindles行和nSpindles列,二维矩阵中元素值为:
其中,row为矩阵ColUseableHD的行索引,col为矩阵ColUseableHD列索引,ColUseableHD第row行的元素表示某一个工作链可分配的吸杆序号集合;
步骤二三:初始化吸嘴分配结果NzResult为n行、nSpindles列的空矩阵,NzResult中的列表示一个工作链;
设计矩阵RowIndex表示NzResult矩阵中各个列当前已经分配的贴装点数量,初始化RowIndex为有nSpindles个元素的空矩阵;
集合S表示当前吸嘴分配组不可被分配的工作链索引集合,令
步骤二四:令工作链索引
表示在当前可被分配的工作链中分配贴装点数量最少的工作链索引,令r=RowIndex{c),r表示工作链c对应的已分配贴装点点数;
步骤二五:令s=NzDividedGroup(j).nztype,计算nAssignedNz(r+1,s),nAssignedNz表示NzResult矩阵中r+1行中吸嘴s的数目,令UseableHD=NzUseableHD(s)∩ColUseableHD(c),UseableHD表示工作链c可分配的吸杆集合,若nAssignedNz(row,s)<NzLimit(s)且
步骤二六:计算tmpColUseableHD,tmpColUseableHD表示吸嘴分配组NzDividedGroup(j)至工作链k后,各工作链可分配的吸杆序号集合,具体计算方法为:
c′=1,2,3...K;
步骤二七:用二分匹配构造当前吸嘴分配结果是否满足吸嘴约束条件,具体过程为:
步骤二七一:根据tmpColUseableHD构造大小为nSpindles×nSpindles的关系矩阵MatchMatrix,MatchMatrix表示工作链和吸杆之间是否存在映射关系,其具体计算方法为:
其中,row为工作链编号,col为吸杆的编号,temColUseableHD表示吸嘴分配组NzDividGroup(j)至工作链k后,各工作链可分配的吸杆序号集合;
若MatchMatrix(row,col)=1,表示第row条工作链可被分配到吸杆col上,MatchMatrix(row,col)=0,不可分配;
步骤二七二:令linkindex=1、headindex=1,linkindex和headindex分别表示工作链索引和吸杆索引,同时记录各个吸杆所用的工作链索引HeadUsedCol,初始化HeadUsedCol为大小为nSpindles元素全为0的向量;
步骤二七三:令isVisited为大小为nSpindles元素全为0的向量,isVisited表示当前已经访问的吸杆索引,若MatchMatrix(linkindex,headindex)=1,则执行步骤二七四,否则执行步骤二七六;
步骤二七四:标记吸杆headindex已经被访问过,即令isVisited(headindex)=1,若吸杆headindex已经同一工作链组成匹配关系,即HeadUsedCol(headindex)≠0,执行步骤二七五,否则执行步骤二七六;
步骤二七五:继续判定工作链HeadUsedCol(headindex)是否存在其他未被访问的可用的匹配吸杆headindex′;
若存在匹配关系,且吸杆headindex′尚未与工作链组成匹配关系,则令
HeadUsedCol(headindex′)=HeadUsedCol(headindex)
HeadUsedCol(headindex)=linkindex
其中,HeadUsedCol为工作链与吸杆之间的匹配关系,headindex为吸杆标号;
若存在匹配关系,但吸杆headindex′已经与某个工作链组成匹配关系,则跳转到步骤二七四进行递归搜索;
若递归过程中的某个工作链不存在未被访问过的可用匹配吸杆,则执行步骤二八;
步骤二七六:若工作链1到linkindex均已经找到匹配的吸杆,退出递归过程,执行步骤二九;
若HeadUsedCol(headindex)不存在其他未被访问的可用的匹配吸杆,表示工作链linkindex无法确定合适的吸杆安装位置,执行步骤二八;
步骤二八:令S=S∪{linkindex},执行步骤二四到步骤二六,如果满足以下条件:
|S|=nSpindles
表示当前吸嘴分配组不存在可行解;
步骤二九:分配NzDividedGroup(j)至工作链c,即令
NzResult(r+1:r+1+NzDividedGroup(j).num,c)=NzDividedGroup(j).nztype
步骤二十:令k=k+1,而后重复步骤二三到步骤二九,直到k>K,得到吸嘴分配初始解。
进一步的,所述步骤三中得到平衡解的具体步骤为:
步骤三一:确定NzResult中各个工作链最后被分配的吸嘴类型LastNzType(c)和额外贴装点数LastNzNum(c),具体过程为:
步骤三一一:确定各个工作链最后被分配的吸嘴类型
其中矩阵元素″为空;
步骤三一二:确定工作链的最小工作量
步骤三一三:确定工作链额外贴装点数
步骤三二:对LastNzType类型相同的工作链贴装点进行任务均分,具体均分方法为:遍历所有最后被分配的吸嘴类型,对于给定吸嘴类型s,计算LastNzType类型相同额外贴装点数总和NzAccum(s),即:
NzAccum(s)=sum{LastNzNum(c)|LastNzType(c)=s,c=1,2,...,nSpindles};
步骤三三:在满足吸嘴约束条件的前提下,对LastNzType中类型不同的工作链贴装点进行任务均分,折算均分代价,具体过程为:
步骤三三一:确定工作链中贴装点总数最大的工作链索引集合P,令
寻找工作链c″满足:
步骤三三二:重复步骤三三一,直到找不到满足条件的工作链c″,则执行步骤三四;
步骤三四:根据工作链可用吸杆ColUsedHD,采用递归二分匹配的方法,将工作链分配到各个吸杆上,得到可行解。
进一步的,所述步骤三中取不同可行解之间的工作效率指标高的解为最优解的具体步骤为:
步骤三五:计算吸嘴分配解NzResult的工作效率指标E,工作效率指标E指吸嘴分配解的工作周期数E
步骤三五一:工作周期数E
E
步骤三五二:吸嘴更换次数E
步骤三五三,计算工作效率指标E=aE
进一步的,所述a=1,b=2。
进一步的,所述cycle为5。
本发明的有益效果是:
本申请提出了一种基于最大二分配的贴片机吸嘴分配方法,在改进匈牙利方法的基础上,能同时保证并列式贴片机吸嘴更换次数和拾取周期的最小化,本申请根据有限的吸嘴资源和吸嘴分配约束条件,分配不同吸嘴到吸杆上,保证工作周期和吸嘴更换次数的最小化,提升贴片机整体工作效率。
附图说明
图1为贴片机吸嘴分配方法流程图;
图2为吸嘴分配组构造示意图;
图3为吸嘴分配组排序结果示意图;
图4为吸嘴分配组-工作链转换示意图;
图5为相同吸嘴类型工作链贴装点均摊示意图。
具体实施方式
需要特别说明的是,在不冲突的情况下,本申请公开的各个实施方式之间可以相互组合。
具体实施方式一:参照图1具体说明本实施方式,本实施方式所述的一种基于最大二分配的贴片机吸嘴分配方法,包括以下步骤:
步骤一:根据PCB板生产数据,统计贴装元件用到的吸嘴类型以及对应的贴装点数目,确定吸嘴分配周期的上界与下界;
步骤二:根据步骤一中的吸嘴类型参数、贴片机装配吸杆数、指定吸嘴约束条件,确定拾贴周期内吸杆的安装吸嘴类型初始解;
步骤三:根据步骤二中确定的吸嘴分配初始解,在满足吸嘴约束条件下,对各吸杆间的工作负载进行平衡。
步骤一中所述的确定吸嘴分配周期数的上界与下界方法,具体为:
步骤一一:确定贴片机机械参数和吸嘴可用约束条件:可用吸杆数nSpindles,各类型吸嘴可用数量上限NzLimits(s)和吸嘴可用吸杆约束NzUseableHD(s),其中,s代表者吸嘴的类型;例如,CN065.吸嘴可用吸杆约束元素为吸杆的索引集合NzUseableHD(‘CN065’)={1,2,5},表示吸嘴CN065仅仅只能被安装在编号1、2、5的吸杆上;
步骤一二:处理PCB板导入数据,对应贴装点数据为结构体数组MountPGroup(i),数组元素表示完整的贴装点信息,用公式表示为:
MountPGroup(i)={posx,posy,cptype,nztype}
其中,i代表对应贴装点数据的编号,posx为贴装点的x坐标,posy为贴装点的y坐标,cptype为元件类型,nztype为使用的吸嘴类型,元件类型与使用的吸嘴类型严格一一对应,即每种元件对应的吸嘴类型有且仅有一种;
步骤一三:统计各类型吸嘴对应的贴装点数目,并按照贴装点数目降序进行排列,得到吸嘴组NozzleGroup(i),用公式表示为:
NozzleGroup(i)=[NzGroupType(i) NzGroupNum(i)]
其中,NzGroupType(i)表示为贴装点数目排序第i多对应贴装数据中使用的吸嘴类型,NzGroupNum(i)表示贴装点数目排序第i多对应贴装数据中贴装点的数量;
NzGroupNum(i)需要满足以下条件:
其中,m为总的使用的吸嘴类型数目,n为不同吸嘴类型对应的最大贴装点数;
步骤一四:计算吸嘴分配周期数cycle的上界与下界cycle
令cycle=cycle
吸嘴贴装点数按照分配周期数进行分组,计算吸嘴分配周期数的上界与下界公式为:
其中,cycle
步骤一五:使用步骤一四的方法对每个吸嘴对应的贴装点数据进行分组,吸嘴分配组的组成元素为二元数组:
{nztype,num}
其中,nztype为吸嘴类型,num为分配组对应的贴装点数;
例:如图2所示,假定有三种类型吸嘴CN065、CN220、CN140,对应贴装点数为10、8、6,吸嘴分配周期数cycle为5,则吸嘴组被划分为6组吸嘴分配组;
步骤一六:令cycle=cycle+1,确定吸嘴分配组,然后执行权力要求1中的步骤二与步骤三,然后再跳转到步骤一四,直到cycle>cycle
所述步骤二中根据步骤一中的吸嘴类型参数、贴片机装配吸杆数、指定吸嘴约束条件,确定拾贴周期内吸杆的安装吸嘴类型初始解,具体过程为:
步骤二一:记j为吸嘴分配组NzDividGroup的索引,k为工作链索引,初始化j=1,k=1,将吸嘴分配组进行排序,排序规则第一优先级为吸嘴分配组贴装点数、第二优先级为吸嘴类型对应的贴装点数;
例:将图2中的吸嘴分配组排序后得到结果如图3所示;
对排序后的吸嘴分配组NzDividedGroup重新编号,记录分配吸嘴组数量为K;
步骤二二:初始化可变长的二维矩阵ColUseableHD为nSpindles行和nSpindles列,其中,nSpindles为贴片机可以使用的吸杆数量,令矩阵中元素值为:
其中,row为矩阵ColUseableHD的行索引,col为矩阵ColUseableHD列索引,ColUseableHD第row行的元素表示某一个工作链可分配的吸杆序号集合,初始条件下,任一工作链可分配到任一吸杆上,工作链由若干顺序确定的吸嘴分配组构成,表示贴片头中单个吸杆在各个拾取周期完成贴装任务所用的吸嘴;
步骤二三:初始化吸嘴分配结果NzResult为n行、nSpindles列的空矩阵,NzResult中的列表示一个工作链;
设计矩阵RowIndex表示NzResult矩阵中各个列当前已经分配的贴装点数量,初始化RowIndex为有nSpindles个元素的空矩阵;
集合S表示当前吸嘴分配组不可被分配的工作链索引集合,令
步骤二四:令工作链索引
步骤二五:令s=NzDividedGroup(j).nztype,计算nAssignedNz(r+1,s),表示NzResult矩阵中r+1行中吸嘴s的数目,令UseableHD=NzUseableHD(s)∩ColUseableHD(c),表示工作链c可分配的吸杆集合,若nAssignedNz(row,s)<NzLimit(s)且
步骤二六:计算tmpColUseableHD,表示吸嘴分配组NzDividedGroup(j)至工作链k后,各工作链可分配的吸杆序号集合,具体计算方法为:
步骤二七:用二分匹配构造当前吸嘴分配结果是否满足吸嘴约束条件,具体过程为:
步骤二七一:根据tmpColUseableHD构造大小为nSpindles×nSpindles的关系矩阵MatchMatrix,表示工作链和吸杆之间是否存在映射关系,其具体计算方法为:
其中,row为工作链编号,col为吸杆的编号,temColUseableHD表示吸嘴分配组NzDividGroup(j)至工作链k后,各工作链可分配的吸杆序号集合;
若MatchMatrix(row,col)=1,表示第row条工作链可被分配到吸杆col上,否则,不成立;
步骤二七二:令linkindex=1、headindex=1分别表示工作链索引和吸杆索引,同时记录各个吸杆所用的工作链索引HeadUsedCol,初始化HeadUsedCol为大小为nSpindles元素全为0的向量;
步骤二七三:令isVisited为大小为nSpindles元素全为0的向量,记录当前已经访问的吸杆索引,若MatchMatrix(linkindex,headindex)=1,则执行步骤二七四,否则执行步骤二六六;
步骤二七四:标记吸杆headindex已经被访问过,即令isVisited(headindex)=1,若吸杆headindex已经同一工作链组成匹配关系,即HeadUsedCol(headindex)≠0,执行步骤二七五,否则执行步骤二七六;
步骤二七五:继续判定工作链HeadUsedCal(headindex)是否存在其他未被访问的可用的匹配吸杆headindex′;
若存在匹配关系,且吸杆headindex′尚未与工作链组成匹配关系,则令
HeadUsedCol(headindex′)=HeadUsedCol(headindex)
HeadUsedCol(headindex)=linkindex
其中,HeadUsedCol为工作链与吸杆之间的匹配关系,headindex为吸杆标号;
若存在匹配关系,但吸杆headindex′已经与某个工作链组成匹配关系,则跳转到步骤二七四进行递归搜索;
若递归过程中的某个工作链不存在未被访问过的可用匹配吸杆,则执行步骤二八
若工作链1到linkindex均已经找到匹配的吸杆,退出递归过程,执行步骤二九;
若HeadUsedCol(headindex)不存在其他未被访问的可用的匹配吸杆,表示工作链linkindex无法确定合适的吸杆安装位置,执行步骤二八;
步骤二八:令S=S∪{linkindex},执行步骤二四到步骤二六,如果满足以下条件:
|S|=nSpindles
表示当前吸嘴分配组不存在可行解,步骤二结束,跳转到步骤一五;
步骤二九:分配NzDividedGroup(j)至工作链c,即令
NzResult(r+1:r+1+NzDividedGroup(j).num,c)=NzDividedGroup(j).nztype
步骤二十:令k=k+1,而后重复步骤二三到步骤二九,直到k>K,其中K为分配吸嘴组数量;
在步骤三中,根据步骤二中确定的吸嘴分配初始解,在满足吸嘴约束条件下,对各吸杆间的工作负载进行平衡,具体过程为:
步骤三是基于前述的吸嘴可用吸杆NzUseableHD、工作链可用吸杆ColUseableHD和吸嘴分配初始解NzResult进行的;
步骤三一:确定NzResult中各个工作链最后被分配的吸嘴类型LastNzType(c)和额外贴装点数LastNzNum(c),具体过程为:
步骤三一一:确定各个工作链最后被分配的吸嘴类型
其中矩阵元素“″”为空。
步骤三一二:确定工作链的最小工作量
其中矩阵元素“″”为空。
步骤三一三:确定工作链额外贴装点数
其中矩阵元素“″”为空。
步骤三二:对LastNzType类型相同的工作链贴装点进行任务均分,具体均分方法为:遍历所有最后被分配的吸嘴类型,对于给定吸嘴类型s,计算LastNzType类型相同额外贴装点数总和NzAccum(s),即:
NzAccum(s)=sum{LastNzNum(c)|LastNzType(c)=s,c=1,2,...,nSpindles}
例:将图3中的贴装点均摊至分配吸嘴类型为s的工作链中,如图4所示;
各个工作链的最后分配吸嘴类型分别是CN065、CN065、CN140、CN220、CN140、CN065,额外贴装点数为7、0、2、4、8、1,共有3条工作链使用;
用吸嘴CN065,NzAccum(′CN065′)=8,均摊总和无法被工作链整除,因而将额外贴装点数除以工作链数的结果向下取整,额外点数依次分配到各个工作链1个贴装点,直到额外点数为0,即均摊工作链1、2、6贴装点工作分别为3、3、2,同理对CN140进行均摊,得到相同类型吸嘴均摊最后结果,如图5所示;
步骤三三:在满足吸嘴约束条件的前提下,对LastNzType中类型不同的工作链贴装点进行任务均分,折算均分代价,具体过程为:
步骤三三一:确定工作链中贴装点总数最大的工作链索引集合P,令
寻找工作链c″满足:
步骤三三二:重复步骤三三一,直到找不到满足条件的工作链c″
步骤三四:根据工作链可用吸杆ColUsedHD,同理步骤二七,采用递归二分匹配的方法,将工作链分配到各个吸杆上。
本实施例为:
选用吸杆数量为6的并列式贴片机,选用10组生产线常用的贴装数据,使用上述的基于最大二分配的贴片机吸嘴分配方法,验证本发明的有效性:
表1基于最大二分配的贴片机吸嘴分配结果
需要注意的是,具体实施方式仅仅是对本发明技术方案的解释和说明,不能以此限定权利保护范围。凡根据本发明权利要求书和说明书所做的仅仅是局部改变的,仍应落入本发明的保护范围内。
- 一种具有润肠通便作用的益生菌组合物及其制备方法和应用
- 一种含有益生菌和益生元的组合物及其应用
- 一种用于抑制幽门螺杆菌活性的益生菌组合物及其应用
- 一种具有调节脂代谢功能的益生菌JT6骆驼乳粉组合物
- 改善过敏性疾病的益生菌组合物、益生菌组合物菌粉及制备方法,应用
- 一种多功能的益生菌组合物及其应用