[go: up one dir, main page]

CN112016757B - 一种卷盘料带裁切方法及系统 - Google Patents

一种卷盘料带裁切方法及系统 Download PDF

Info

Publication number
CN112016757B
CN112016757B CN202010909817.6A CN202010909817A CN112016757B CN 112016757 B CN112016757 B CN 112016757B CN 202010909817 A CN202010909817 A CN 202010909817A CN 112016757 B CN112016757 B CN 112016757B
Authority
CN
China
Prior art keywords
cluster
tape
cut
idx
current
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010909817.6A
Other languages
English (en)
Other versions
CN112016757A (zh
Inventor
喻勇涛
孟光磊
齐义文
田丰
王传云
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenyang Aerospace University
Original Assignee
Shenyang Aerospace University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenyang Aerospace University filed Critical Shenyang Aerospace University
Priority to CN202010909817.6A priority Critical patent/CN112016757B/zh
Publication of CN112016757A publication Critical patent/CN112016757A/zh
Application granted granted Critical
Publication of CN112016757B publication Critical patent/CN112016757B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/04Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
    • G06Q10/043Optimisation of two dimensional placement, e.g. cutting of clothes or wood

Landscapes

  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Engineering & Computer Science (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Game Theory and Decision Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Development Economics (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明公开了一种卷盘料带裁切方法及系统,其方法包括:定义卷盘料带序列信息,设置参数;计算目标排列组合;确定输入料带,分配一个空的输入料带裁切方案列表;定义当前候选结果料带并分配一个当前裁切方案和当前裁切方案列表;进行裁切方案计算,从输入料带上裁切出一个或者多个结果料带的裁切方案;得到输入料带裁切方案列表;反复计算得到所有排列组合下所得输入料带的所有输入料带裁切方案列表。其系统包括:卷盘料带序列信息文件读取模块、参数设定模块、裁切方案计算模块和裁切方案输出模块;可处理长度较长较复杂的料带,充分利用卷盘料带原料得出多种裁切方案,并给出较优的裁切方案。

Description

一种卷盘料带裁切方法及系统
技术领域
本发明属于卷盘料带裁切技术领域,尤其是涉及一种卷盘料带裁切方法及系统。
背景技术
在现代工业生产中,包括钢铁、建材、纸卷、薄膜等行业,都存在着如何排单下料问题,其中一维下料问题是生产中面临的最普遍的问题。所谓一维下料问题,是指原材料和所需材料维数都为一维时,在已知的订单要求和原料数据下如何优化切割下料,使得原材料尽量得到充分利用,成本尽量得到节约的规划问题。
特别是针对于某些类卷盘料带产品在包装出货前,需要根据料带产品的品质信息对料带进行裁切拼接处理,确保得到的结果料带满足出货要求的良率和长度指标,且符合裁切规则,如裁切次数限制、连续残次品个数限制等。以COF产品为例,COF全称为Chip OnFlex或者Chip On Film,即芯片软膜构装技术,将IC芯片不经过任何封装形式,直接安装到挠性印制板上,达到高构装密度,减轻总量,缩小体积,能自由弯曲安装的目的。COF技术已成为未来平板显示器的驱动IC封装的主流趋势之一。生产时,成品COF料带上包括若干良品与残次品,以类似电影胶卷的形式收纳在卷盘上。最后产品装箱出货前,考虑实际生产良率和成本,需要按照要求裁切掉卷盘料带上的部分残次品,使出货的COF卷盘满足良率和长度要求,此过程涉及裁切方案计算。
此过程涉及对裁切方案的设计,现有技术中普遍通过人工编排的方式给出裁切方案,这样的方法存在很多缺点:一、依赖操作经验,多数情况下给出的裁切方案只能优先满足出货要求的良率和长度,无法有效处理料带上不满足裁切规则的情况,因此无法给出较优的裁切方案,达到充分利用卷盘料带原料的目的;二、因为是依靠人工设计,面对复杂的料带,难以得出多种裁切方案;三、因设计中需要反复的重复性计算,只能通过人工完成,效率低;四、无法有效处理长度较长的料带,更无法处理多卷料带组合情况下的方案计算。
发明内容
针对上述现有技术的不足,本发明提供一种卷盘料带裁切方法及系统,实现了在符合裁切规则和结果要求的前提下,对多卷卷盘料带组合进行裁切方案的计算。
本发明提供一种卷盘料带裁切方法,其流程如图1所示,包括以下步骤:
步骤1:定义卷盘料带序列信息,设置裁切规则和参数、设置结果要求参数,所述卷盘料带如图2所示;
定义需要裁切的卷盘料带总数为N个,N≥1;每个卷盘上的料带序列信息为其中,0表示残次品,1表示良品;K表示第K个卷盘料带,1≤K≤N;i表示在卷盘料带上的第i个产品的序号,取值范围0≤i<LK,LK表示第K个卷盘料带上的总产品个数;
所述裁切规则包括头部规则、次数规则、残次品规则、片段规则,具体如下:
头部规则:若结果料带头部连续残次品的个数大于上限值RULE_PARAMhead,则判定结果料带违反了头部规则,RULE_PARAMhead≥0;
次数规则:若结果料带上的裁切次数大于上限值RULE_PARAMcut,则判定结果料带违反了次数规,RULE_PARAMcut>0;
残次品规则:若结果料带上的连续残次品个数大于上限值RULE_PARAMng,则判定结果料带违反了残次品规则,RULE_PARAMng≥0;
片段规则:若结果料带上两个相邻裁切位置之间产品个数小于下限值RULE_PARAMsegment,则判定结果料带违反了片段规则,RULE_PARAMsegment≥0。
所述结果要求包括:(1)结果料带产品个数大于下限值REL_PARAMmin_length
(2)结果料带产品个数小于上限值REL_PARAMmax_length
(3)结果料带良率大于等于下限值REL_PARAMmin_yield
步骤2:计算N个卷盘料带的目标排列组合:
若N>1,N个卷盘料带有N!种排列组合,在每种排列组合下,将N个卷盘料带通过首尾串接形成一个合并料带;对N!种排列组合后串接形成的N!个合并料带执行分段良率方差算法,得到每个合并料带的良率方差值VARtape,将计算得到的N!个VARtape值从大到小排列,记为对应的排列组合记为取前PN个排列组合定义为目标排列组合,记为
若N=1,即只有1个卷盘料带,则目标排列组合个数PN=1,目标排列组合只有一种,无需计算;
所述的分段良率方差算法为:N个卷盘料带通过首尾串接形成一个合并料带,LINPUT为N个卷盘料带产品个数的和,计算分段产品个数Lsegment,计算公式如式(1)所示:
依次从合并料带上取Lsegment个产品,构造一个临时分段料带计算临时分段料带良率,并将良率存入分段良率列表;以分段良率列表中的良率数据为输入,计算良率数据的方差;
步骤3:确定输入料带,为输入料带分配一个空的输入料带裁切方案列表,用于保存此输入料带的裁切方案CUT_SCHl,CUT_SCHl对应的结果料带为REL_TAPEl
定义输入料带序列信息为当N=1时,该卷盘料带即为输入料带,/>等于卷盘料带序列信息/>LINPUT=L1;当N>1时,取步骤1所得PN个目标排列组合/>中的一个目标排列PERi作为N个卷盘的排列组合顺序,对N个卷盘料带进行首尾串接,得到合并料带,此合并料带记为输入料带,此时,/>为N个卷盘料带序列信息首尾串接,LINPUT为N个卷盘料带产品个数的和,即/>
所述裁切方案用CUT_SCHl={cut_start_idx,cut_end_idx,cut_score,list(cut_slicej,k)}表示,其中,l表示输入料带的第l个裁切方案,cut_start_idx和cut_end_idx分别表示CUT_SCHl的起始产品和末尾产品在输入料带上的序号,cut_score表示CUT_SCHl的评分;
list(cut_slicej,k)表示裁切片段列表,cut_slicej,k表示一个裁切片段,指切除输入料带上产品序号j和k之间的料带片段,cut_start_idx≤j,k≤cut_end_idx;裁切方案指以cut_start_idx和cut_end_idx为裁切区间,裁切掉list(cut_slicej,k)中存储的裁切片段;重置裁切方案是指赋值cut_start_idx=0,cut_end_idx=0,cut_score=0,清空list(cut_slicej,k);在输入料带上应用一个裁切方案将对应的得到一个结果料带,所述的结果料带用
REL_TAPEl={rel_start_idx,rel_end_idx,list(cut_slicej,k)}表示;REL_TAPEl和CUT_SCHl有一一对应关系,表示在输入料带上执行一个裁切方案CUT_SCHl得到的一个结果料带,其中rel_start_idx和rel_end_idx分别表示结果料带的起始产品和末尾产品在输入料带上的序号,其取值分别和裁切方案CUT_SCHl中的cut_start_idx和cut-end_idx相同;list(cut_slicej,k)表示结果料带上被切掉了的料带片段,其定义和取值与裁切方案CUT_SCHl中list(cut_slicej,k)相同;重置结果料带是指赋值rel_start_idx=0,rel_end_idx=0,清空list(cut_slicej,k);
步骤4:定义输入料带上的当前候选结果料带REL_TAPEcurrent,并为其分配一个当前裁切方案CUT_SCHcurrent和当前裁切方案列表,并为CUT_SCHcurrent及其对应的REL_TAPEcurrent赋初始值;
在步骤3确定的输入料带上,定义
REL_TAPEcurrent={rel_start_idx,rel_end_idx,list(cut_slicej,k)},赋值
rel_start_idx=INDEXstart,rel_end-idx=INDEXend,清空list(cut_slicej,k),其中,INDEXstart
为当前候选结果料带第一个产品在输入料带上的序号,INDEXstart初始值为0,即输入料带的头部;定义INDEXend并赋值为INDEXend=min{INDEXstart+REL_PARAMmin_length,输入料带产品个数LINPUT-1},表示为当前候选结果料带的最后一个产品在输入料带上的序号,INDEXstart和INDEXend标记了当前候选结果料带的起止序号区间;
将REL-TAPEcurrent对应的裁切方案CUT_SCHcurrent重置,重置后赋值裁切方案中的cut_start_idx=INDEXstart、cut_end_idx=INDEXend
步骤5:在改进聚类算法中:定义为待聚类卷盘料带序列信息,VALID_INDEXCluster为待聚类卷盘料带有效序号信息,CLUSTER为类簇,赋值参数CLUSTER_PARAMM的初始值为0,其取值范围为:0≤CLUSTER_PARAMM≤RULE_PARAMsegment
步骤6:定义一个空的料带序列信息为输入料带副本,将输入料带序列信息复制到输入料带副本中,并将输入料带副本上REL_TAPEcurrent头部序号rel_start_idx之后的RULE_PARAMhead个产品信息修改为残次品标记0;
步骤7:计算需要在当前候选结果料带上切掉的残次品数量,定义为拟裁切掉产品数量NUMBERneed_to_cut
计算公式如式(2)和(3)所示,计算结果做四舍五入处理;如果当前候选结果料带良率大于等于良率下限REL_PARAMmin_yield,使用公式(2)进行计算,否则使用公式(3):
式(2)和式(3)中,OK_CNT表示当前候选结果料带上的良品个数,NG_CNT表示当前候选结果料带上的残次品个数;
步骤8:依据NUMBERneed_to_cut的值,确定当前候选结果料带REL_TAPEcurrent及其裁切方案CUT_SCHcurrent,其流程如图3所示;
步骤8.1:分配一个类簇信息列表和一个预裁切类簇信息列表,根据NUMBERneed_to_cut取值执行步骤8.2或步骤8.3;
步骤8.2若NUMBERneed_to_cut小于0;
步骤8.2.1清空类簇信息列表和预裁切类簇信息列表,把输入料带副本作为待聚类卷盘料带,从REL_TAPEcurrent中提取有效序号信息,进行改进聚类计算,并将计算得到的残次品类簇和良品类簇存入类簇信息列表;在类簇信息列表中依次找出所有类簇产品个数值大于等于RULE_PARAMng值的残次品类簇,复制副本后,按照从前到后次序存入预裁切类簇信息列表;
若预裁切类簇信息列表为空,执行步骤8.2.2;
若不为空,取预裁切类簇信息列表中第一个残次品类簇,定义为将要从当前候选结果料带上裁掉的当前裁切类簇,记为CLUSTERcurrent,执行裁切操作,得到更新后的REL_TAPEcurrent
判断REL_TAPEcurrent是否满足步骤1中设置的头部规则、次数规则和片段规则这三个规则:
若满足,则移除预裁切类簇信息列表中的CLUSTERcurrent,并更新NUMBERneed_to_cut的值为NUMBERneed_to_cut=NUMBERneed_to_cut+CLUSTERcurrent长度;若预裁切类簇信息列表不为空,继续取预裁切类簇信息列表中的第一个残次品类簇作为CLUSTERcurrent,再次执行裁切操作;若为空,则执行8.2.2;
若不满足,则撤销此次裁切,即将裁切操作中存入REL_TAPEcurrent被裁切掉片段列表list(cut_slicej,k)的cut_slicej,k移除;若CLUSTERcurrent已是预裁切类簇信息列表的最后一个类簇,则执行步骤8.1.2,否则预裁切类簇信息列表中CLUSTERcurrent下一个残次品类簇作为CLUSTERcurrent,继续执行裁切操作;
步骤8.2.2检查NUMBERneed_to_cut是否大于等于0,若大于等于0,则执行步骤9;若小于0,则清空类簇信息列表和预裁切类簇信息列表后,把输入料带副本作为待聚类卷盘料带,从更新后的REL_TAPEcurrent中提取有效序号信息,进行改进聚类计算,并将计算得到的残次品和良品类簇信息存入类簇信息列表;在类簇信息列表中依次找出所有的残次品类簇,并将找出的残次品类簇按照类簇产品个数值和拟裁切掉产品数量差值的绝对值从小到大进行排序,复制类簇副本后,按序存入预裁切类簇信息列表;
若预裁切类簇列表为空,执行步骤9;
若不为空,取预裁切类簇列表中第一个残次品类簇,作为将要从当前候选结果料带上裁掉的当前裁切类簇,记为CLUSTERcurrent,执行裁切操作,得到更新后的REL_TAPEcurrent
判断更新后的REL_TAPEcurrent是否满足步骤1中设置的头部规则、次数规则和片段规则这三个规则:
若满足,则移除预裁切类簇信息列表中的CLUSTERcurrent,并更新NUMBERneed_to_cut的值为NUMBERneed_to_cut=NUMBERneed_to_cut+CLUSTERcurrent长度;检查更新后的NUMBERneed_to_cut是否大于等于0,若大于等于0,则执行步骤9;若小于0,转入步骤8.2.1;
若不满足,则撤销此次裁切,即将裁切操作中存入REL_TAPEcurrent被裁切掉片段列表
list(cut_slicej,k)的cut_slicej,k移除;若CLUSTERcurrent已是预裁切类簇信息列表的最后一个类簇,则执行步骤9,否则预裁切类簇信息列表中CLUSTERcurrent下一个残次品类簇作为CLUSTERcurrent,继续执行裁切操作;
步骤8.3若NUMBERneed_to_cut大于等于0
步骤8.3.1清空类簇信息列表和预裁切类簇信息列表,把输入料带副本作为待聚类卷盘料带,从REL_TAPEcurrent中提取有效序号信息,进行改进聚类计算,并将计算得到的残次品和良品类簇存入类簇信息列表;在类簇信息列表中依次找出所有类簇产品个数值大于等于RULE_PARAMng值的残次品类簇,复制副本后,按照从前到后次序存入预裁切类簇信息列表;
若预裁切类簇信息列表为空,则执行步骤9;
若不为空,取预裁切类簇列表中第一个残次品类簇,定义为将要从当前候选结果料带上裁掉的当前裁切类簇,记为CLUSTERcurrent
步骤8.3.2执行裁切操作,得到更新后的REL_TAPEcurrent;判断REL_TAPEcurrent是否满足步骤1中设置的头部规则、次数规则和片段规则这三个规则:
若满足,则移除预裁切类簇信息列表中的CLUSTERcurrent,并更新NUMBERneed_to_cut的值为NUMBERneed_to_cut=NUMBERneed_to_cut-CLUSTERcurrent产品个数值,转至步骤8.3.1;
若不满足,则撤销此次裁切,即将裁切操作中存入REL_TAPEcurrent被裁切掉片段列表list(cut_slicej,k)的cut_slicej,k移除;若预裁切类簇信息列表不为空,取预裁切类簇信息列表中CLUSTERcurrent下一个残次品类簇作为CLUSTERcurrent继续执行裁切操作;若为空,则执行步骤9;
所述执行裁切操作为:把当前候选结果料带REL_TAPEcurrent上被当前裁切类簇所标记区间上的产品切除,具体操作为:构造一个cut_slicej,k,赋值j=clu_start_idx,k=clu_end_idx,clu_start_idx和clu_end_idx取自CLUSTERcurrent,将此cut_slicej,k存入REL_TAPEcurrent的list(cut_slicej,k),得到更新后的REL_TAPEcurrent
步骤9:确认当前候选结果料带REL_TAPEcurrent是否满足步骤1中裁切规则和结果要求,依据结果执行步骤9.1
若REL_TAPEcurrent满足裁切规则和结果要求,则对REL_TAPEcurrent执行结果料带评分公式,计算REL_TAPEcurrent的评分,将评分赋值给裁切方案CUT_SCHcurrent中的cut_score,将REL_TAPEcurrent中的list(cut_slicej,k)复制到CUT_SCHcurrent的list(cut_slicej,k),将更新后的裁切方案CUT_SCHcurrent记入步骤4中的当前裁切方案列表,继续执行步骤9.1;
若REL_TAPEcurrent不满足裁切规则和结果要求,继续执行步骤9.1;
步骤9.1清空REL_TAPEcurrent和CUT_SCHcurrent的list(cut_slicej,k),更新CLUSTER_PARAMM的值为CLUSTER_PARAMM=CLUSTER_PARAMM+1;若更新值后的CLUSTER_PARAMM≤RULE_PARAMsegment,转入步骤6;若更新值后的CLUSTER_PARAMM>RULE_PARAMsegment,执行步骤10;
所述的结果料带评分公式为:
Scoretotal=α*Scoreyield+(1-α)*Scorelength (4)
式(4)中,Scoretotal表示待评分结果料带的评分,由良率得分Scoreyield和长度得分Scorelength组成,参数α表示评分权重;
Scoreyield=(Yieldresult-REL_PARAMmin_yield)/REL_PARAMmin_yield (5)
式(5)中,Yieldresult表示待评分结果料带的良率,REL_PARAMmin_yield表示良率下限;
Scorelength=(Lengthresult-REL_PARAMmin_length)/REL_PARAMmin_length (6)
式(6)中,Lengthresult表示待评分结果料带的产品个数,REL_PARAMmin_length表示结果料带产品个数限制下限值;
步骤10:在输入料带上向后扩展当前候选结果料带REL_TAPEcurrent的序号区间,重置并更新CUT_SCHcurrent和REL-TAPEcurrent,然后继续进行求解;
扩展方法为:更新输入料带上用于标记当前候选结果料带末尾产品序号的INDEXend
清空类簇信息列表,赋值CLUSTER_PARAMM=1,把输入料带作为待聚类卷盘料带,构造有效序号信息VALID_INDEXCluster其中valid_start_idx=INDEXend,valid_end_idx=LINPUT-1,list(invalid_slicej,k)为空,进行改进聚类计算,结果存入类簇信息列表;
若类簇信息列表不为空,将INDEXend的值更新为类簇信息列表第一个类簇的
clu_end_idx值+1,重置CUT_SCHcurrent和REL_TAPEcurrent,更新REL_TAPEcurrent的rel_start_idx值为INDEXstart,rel_end_idx值为INDEXend值;更新CUT_SCHcurrent的cut_start_idx值为INDEXstart,cut_end_idx值为INDEXend值;赋值CLUSTER_PARAMM=0,继续执行步骤6;
若类簇信息列表为空,继续执行步骤11;
步骤11:从当前裁切方案列表中确定输入料带上从序号INDEXstart至料带末尾之间的最佳裁切方案,然后更新INDEXstart值,重置后更新CUT_SCHcurrent和REL_TAPEcurrent,继续进行求解;
得到更新后的当前裁切方案列表,其中存储了大于等于0个裁切方案,这些裁切方案均以INDEXstart为起始序号,在输入料带上裁切后得到对应的结果料带;需要从当前裁切方案列表中找出最佳裁切方案:
步骤11.1:若当前裁切方案列表不为空,则将列表中的裁切方案按评分从大到小排序,确定得分最高的裁切方案作为输入料带上以INDEXstart为起始序号的最佳裁切方案,将此方案存入输入料带裁切方案列表;
更新INDEXstart的值为最佳裁切方案的rel_end_idx值加1后,再更新INDEXend的值为min{INDEXstart+REL_PARAMminlength,输入料带产品个数-1};重置CUT_SCHcurrent和REL_TAPEcurrent
若INDEXstart值小于输入料带产品个数值,更新REL_TAPEcurrent的rel_start_idx值为INDEXstart,rel_end-idx值为INDEXend值;更新CUT_SCHcurrent的cut_start_idx值为INDEXstart,cut_end_idx值为INDEXend值,转入步骤5继续求解;
若INDEXstart值大于等于输入料带个数值,则继续运行步骤12;
步骤11.2:若对当前裁切方案列表为空,表示在输入料带上以INDEXstart为起始序号,直到料带末尾,都未求解到满足裁切规则和结果要求的裁切方案,这种情况下,需将INDEXstart和min{INDEXstart+REL_PARAMmin_length,输入料带个数-1}区间内料带裁掉,因此定义一个裁切方案{cut_start_idx,cut_end_idx,cut_score,list(cut_slicej,k)},赋值其cut_start_idx=INDEXstart,cut-end-idx=min{INDEXstart+REL_PARAMmin_length,输入料带产品个数-1},cut_score=0,裁切片段列表list(cut_slicej,k)中只有一个片段且j=INDEXstart,k=min{INDEXstart+REL-PARAMmin_length,输入料带产品个数-1},将此方案存入输入料带裁切方案列表;
然后,更新INDEXstart的值为min{INDEXstart+REL-PARAMmin-length,输入料带个数-1}后,再更新INDEXend的值为min{INDEXstart+REL_PARAMmin_length,输入料带个数-1};重置CUT_SCHcurrent和REL-TAPEcurrent
若INDEXstart值小于输入料带产品个数值,更新REL_TAPEcurrent的rel_start_idx值为INDEXstart,rel_end-idx值为INDEXend值;更新CUT_SCHcurrent的cut_start-idx值为INDEXstart,cut_end-idx值为INDEXend值,转入步骤5继续求解;
若INDEXstart值大于等于输入料带产品个数值,则继续运行步骤12;
所述步骤5至步骤11用于计算从输入料带的产品序号区间INDEXstart到LINPUT-1之间,裁切出一个或者多个结果料带的裁切方案,此裁切方案不唯一,求得后,存储在当前裁切方案列表中;
步骤12:求解得到输入料带的输入料带裁切方案列表;
求解得到的输入料带裁切方案列表中存储了一个或多个裁切方案,在输入料带上依次执行这些裁切方案,得到对应的一个或多个结果料带;
步骤13:反复执行步骤3至步骤11,直到求解得到PN个排列组合下所得输入料带的PN个输入料带裁切方案列表为止。
所述的改进聚类算法包含如下步骤:
步骤a.设置待聚类卷盘料带序列信息和有效序号信息;
定义待聚类卷盘料带有效序号信息:
VALID_INDEXCluster={valid-start-idx,valid-end_idx,list(invalid-slicej,k)},其中,valid_start-idx和valid_end-idx分别表示VALID_INDEXCluster的起止序号,0≤valid_start_idx<valid-end-idx<Lcluster;invalid-slicej,k表示一个无效的序号区间,指示切除序号j和k之间的无效序号,valid_start-idx≤j,k≤valid_end-idx;
从结果料带REL_TAPEl={rel_start_idx,rel-end-idx,list(cut_slicej,k)}中提取有效序号信息是指赋值valid_start_idx=rel-start-idx,valid-end-idx=rel_end_idx,复制list(cut_slicej,k)中的j、k信息到list(invalid_slicej,k)中;
有效序号信息VALID_INDEXCluster上的有效序号是指位于valid_start_idx和valid_end_idx之间,但不位于list(invalid_slicej,k)的无效序号区间上的序号;其余为无效序号;
改进聚类计算时,只针对待聚类卷盘料带序列信息上被有效序号信息的有效序号标记的信息进行计算;
类簇表示为CLUSTER={clu_start_idx,clu_end_idx,clu_type0/1,clu_consisflag0/1},其中,clu_start_idx和clu_end_idx表示类簇区间,clu_start_idx表示类簇在待聚类卷盘料带上的起始序号,clu_end_idx表示类簇在待聚类卷盘料带上的结束序号,clu_end_idx和clu_start_idx的差值表示类簇长度;clu_type0/1表示类簇的类别,取值0或者1;clu_consisflag0/1表示类簇的一致性标记,即待聚类卷盘料带上类簇序号范围clu_start_idx到clu_end_idx之间的产品是否都是同样的类别,若是同样的类别,则clu_consisflag0/1取值为1,否则,clu_consisflag0/1取值为0;重置类簇表示赋值clu_start_idx=0,clu_end_idx=0,clu_type0/1=1,clu-consisflag0/1=1;
给定参数CLUSTER_PARAMM的值,CLUSTER_PARAMM表示聚类过程中,连续出现与类簇类别不同的产品个数上限;
步骤b.执行改进聚类算法,得到待聚类卷盘料带类簇列表,列表中存储残次品类簇和良品类簇
步骤b.1定义当前聚类区间的起始序号为Clusterstart,Clusterstart初始值为0,修正Clusterstart的值为VALID_INDEXCluster上第一个大于等于Clusterstart值的有效序号,当前聚类区间的结束序号为Clusterend;设置Clusterend初始值为Clusterstart值,定义当前结果类簇CLUSTERprocessing;分配一个临时卷盘料带信息TAPE_INFOCluster_Tmp,清空其信息数据;
步骤b.2确定当前结果类簇CLUSTERprocessing的全部信息,并将CLUSTERprocessing存入待聚类卷盘料带类簇列表,通过以下步骤实现:
步骤b.2.1将待聚类卷盘料带序列信息中Clusterstart序号处的信息数据值赋值给当前结果类簇CLUSTERprocessing的clu_type0/1;提取待聚类卷盘料带信息Clusterstart序号处的信息数据值存入TAPE_INFOCluster_Tmp末尾;
步骤b.2.2递增Clusterend的值,即赋值Clusterend=Clusterend+1;判断更新后的Clusterend是否为VALID_INDEXCluster上的有效序号;
若为有效序号,提取待聚类卷盘料带信息Clusterend序号处的信息数据值存入TAPE_INFOCluster_Tmp末尾,执行步骤b.2.3;
若为无效序号,则再次更新Clusterend值为:Cluxterend=Cluxterend+1,并判断更新后Clusterend是否大于等于VALID_INDEXCluster的valid_end_idx值,若大于等于valid_end_idx值,则执行步骤b.2.3,否则,再次执行步骤b.2.2;
步骤b.2.3判断Clusterend值是否大于等于VALID_INDEXCluster的valid_end_idx值;
若Clusterend值大于等于valid_end_idx值,表示已至有效序号信息末尾,则检查临时卷盘料带信息TAPE_INFOCluster_Tmp上的产品是否为同一类别产品,若为同一类别产品,赋值CLUSTERprocessing的clu_consisflag0/1为1,否则,赋值为0;赋值CLUSTERprocessing的clu_start_idx值为Clusterstart的值,赋值clu_end_idx的值为Clusterend的值,将CLUSTERprocessing存入待聚类卷盘料带类簇列表,然后转至步骤3;
若Clusterend值小于valid_end_idx值,则继续执行步骤b.2.3.1或步骤b.2.3.2
步骤b.2.3.1若临时卷盘料带信息TAPE-INFOCluster_Tmp上连续出现与CLUSTERprocessing的clu-type0/1不同的数据值的个数大于CLUSTER_PARAMM,则检查TAPE_INFOCluster_Tmp上的产品是否为同一类别产品,若为同一类别产品,赋值CLUSTERprocessing的clu-consisflag0/1为1,否则,赋值为0;赋值CLUSTERprocessing的clu_start-idx值为Clusterstart的值,赋值clu_end_idx的值为Clusterend-1,将CLUSTERprocessing存入待聚类卷盘料带类簇列表,转至步骤b.3继续计算;
步骤b.2.3.2若待聚类卷盘料带上Clusterstart和Clusterend之间连续出现与CLUSTERpro的clu_type0/1不同的数据值的个数小于等于CLUSTER_PARAMM,则转至步骤b.2.2继续计算;
步骤b.3更新Clusterstart的值为Clusterstart=Clusterend,然后,清空临时卷盘料带信息
TAPE_INFOCluster_Tmp,重置CLUSTERprocessing,然后转至步骤b.1继续计算;
步骤c.完成,输出待聚类卷盘料带类簇列表。
实现上述卷盘料带裁切方法的系统,包括:卷盘料带序列信息文件读取模块、参数设定模块、裁切方案计算模块和裁切方案输出模块。
所述的卷盘料带序列信息文件读取模块:用于打开并读取N个卷盘料带序列信息文件,N≥1,将读取的内容保存到料带序列信息为卷盘料带序列信息文件以数据序列格式保存了卷盘料带序列信息,数据序列是字符‘0’和字符‘1’组成的序列,或者是数字0和1组成的序列。
所述的参数设定模块:用于输入裁切规则参数、结果要求参数和改进聚类算法参数;
所述裁切方案计算模块:用于对卷盘料带序列信息文件读取模块读取的料带序列信息和参数设定模块设定的参数,使用所述的卷盘料带裁切优化方法,进行裁切方案计算;
所述的裁切方案输出模块:用于将裁切方案计算模块计算得到的裁切方案以图形化形式显示在计算机屏幕上,同时也输出保存至计算机磁盘文件。
采用上述技术方案所产生的有益效果在于:一种卷盘料带裁切方法可对单卷卷盘料带或多卷卷盘料带组合进行裁切方案计算,可以处理长度较长的料带,能对卷盘料带进行处理和筛选,执行裁切方案计算后,可得到多种裁切方案,对各方案进行评分排序。面对复杂的料带,实现一种卷盘料带裁切方法的系统,不需要依赖操作经验,将重复性计算交给系统完成,可以节约人工成本与时间成本,可以得出多种裁切方案,能够给出较优的裁切方案,达到充分利用卷盘料带原料的目的。
附图说明
图1是本发明一种卷盘料带裁切方法流程图;
图2是本发明卷盘料带示意图;
图3为本发明基于改进聚类算法确定当前候选结果料带裁切方案的流程图;
图4是本发明实施例1中裁切方案计算结果示意图;
图5是本发明实施例2中裁切方案计算结果示意图;
图6是本发明实施例3中裁切方案计算结果示意图;
图7是本发明实施例4中裁切方案计算结果示意图;
其中,白底方框表示良品,灰底方框表示残次品,■表示结果料带的起始产品位置,●表示结果料带的结束产品位置,×表示结果料带上需要裁掉的片段。
具体实施方式
下面结合附图对本发明具体实施方式加以详细的说明,本实施例实现卷盘料带裁切方法的系统,包括:卷盘料带序列信息文件读取模块、参数设定模块、裁切方案计算模块和裁切方案输出模块。
本实施例中,给定N(N≥1)个保存了卷盘料带序列信息的txt格式文本文件。
所述卷盘料带序列信息文件读取模块读取文本文件中的料带序列,并保存至
所述参数设定模块输入裁切方案计算方法中参数的值,包括裁切规则参数RULE_PARAMhead、RULE_PARAMsegment、RULE_PARAMcut和RULE_PARAMng;结果要求参数REL_PARAMmin_length、REL_PARAMmax_length和REL_PARAMmin_yield;以及目标排列组合个数PN
所述裁切方案计算模块基于上述料带序列信息和参数值,进行裁切方案计算,得到PN个裁切方案列表;
所述裁切方案输出模块将在计算机屏幕上用图形化的方式显示裁切方案列表中,裁切方案排序序号列表中第一个序号对应的裁切方案;并把裁切方案列表中的所有裁切方案保存为csv格式的文本文件。
以下结合附图和实施例,对本发明一种卷盘料带裁切方法进一步详细说明,具体流程图如图1所示,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
实施例1用于说明单个卷盘料带良率高于结果要求良率下限的裁切方案计算步骤;
实施例2用于说明单个卷盘料带良率低于结果要求良率下限的裁切方案计算步骤;
实施例3用于说明多个卷盘料带组合的裁切方案计算步骤;
实施例4用于说明改进聚类算法计算步骤;
实施例1
以此实施例演示N=1时,卷盘料带裁切方案计算系统实施过程。
给定一个COF卷盘料带序列信息文件,读取文件数据,得到料带数据信息:良率为89.66%,产品总数2457,良品个数2203;料带序列数据如图4所示,图中用从左往右,从上往下的方框图形序列表示料带上的产品。
设置裁切规则参数:RULE_PARAMhead=3,RULE_PARAMsegment=5,RULE_PARAMcut=15,RULE_PARAMng=5;
设置结果要求参数:RULE_PARAMmin_length=2000,RULE_PARAMmax_length=5000,R中文ULE_PARAMmin_yield=0.8;
实现卷盘料带裁切方法的系统计算得到的裁切方案可视化显示如图4所示,从给定的卷盘料带上可以裁切出一个符合裁切规则和结果要求的结果料带,包括一个个数为7的连续残次品片段和一个个数为9的连续残次品片段,这两个片段违反了“残次品规则”。结果料带良率90.2%,结果长度2441(裁掉16个),满足裁切规则和结果要求。
下面结合发明内容中的计算步骤,详解裁切方案计算方法:
步骤1.定义卷盘料带序列信息、设置裁切规则参数与结果要求参数。
本实施例中因长度较长,用附图4展示其序列数据;
步骤2.计算N个卷盘料带的目标排列组合。本实施例N=1,可不计算排列组合;
步骤3.确定输入料带,为输入料带分配一个空的输入料带裁切方案列表,用于保存此输入料带的裁切方案。
此实施例N=1,输入料带序列信息为即为/>LINPUT=2457;
步骤4.定义输入料带上的当前候选结果料带REL_TAPEcurrent,并为其分配一个当前裁切方案CUT_SCHcurrent和当前裁切方案列表。
INDEXstart=0,INDEXend=min{INDEXstart+REL_PARAMmin_length,输入料带产品个数LINPUT-1}=2000。
REL_TAPEcurrent={rel_start_idx=0,rel_end_idx=2000,list(cut_slicej,k)},此时list(cut_slicej,k)为空;
CUT_SCHcurrent={cut_start_idx=0,cut_end_idx=2000,cut_score=0,list(cut_slicej,k)},list(cut_slicej,k)为空;
当前裁切方案列表为空;
步骤5.定义为待聚类卷盘料带序列信息,VALID_INDEXCluster为待聚类卷盘料带有效序号信息,赋值CLUSTER_PARAMM=0。
步骤6.定义一个空的料带序列信息为输入料带副本,将输入料带序列信息复制到输入料带副本中,并将输入料带副本上REL_TAPEcurrent头部序号rel_start_idx之后的RULE_PARAMhead=3个产品信息修改为残次品标记0。
步骤7.计算需要在当前候选结果料带上切掉的残次品数量,得到NUMBERneed_to_cut=980。
步骤8.依据NUMBERneed_to_cut的值,确定当前候选结果料带REL_TAPEcurrent及其裁切方案CUT_SCHcurrent
因为NUMBERneed_to_cut=980>0,所以执行步骤8.3。
步骤8.3.1.清空类簇信息列表和预裁切类簇信息列表,把输入料带副本作为待聚类卷盘料带,从REL_TAPEcurrent中提取有效序号信息,进行改进聚类计算,得到包含321个类簇的类簇信息列表,挑选出长度大于等于5的类簇,存入预裁切类簇信息列表,此时,预裁切类簇信息列表中有两个类簇,分别为{23,29,0,1}和{38,46,0,1},取第一个类簇作为CLUSTERcurrent={23,29,0,1}。
步骤8.3.2.执行裁切操作,将CLUSTERcurrent从REL_TAPEcurrent上切除后,REL_TAPEcurrent={rel_start_idx=0,rel_end_idx=2000,list(cut_slicej,k)={{23,29}}}。判断此时满足头部规则、次数规则和片段规则,从预裁切类簇信息列表移除{23,29,0,1},更新NUMBERneed_to_cut=980-7=973。
转至步骤8.3.1.重新进行聚类计算,得到包含319个类簇的类簇信息列表,挑选出长度大于等于5的类簇,存入预裁切类簇信息列表,此时,预裁切类簇信息列表中有一个类簇,为{38,46,0,1},取第一个类簇作为CLUSTERcurrent={38,46,0,1}。
执行步骤8.3.2.执行裁切操作,将CLUSTERcurrent从REL_TAPEcurrent上切除后,REL_TAPEcurrent={rel_start_idx=0,rel_end_idx=2000,list(cut_slicej,k)={{23,29},{38,46}}}。判断此时满足头部规则、次数规则和片段规则,从预裁切类簇信息列表移除{38,46,0,1},更新NUMBERneed_to_cut=973-9=964。
转至步骤8.3.1.重新进行聚类计算,得到包含317个类簇的类簇信息列表,挑选出长度大于等于5的类簇,存入预裁切类簇信息列表,此时,预裁切类簇信息列表为空,转至步骤9。
步骤9.确认当前候选结果料带REL-TAPEcurrent是否满足步骤1中裁切规则和结果要求,计算裁切方案得分,更新步骤4中的当前裁切方案列表。
此时,REL_TAPEcurrent={rel_start-idx=0,rel-end-idx=2000,list(cut_slicej,k)={{23,29},{38,46}}}。良率为0.905,满足裁切规则,但不满足结果要求中的长度下限。执行步骤9.1。
步骤9.1.清空REL_TAPEcurrent和CUT_SCHcurrent的list(cut_slicej,k)。更新CLUSTER_PARAMM_Set=CLUSTER_PARAMM_Set+1=1,因为CLUSTER_PARAMM_Set=1<5,转至步骤6。
至此,完成了CLUSTER_PARAMM=0时对REL_TAPEcurrent的裁切计算(步骤6至步骤9),下面进行CLUSTER_PARAMM=1时对REL_TAPEcurrent的裁切计算。
实际上,从CLUSTER_PARAMM=0,在0-2000的序号区间内,即INDEXstart=0,INDEXend=2000,因为要裁切掉两个连续残次品料带片段,结果料带的长度肯定无法满足结果要求中的个数下限,因此CLUSTER_PARAMM=1、CLUSTER_PARAMM=2、CLUSTER_PARAMM=3、CLUSTER_PARAMM=4、CLUSTER_PARAMM=5时的步骤分析和CLUSTER_PARAMM=0类似,无法求解得到满足裁切规则和结果要求的裁切方案,为节省篇幅,此处略过CLUSTER_PARAMM=1、CLUSTER_PARAMM=2、CLUSTER_PARAMM=3、CLUSTER_PARAMM=4时的执行步骤,继续运行至CLUSTER_PARAMM=5时步骤9.1的执行分析。
步骤9.1.清空REL_TAPEcurrent和CUT_SCHcurrent的list(cut_slicej,k)。更新CLUSTER_PARAMM=CLUSTER_PARAMM+1=6,因为CLUSTER_PARAMM=6>5,执行步骤10。
步骤10.在输入料带上向后扩展当前候选结果料带REL-TAPEcurrent的序号区间,重置并更新CUT_SCHcurrent和REL-TAPEcurrent,然后继续进行求解。
清空类簇信息列表,赋值CLUSTER_PARAMM=1。把输入料带作为待聚类卷盘料带信息,构造有效序号信{valid_start_idx=2000,valid_end_idx=2457-1,list(invalid_slicej,k)},list(invalid_slicej,k)为空,进行改进聚类计算,结果存入类簇信息列表。
因类簇信息列表不为空,更新INDEXend的值INDEXend=2000+1=2001,重置并更新CUT_SCHcurrent和REL-TAPEcurrent,更新REL_TAPEcurrent的rel_start_idx=0,rel_end_idx=2001;更新CUT_SCHcurrent的cut_start_idx=0,cut_end_idx=2001;赋值CLUSTER_PARAMM=0,继续执行步骤6;
继续执行步骤6至步骤9,因结果料带的长度肯定无法满足结果要求中的个数下限,仍无法求解出满足裁切规则和结果要求的裁切方案,为节省篇幅,此处略过这些中间执行步骤的解释,直到可求解出满足裁切规则和结果要求的裁切方案之前的步骤10,继续解释如下:
步骤10.清空类簇信息列表,赋值CLUSTER_PARAMM=1。把输入料带作为待聚类卷盘料带信息,构造有效序号信息{valid_start_idx=2001,valid-end-idx=2457-1,list(invalid_slicej,k)},list(invalid_slicej,k)为空,进行改进聚类计算,结果存入类簇信息列表。
类簇信息列表不为空,且第一个类簇为{2001,2159,1,0},更新INDEXend的值INDEXend=2160,重置并更新CUT_SCHcurrent和REL_TAPEcurrent,更新REL_TAPEcurrent的rel_start_idx=0,rel_end_idx=2160;更新CUT_SCHcurrent的cut_start_idx=0,cut_end_idx=2160;赋值CLUSTER_PARAMM=0,继续执行步骤6;
至此,INDEXstart=0,INDEXend=2160,对输入料带上序号区间为0-2160的当前候选结果料带进行裁切方案求解。从跳转到步骤6执行开始。此时,REL_TAPEcurrent={rel_start_idx=0,rel_end_idx=2160,list(cut_slicej,k)={}},
步骤6.定义一个空的料带序列信息为输入料带副本,将输入料带序列信息复制到输入料带副本中,并将输入料带副本上REL_TAPEcurrent头部序号rel_start_idx之后的RULE_PARAMhead=3个产品信息修改为残次品标记0。
步骤7.计算得到NUMBERneed_to_cut=981。
步骤8.确定当前候选结果料带REL_TAPEcurrent及其裁切方案CUT_SCHcurrent
因为NUMBERneed_to_cut=981>0,所以执行步骤8.3。
步骤8.3.1.进行聚类计算,得到包含349个类簇的类簇信息列表,挑选出长度大于等于5的类簇,存入预裁切类簇信息列表,此时,预裁切类簇信息列表中有两个类簇,分别为{23,29,0,1}和{38,46,0,1},取第一个类簇作为CLUSTERcurrent={23,29,0,1}。
步骤8.3.2.执行裁切操作,将CLUSTERcurrent从REL_TAPEcurrent上切除后,REL_TAPEcurrent={rel_start_idx=0,rel_end_idx=2160,list(cut_slicej,k)={{23,29}}}。判断此时满足头部规则、次数规则和片段规则,从预裁切类簇信息列表移除{23,29,0,1},更新NUMBERneed_to_cut=981-7=974。
转至步骤8.3.1.重新进行聚类计算,得到包含347个类簇的类簇信息列表,挑选出长度大于等于5的类簇,存入预裁切类簇信息列表,此时,预裁切类簇信息列表中有一个类簇,为{38,46,0,1},取第一个类簇作为CLUSTERcurrent={38,46,0,1}。
执行步骤8.3.2.执行裁切操作,将CLUSTERcurrent从REL_TAPEcurrent上切除后,REL_TAPEcurrent={rel_start_idx=0,rel_end_idx=2160,list(cut_slicej,k)={{23,29},{38,46}}}。判断此时满足头部规则、次数规则和片段规则,从预裁切类簇信息列表移除{38,46,0,1},更新NUMBERneed_to_cut=974-9=965。
转至步骤8.3.1.重新进行聚类计算,得到包含345个类簇的类簇信息列表,挑选出长度大于等于5的类簇,存入预裁切类簇信息列表,此时,预裁切类簇信息列表为空。转至步骤9。
步骤9.确认当前候选结果料带REL_TAPEcurrent是否满足步骤1中裁切规则和结果要求,计算裁切方案得分,更新步骤4中的当前裁切方案列表。
此时,REL_TAPEcurrent={rel_start_idx=0,rel_end_idx=2160,list(cut_slicej,k)={{23,29},{38,46}}}。良率为0.905,满足裁切规则和结果要求。计算REL_TAPEcurrent评分为0.1018,将REL_TAPEcurrent中的list(cut_slicej,k)复制到CUT_SCHcurrent的list(cut_slicej,k),得到CUT_SCHcurrent={cut_start_idx=0,cut_end_idx=2160,cut_score=0.1018,list(cut_slicej,k)={{23,29},{38,46}}},将CUT_SCHcurrent记入步骤4中的当前裁切方案列表,继续执行步骤9.1。
步骤9.1.清空REL_TAPEcurrent和CUT_SCHcurrent的list(cut_slicej,k)。更新CLUSTER_PARAMM=CLUSTER_PARAMM+1=1,因为CLUSTER_PARAMM=1<5,转至步骤6。
和前文类似,步骤6至步骤9再次执行一遍,为节省篇幅,此处直接给出在CLUSTER_PARAMM=1时的执行结果:继续执行步骤6至步骤9,又可求得一个裁切方案,为
CUT_SCHcurrent={cut_start_idx=0,cut_end_idx=2160,cut_score=0.1015,list(cut_slicej,k)={{23,32},{38,46}}},对应结果料带的良率为0.906。将CUT_SCHcurrent记入步骤4中的当前裁切方案列表。
继续循环执行,将在步骤10中“类簇信息列表为空”情况下,运行至步骤11,并将得到包含65个裁切方案的当前裁切方案列表,这65个裁切方案可在输入料带上以INDEXstart=0为起始序号,裁切出65个结果料带。由于当前裁切方案列表不为空,继续执行步骤11.1。
步骤11.1.对当前裁切方案列表的65个裁切方案按评分排序,选择得分最高的裁切方案为
CUT_SCHcurrent={cut_start_idx=0,cut_end_idx=2456,cut_score=0.1730,list(cut_slicej,k)={{23,29},{38,46}}},将此裁切方案存入输入料带裁切方案列表。
更新INDEXstart的值INDEXstart=2456+1=2457,再更新INDEXend的值为min{2456+2000,2456}=2456。INDEXstart=2457≥输入料带个数2457,继续执行步骤12。
步骤12.求解得到了输入料带的输入料带裁切方案列表,其中保存了一个裁切方案CUT_SCHcurrent={cut_start_idx=0,cut_end_idx=2456,cut_score=0.1730,list(cut_slicej,k)={{23,29},{38,46}}}。可视化结果如附图4所示。
步骤13.由于本实施例N=1时,因此算法运行全部结束。
实施例2
给定一个COF卷盘料带序列信息文件,读取文件数据,得到料带数据信息:良率为52.1%,产品总数2910,良产品个数1516;料带序列数据如图5所示,图中用从左往右,从上往下的方框图形序列表示料带上的产品。
设置裁切规则参数:RULE_PARAMhead=3,RULE_PARAMsegment=5,RULE_PARAMcut=15,RULE_PARAMng=5;
设置结果要求参数:RULE_PARAMmin_length=1000,RULE_PARAMmax_length=5000,RULE_PARAMmin_yield=0.6;
实现卷盘料带裁切方法的系统计算得到的裁切方案可视化显示如附图5所示,如图中所示,从给定的这个卷盘料带上可以裁切出一个符合裁切规则和结果要求的结果料带。结果料带良率为61.2%,长度为1622,满足裁切规则和结果要求。
下面结合发明内容中的计算步骤,详解裁切方案计算方法:
步骤1.定义卷盘料带序列信息、设置裁切规则参数与结果要求参数。
步骤2.计算N个卷盘料带的目标排列组合。本实施例N=1,可不计算排列组合;
步骤3.确定输入料带,为输入料带分配一个空的输入料带裁切方案列表,用于存储此输入料带的裁切方案。
本实施例N=1,输入料带序列信息为即为/>LINPUT=2909;
步骤4.定义输入料带上的当前候选结果料带REL_TAPEcurrent,并为其分配一个当前裁切方案CUT_SCHcurrent和当前裁切方案列表。
INDEXstart=0,INDEXend=min{INDEXstart+REL_PARAMmin_length,输入料带产品个数LINPUT-1}=1000。
此时list(cut_slicej,k)为空;
list(cut_slicej,k)为空;
当前裁切方案列表为空;
步骤5.在改进聚类算法中:定义为待聚类卷盘料带序列信息,VALID_INDEXCluster为待聚类卷盘料带有效序号信息,赋值CLUSTER_PARAMM=0。
步骤6.定义一个空的料带序列信息为输入料带副本,将输入料带序列信息复制到输入料带副本中,并将输入料带副本上REL_TAPEcurrent头部序号rel_start_idx之后的RULE_PARAMhead个产品信息修改为残次品标记0,即将输入料带副本上的前3个产品修改为残次品。
步骤7.计算需要在当前候选结果料带上切掉的残次品数量,得到NUMBERneed_to_cut=-284。
步骤8.依据NUMBERneed_to_cut的值,确定当前候选结果料带REL_TAPEcurrent及其裁切方案CUT_SCHcurrent
因为NUMBERneed_to_cut=-284<0,所以执行步骤8.1,包括步骤8.1.1和步骤8.1.2。
步骤8.1.1.裁掉违反了“残次品规则”的料带片段。
清空类簇信息列表和预裁切类簇信息列表,把输入料带副本作为待聚类卷盘料带,从REL_TAPEcurrent中提取有效序号信息,执行改进聚类后,得到包含471个类簇的类簇信息列表,找出其中类簇长度大于等于5的残次品类簇,存入预裁切类簇信息列表。因预裁切类簇信息列表不为空,取其中第一个类簇{0,24,0,1}。
执行裁切操作,更新REL_TAPEcurrent={rel_start_idx=0,rel_end_idx=1000,list(cut_slicej,k)={{0,24}}},判定更新后的REL_TAPEcurrent没有违反头部规则、次数规则和片段规则,更新NUMBERneed_to_cut=-284+25=-259。
继续取预裁切类簇信息列表中的下一个类簇{30,40,0,1},再次执行裁切操作,更新REL_TAPEcurrent={rel_start_idx=0,rel_end_idx=1000,list(cut_slicej,k)={{0,24},{30,40}}},判定更新后的REL_TAPEcurrent没有违反头部规则、次数规则和片段规则,更新NUMBERneed_to_cut=-259+11=-248。
继续取预裁切类簇信息列表中的下一个类簇{46,50,0,1},再次执行裁切操作,更新REL_TAPEcurrent={rel_start_idx=0,rel_end_idx=1000,list(cut_slicej,k)={{0,24},{30,40},{46,50}}},判定更新后的REL-TAPEcurrent没有违反头部规则、次数规则和片段规则,更新NUMBERneed_to_cut=-248+15=-237。
略去部分重复的中间步骤,继续计算。
继续取预裁切类簇信息列表中的下一个类簇{500,504,0,1},再次执行步骤8.1.1.2进行裁切,更新REL_TAPEcurrent={rel_start_idx=0,rel-end-idx=1000,list(cut_slicej,k)={{0,24},{30,40},{46,50},{62,67},{89,96},{117,125},{205,209},{255,259},{271,275},{287,292},{304,311},{350,357},{404,411},{417,426},{434,442},{500,504}}}判定更新后的REL_TAPEcurrent没有违反头部规则、次数规则和片段规则,更新NUMBERneed_to_cut=-151。此时预裁切类簇信息列表为空,执行步骤8.1.2。
步骤8.1.2为了提升良率,裁切掉一些残次品。
此时NUMBERneed_to_cut=-151小于0,清空类簇信息列表和预裁切类簇信息列表,聚类后,得到类簇信息列表,从中找出残次品类簇并排序存入预裁切类簇信息列表,取预裁切类簇信息列表第一个类簇{737,745,0,1}。
执行裁切操作,更新REL_TAPEcurrent={rel_start_idx=0,rel_end_idx=1000,list(cut_slicej,k)={{0,24},{30,40},{46,50},{62,67},{89,96},{117,125},{205,209},{255,259},{271,275},{287,292},{304,311},{350,357},{404,411},{417,426},{434,442},{500,504},{753,745}}},此时REL_TAPEcurrent违反了“次数规则”,需要撤销此次裁切,即移除{753,745},REL_TAPEcurrent={rel_start_idx=0,rel_end_idx=1000,list(cut_slicej,k)={{0,24},{30,40},{46,50},{62,67},{89,96},{117,125},{205,209},{255,259},{271,275},{287,292},{304,311},{350,357},{404,411},{417,426},{434,442},{500,504}}}。取预裁切类簇列表中的下一个类簇作为CLUSTERcurrent,继续执行裁切操作。
由于REL_TAPEcurrent上已经有15次裁切({0,24}位于首部,不会出现在结果料带上,不计入裁切次数),因此,继续执行裁切后,REL_TAPEcurrent仍将违反“次数规则”,直到REL_TAPEcurrent为预裁切类簇信息列表的最后一个类簇,继续执行步骤9。
步骤9.确认当前候选结果料带REL_TAPEcurrent是否满足步骤1中裁切规则和结果要求,计算裁切方案得分,更新步骤4中的当前裁切方案列表。
此时,REL_TAPEcurrent的良率为0.497,不满足结果要求良率下限,执行步骤9.1。
步骤9.1.清空REL_TAPEcurrent和CUT_SCHcurrent的list(cut_licej,k)。更新CLUSTER_PARAMM=CLUSTER_PARAMM+1=1,因为CLUSTER_PARAMM=1<5,转至步骤6。
至此,完成了CLUSTER_PARAMM=0时对REL_TAPEcurrent的裁切计算,下面进行CLUSTER_PARAMM=1时对REL_TAPEcurrent的裁切计算。
为节省篇幅,此处略过步骤6至步骤8的执行过程,直接给出运行到步骤9的计算结果。
步骤9.确认当前候选结果料带REL_TAPEcurrent是否满足步骤1中裁切规则和结果要求,计算裁切方案得分,更新步骤4中的当前裁切方案列表。
此时,REL_TAPEcurrent的良率为0.524,不满足结果要求良率下限,执行步骤9.3。
步骤9.1.清空REL_TAPEcurrent和CUT_SCHcurrent的list(cut_licej,k)。更新CLUSTER_PARAMM=CLUSTER_PARAMM+1=2,因为CLUSTER_PARAMM=2<5,转至步骤6。
至此,完成了CLUSTER_PARAMM=1时对REL_TAPEcurrent的裁切计算。从CLUSTER_PARAMM=0和CLUSTER_PARAMM=1的计算结果可知,在0-1000的序号区间内,因为要裁切掉多个连续残次品料带片段,结果料带的长度肯定无法满足结果要求中的个数下限,因此CLUSTER_PARAMM=2、CLUSTER_PARAMM=3、CLUSTER_PARAMM=4、CLUSTER_PARAMM=5时的步骤分析和CLUSTER_PARAMM=1类似,无法求解得到满足裁切规则和结果要求的裁切方案,为节省篇幅,此处略过CLUSTER_PARAMM=2、CLUSTER_PARAMM=3、CLUSTER_PARAMM=4时的执行步骤,直接跳至CLUSTER_PARAMM=5时步骤9.1的执行分析。
步骤9.1.清空REL_TAPEcurrent和CUT_SCHcurrent的list(cut_slicej,k)。更新CLUSTER_PARAMM=CLUSTER_PARAMM+1=6,因为CLUSTER_PARAMM=6>5,执行步骤10。
步骤10.清空类簇信息列表,赋值CLUSTER_PARAMM=1。把输入料带作为待聚类卷盘料带信息,构造有效序号信息{valid_start_idx=1,valid_end_idx=1000,list(invalid_slicej,k)},list(invalid_slicej,k)为空,进行改进聚类计算,结果存入类簇信息列表;遍历搜索类簇信息列表,查找第一个其clu_end_idx值大于INDEXend=1000的类簇信息,对INDEXend进行扩展。查找成功后,将更新INDEXend值,重置并更新CUT_SCHcurrent和REL_TAPEcurrent,赋值CLUSTER_PARAMM=0,继续执行步骤6;
在本实施例中,对INDEXend的扩展直到其取值1727才会求解出满足裁切规则和结果要求的裁切方案,因此,此处略过部分中间过程,直到INDEXend=1727后转至步骤6执行。
至此,对输入料带上序号区间为0-1727的当前候选结果料带进行裁切方案求解。从跳转到步骤6执行开始。此时,
REL_TAPEcurrent={rel_start_idx=0,rel_end_idx=1727,list(cut_slicej,k)={}},
CUT_SCHcurrent={cut_start_idx=0,cut_end_idx=1727,cut_score=
0,list(cut_slicej,k)={}},CLUSTER_PARAMM=0。
步骤6.拷贝一份输入料带序列信息,称为输入料带副本,并将输入料带副本上REL_TAPEcurrent头部序号rel_start_idx之后的RULE_PARAMhead个产品信息修改为残次品标记0。即将输入料带副本上的前3个产品修改为残次品。
中间步骤略,继续运行,直到:
步骤9.1.清空REL_TAPEcurrent和CUT_SCHcurrent的list(cut_slicej,k)。更新CLUSTER_PARAMM=CLUSTER_PARAMM+1=1,因为CLUSTER_PARAMM=1<5,转至步骤6。
和前文类似,步骤6至步骤9再次执行一遍,为节省篇幅,此处直接说明在CLUSTER_PARAMM=1、2、3时,仍无法求解到裁切方案,继续执行CLUSTER_PARAMM=4时的步骤6至步骤9时,可计算得到第一个满足满足裁切规则和结果要求的REL_TAPEcurrent={rel_start_idx=320,rel_end_idx=1727,list(cut_slicej,k)={{338,341},{350,534},{605,642},{687,777},{1259,1325},{1364,1383}}}。
继续循环执行,将在步骤10中“类簇信息列表为空”的情况下,运行至步骤11,并将得到包含534个裁切方案的当前裁切方案列表。由于当前裁切方案列表不为空,继续执行步骤11.1。
步骤11.1.对当前裁切方案列表的534个裁切方案按评分排序,选择得分最高的裁切方案为
CUT_SCHcurrent={cut_start_idx=0,cut_end_idx=2735,cut_score=0.5262,list(cut_slicej,k)={{0,298},{304,324},{338,341},{350,366},{404,450},{500,534},{605,642},{687,696},{724,777},{1259,1291},{1364,1383},{1729,1749},{1939,1964},{2135,2139},{2420,2469},{2487,2510}},将此裁切方案存入输入料带裁切方案列表。
更新INDEXstart的值INDEXstart=2735+1=2736,再更新INDEXend的值为min{2736+1000,2910}=2910。INDEXstart=2736小于输入料带长度2910,转入步骤5继续求解。
继续求解,由于2736至2910之间的产品个数小于1000,可知执行至步骤11时,将执行步骤11.2,即当前裁切方案列表为空的分支。
步骤11.2.构造
CUT_SCHcurrent={cut_start_idx=2736,cut_end-idx=2909,cut_score=-1,list(cut_slicej,k)={{2736,2909}}},将此裁切方案存入输入料带裁切方案列表。更新INDEXstart的值INDEXstart=2909+1=2910,大于等于输入料带长度2910,继续执行步骤12;
步骤12.求解得到了输入料带的输入料带裁切方案列表,其中保存了两个裁切方案CUT_SCH1={cut_start_idx=0,cut_end_idx=2735,cut_score=0.5262,list(cut_slicej,k)={{0,298},{304,324},{338,341},{350,366},{404,450},{500,534},{605,642},{687,696},{724,777},{1259,1291},{1364,1383},{1729,1749},{1939,1964},{2135,2139},{2420,2469},{2487,2510}},和CUT_SCH2={cut_start_idx=2736,cut_end_idx=2909,cut_score=-1,list(cut_slicej,k)={{2736,2909}}}。
移除评分小于0的CUT_SCH2,得到最终的输入料带裁切方案列表。可视化结果如附图5所示。
步骤13.由于本实施例N=1时,因此算法运行全部结束。
实施例3
给定三个COF料带料带数据信息分别为:良率为87.2%,产品总数2000;良率为87.9%,产品总数2000;良率为87.7%,产品总数2000。
设置裁切规则参数:RULE_PARAMhead=3,RULE-PARAMsegment=5,RULE_PARAMcut=15,RULE_PARAMng=5;
设置结果要求参数:RULE_PARAMmin_length=2000,RULE-PARAMmax_length=3000,RULE_PARAMmin_yield=0.8;
实现卷盘料带裁切方法的系统计算得到的裁切方案可视化显示如附图6所示,其中,第一段结果料带良率为80.57%,长度为2991,起止序号为0和2995,其中505-509这个料带片段不满足裁切规则,需要裁切掉,用黑色×号标记了;第二段结果料带良率为80.52%,长度为2999,起止序号为2996和5999,其中4070-4074这个料带片段不满足裁切规则,需要裁切掉,用黑色×号标记了。
下面结合发明内容中的计算步骤,详解裁切方案计算方法:
步骤1.定义卷盘料带序列信息、设置裁切规则参数与结果要求参数。
步骤2.计算N个卷盘料带的目标排列组合。
本实施例N=3,共有3!=6种排列组合方式:{1,2,3},{1,3,2},{2,1,3},{2,3,1},{3,2,1},{3,1,2};分别计算上述6种排列组合的分段良率方差得到:{1,2,3}=0.00029861927,{1,3,2}=0.0005093217,{2,1,3}=0.0003323555,{2,3,1}=0.000346601,{3,2,1}=0.0002630353,{3,1,2}=0.000519216061;
对良率方差值从大到小进行排序,得到对应排列组合{PER1={3,1,2},PER2=1,3,2,PER3={2,3,1},PER4={2,1,3},PER5={1,2,3},PER6={3,2,1};
取前PN=4个排列组合定义为目标排列组合,记为{PER1={3,1,2},PER2={1,3,2},PER3={2,3,1},PER4={2,1,3}}。
步骤3.确定输入料带,为输入料带分配一个空的输入料带裁切方案列表,用于存储此输入料带的裁切方案。
本实施例N=3,先取目标排列组合中的第一个排列组合{3,1,2},按照此顺序对3个卷盘料带序列信息首尾串接,得到合并料带,将此合并料带记为输入料带,可视化显示如图6所示,
得到输入料带后,后续步骤的执行和实施例1和实施例2类似,不再赘述。
实施例4
本实施例用于解释改进聚类算法计算过程。
步骤a.给定待聚类卷盘料带序列信息和有效序号信息。
本实施例中,给定序列信息
TAPE_INFOCluster={1,0,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,1,0,1,1,1,1},序列长度Lcluster=23。
本实施例有效序号信息VALID_INDEXCluster={valid_start_idx=0,valid_end_idx=22,list(invalid_slicej,k)={10,16}},即整个序列信息中,从序号10开始到序号16为无效区域,不参加聚类计算。
给定参数CLUSTER_PARAMM=1。
步骤b.执行改进聚类算法,得到待聚类卷盘料带类簇列表。
步骤b.1:定义Clusterstart=0,Clusterend=Clusterstart。定义CLprocessing。分配TAPE_INFOCluster_Tmp
步骤b.2:确定当前结果类簇CLUSTERprocessing的全部信息,并将CLUSTERprocessing存入待聚类卷盘料带类簇列表:
步骤b.2.1:赋值CLUSTERprocessing的clu_type0/1=1,因为TAPE_INFOCluster序列序号0处的值为1;提取待聚类卷盘料带信息Clusterend序号处的信息值存入TAPE_INFOCluster_Tmp末尾,此时,TAPE_INFOCluster_Tmp={1};
步骤b.2.2:赋值Clusterend=Clusterend+1=1,为VALID_INDEXCluster上的有效序号,提取待聚类卷盘料带信息Clusterend序号处的信息值存入TAPE_INFOCluster_Tmp末尾,此时TAPE_INFOCluster_Tmp={1,0}。执行步骤b.2.3。
步骤b.2.3:Clusterend=1,小于22,同时因为连续不同值个数为1,执行步骤步骤b.2.3.2,继而执行步骤b.2.2。
步骤b.2.2:赋值Clusterend=Clusterend+1=2,为VALID_INDEXCluster上的有效序号,提取待聚类卷盘料带信息Clusterend序号处的信息值存入TAPE_INFOCluster_Tmp末尾,此时TAPE_INFOCluster_Tmp={1,0,1},执行步骤b.2.3。
步骤b.2.3:Clusterend=2,小于22,同时因为连续不同值个数为1,执行步骤步骤b.2.3.2,继而执行步骤b.2.2。
可以预见,步骤b.2.2和步骤b.2.3的执行将重复,直到:
步骤b.2.2赋值Clusterend=Clusterend+1=9,是VALID_INDEXcluster上的有效序号,提取待聚类卷盘料带信息Clusterend序号处的信息值存入TAPE_INFOCluster_Tmp末尾,此时TAPE_INFOCluster_Tmp={1,0,1,1,1,1,1,1,0,0}。执行步骤b.2.3。
步骤b.2.3:Clusterend=9,小于22,同时因为连续不同值个数为2,大于CLUSTER_PARAMM=1,执行步骤b.2.3.1。
步骤b.2.3.1:TAPE_INFOCluster_Tmp上的产品不是同一类别产品,赋值CLUSTERprocessing的clu_consisflag0/1=0,clu_start_idx=0,clu_end_idx=9-1=8,此时,CLUSTERprocessing={clu_start_idx=0,clu_end_idx=8,clu_type0/1=1,clu_consisflag0/1=0},将CLUSTERprocessing存入待聚类卷盘料带类簇列表,继续执行步骤b.3。
步骤b.3更新Clusterstart的值为Clusterstart=Clusterend=9,更新Clusterend=9,清空TAPE_INFOCluster_Tmp,重置CLUSTERprocessing,转至步骤b.1。
至此,得到一个类簇结果,继续计算:
步骤b.1修正Clusterstart的值为VALID_INDEXCluster上第一个大于等于Clusterstart值的有效序号Clusterstart=9,Clusterend=9。定义CLUSTERprocessing。分配TAPE_INFOCluster _Tmp
步骤b.2确定当前结果类簇CLUSTERprocessing的全部信息,并将CLUSTERprocessing存入待聚类卷盘料带类簇列表:
步骤b.2.1赋值CLUSTERprocessing的clu_type0/1=0,因为TAPE_INFOCluster序列序号9处的值为0;提取待聚类卷盘料带信息Clusterend序号处的信息值存入TAPE_INFOCluster_Tmp末尾,此时,TAPE_INFOCluster_Tmp={0};
步骤b.2.2赋值Clusterend=Clusterend+1=10,不是VALID_INDEXCluster上的有效序号,再次更新Clusterend值为:Clusterend=Clusterend+1=11,未到有效区间末尾,继续Clusterend值为:Clusterend=Clusterend+1=12,如此循环,直到更新Clusterend值为:Clusterend=Clusterend+1=17,为有效序号,提取料带信息至TAPE_INFOCluster_Tmp={0,1},执行步骤b.2.3。
步骤b.2.3Clusterend=17,小于22,同时因为连续不同值个数为1,执行步骤步骤b.2.3.2,继而执行步骤b.2.2。
步骤b.2.2赋值Clusterend=Clusterend+1=18,为VALID_INDEXCluster上的有效序号,提取待聚类卷盘料带信息Clusterend序号处的信息值存入TAPE_INFOCluster_Tmp末尾,此时TAPE_INFOCluster_Tmp={0,1,0}。执行步骤b.2.3。
步骤b.2.3Clusterend=18,小于22,同时因为连续不同值个数为1,执行步骤步骤b.2.3.2,继而执行步骤b.2.2。
可以预见,步骤b.2.2和步骤b.2.3的执行将重复,直到:
步骤b.2.2赋值Clusterend=Clusterend+1=20,是VALID_INDEXCluster上的有效序号,提取待聚类卷盘料带信息Clusterend序号处的信息值存入TAPE_INFOCluster_Tmp末尾,此时TAPE_INFOCluster_Tmp={0,1,0,1,1}。执行步骤b.2.3。
步骤b.2.3Clusterend=20,小于22,同时因为连续不同值个数为2,大于CLUSTER_PARAMM=1,执行步骤b.2.3.1。
步骤b.2.3.1TAPE_INFOCluster_Tmmp上的产品不是同一类别产品,赋值CLUSTERprocessing的clu_consisflag0/1=0,clu_start_idx=9,clu_end_idx=20-1=19,此时,CLprocessing={clu_start_idx=9,clu_end_idx=19,clu_type0/1=0,clu_consisflag0/1=0},将CLUSTERprocessing存入待聚类卷盘料带类簇列表,继续执行步骤b.3。
步骤b.3更新Clusterstart的值为Clusterstart=20,更新Clusterend=20,清空TAPE_INFOCluster_Tmp,重置CLUSTERprocessing,转至步骤b.2。
至此,又得到一个类簇结果,继续计算。
继续进行聚类步骤,最后待聚类卷盘料带类簇列表中有三个类簇,分别为:CLUSTER1={clu_start_idx=0,clu_end_idx=8,clu_type0/1=1,clu_consisflag0/1=0}CLUSTER2={clu_start_idx=9,clu_end_idx=19,clu_type0/1=0,clu_consisflag0/1=0}CLUSTER3={clu_start_idx=20,clu_end_idx=22,clu_type0/1=1,clu_consisflag0/1=1}
可视化结果如图7所示:
第一行为待聚类料带可视化图,灰色背景为残次品,白色背景为良品;
第二行为聚类结果可视化图,‘@’标记对应位置的序号区间为第一个结果类簇;’#’标记对应位置的序号区间为第二个结果类簇;’*’标记对应位置的序号区间为第三个结果类簇;深灰色背景标记对应序号区间为无效区间。

Claims (10)

1.一种卷盘料带裁切方法,其特征在于,包括如下步骤:
步骤1:对N个卷盘料带进行裁切,将N个卷盘料带序列信息表示为 1≤K≤N;其中,0表示残次品,1表示良品;K表示第K个卷盘料带,i表示在卷盘料带上的第i个产品的序号,取值范围0≤i<LK,LK表示第K个卷盘料带上的总产品个数;并设置裁切规则和结果要求;
步骤2:对N个卷盘料带进行排列组合得到N!个料带组合方式,将N!个组合方式的卷盘料带首尾串接,得到N!个合并料带;在N!个合并料带上分别执行分段良率方差算法,得到每个合并料带的良率方差值VARtape,将方差值从大到小排列,取最大的前PN个排列组合后的合并料带为目标合并料带,进行裁切方案计算;
步骤3:确定输入料带,为输入料带分配一个空的输入料带裁切方案列表,用于保存此输入料带的裁切方案CUT_SCHl,并定义与CUT_SCHl对应的结果料带为REL_TAPEl
步骤4:在输入料带上定义当前候选结果料带为REL_TAPEcurrent,为其分配一个当前裁切方案列表,用于保存当前裁切方案CUT_SCHcurrent,并为当前候选结果料带和当前裁切方案赋初始值;
步骤5:定义改进聚类算法中的参数,包括:为待聚类卷盘料带序列信息,VALID_INDEXCluster为待聚类卷盘料带有效序号信息,CLUSTER为类簇,CLUSTER_PARAMM(0≤CLUSTER_PARAMM≤RULE_PARAMsegment)为赋值参数,初始值为0;
步骤6:定义一个空的料带序列信息为输入料带副本,将输入料带序列信息复制到输入料带副本中,并将输入料带副本上当前候选结果料带的头部序号rel_start_idx之后的RULE_PARAMhead个产品信息修改为残次品标记0;
步骤7:计算需要在当前候选结果料带上切掉的残次品数量,定义为拟裁切掉产品数量NUMBERneed_to_cut
步骤8:依据NUMBERneed_to_cut的值,基于改进聚类算法确定当前候选结果料带REL_TAPEcurrent及其裁切方案CUT_SCHcurrent
步骤9:确认当前候选结果料带REL_TAPEcurrent是否满足步骤1所述裁切规则和结果要求;若满足则对REL_TAPEcurrent执行结果料带评分,将评分赋值给裁切方案CUT_SCHcurrent,将更新后的裁切方案CUT_SCHcurrent记入步骤4中的当前裁切方案列表,转至执行步骤9.1;若不满足则直接执行步骤9.1;
步骤9.1:清空REL_TAPEcurrent和CUT_SCHcurrent的list(cut_slicej,k),更新CLUSTER_PARAMM的值为CLUSTER_PARAMM=CLUSTER_PARAMM+1;若更新值后的CLUSTER_PARAMM≤RULE_PARAMsegment,转入步骤6;若更新值后的CLUSTER_PARAMM>RULE_PARAMsegment,执行步骤10;
步骤10:在输入料带上向后扩展当前候选结果料带REL_TAPEcurrent的序号区间,重置并更新CUT_SCHcurrent和REL_TAPEcurrent,然后继续进行求解;
步骤11:从当前裁切方案列表中确定输入料带上从序号INDEXstart至料带末尾之间的最佳裁切方案,然后更新INDEXstart值,重置后更新CUT_SCHcurrent和REL_TAPEcurrent,继续进行求解;
步骤12:求解得到的输入料带裁切方案列表中存储了一个或多个裁切方案,在输入料带上依次执行这些裁切方案,得到对应的一个或多个结果料带;
步骤13:反复执行步骤3至步骤11,直到求解得到PN个排列组合下所得输入料带的PN个输入料带裁切方案列表为止。
2.根据权利要求1所述的一种卷盘料带裁切方法,其特征在于:所述裁切规则包括头部规则、次数规则、残次品规则、片段规则,具体如下:
头部规则:若结果料带头部连续残次品的个数大于上限值RULE_PARAMhead,则判定结果料带违反了头部规则,RULE_PARAMhead≥0;
次数规则:若结果料带上的裁切次数大于上限值RULE_PARAMcut,则判定结果料带违反了次数规,RULE_PARAMcut>0;
残次品规则:若结果料带上的连续残次品个数大于上限值RULE_PARAMng,则判定结果料带违反了残次品规则,RULE_PARAMng≥0;
片段规则:若结果料带上两个相邻裁切位置之间产品个数小于下限值RULE_PARAMsegment,则判定结果料带违反了片段规则,RULE_PARAMsegment≥0。
3.根据权利要求1所述的一种卷盘料带裁切方法,其特征在于:所述结果要求包括:(1)结果料带产品个数大于下限值REL_PARAMmin_length
(2)结果料带产品个数小于上限值REL_PARAMmax_length
(3)结果料带良率大于等于下限值REL_PARAMmin_yield
4.根据权利要求1所述的一种卷盘料带裁切方法,其特征在于:所述步骤2中分段良率方差算法的过程如下:
步骤2.1:设LINPUT为N个卷盘料带产品个数的和,计算分段产品个数Lsegment,计算公式如下:
步骤2.2:依次从合并料带上取Lsegment个产品,构造一个临时分段料带计算临时分段料带良率,并将良率存入分段良率列表;
步骤2.3:以分段良率列表中的良率数据为输入,计算良率数据的方差。
5.根据权利要求1所述的一种卷盘料带裁切方法,其特征在于:所述步骤7的过程如下:
步骤7.1:判断前候选结果料带良率是否大于等于下限值REL_PARAMmin_yield,若满足则执行步骤7.2,否则执行步骤7.3;
步骤7.2:计算拟裁切掉产品数量NUMBERneed_to_cut,公式如下:
步骤7.3:计算拟裁切掉产品数量NUMBERneed_to_cut,公式如下:
其中,OK_CNT表示当前候选结果料带上的良品个数,NG_CNT表示当前候选结果料带上的残次品个数。
6.根据权利要求1所述的一种卷盘料带裁切方法,其特征在于:所述步骤8的过程如下:
步骤8.1:分配一个类簇信息列表和一个预裁切类簇信息列表,判断NUMBERneed_to_cut的值是否小于0,若满足则执行步骤8.2,否则执行步骤8.3:
步骤8.2:若NUMBERneed_to_cut小于0,则在裁切掉违反了头部规则、次数规则和片断规则的料带片断的基础上,还为了提升良率,裁切掉部分残次品;
步骤8.3:若NUMBERneed_to_cut大于等于0,仅裁切掉违反了头部规则、次数规则和片断规则的料带片断。
7.根据权利要求1所述的一种卷盘料带裁切方法,其特征在于:所述改进聚类算法的过程如下:
步骤a:设置待聚类卷盘料带序列信息和有效序号信息
定义待聚类卷盘料带有效序号信息:
VALID_INDEXCluster={valid_start_idx,valid_end_idx,list(invalid_slicej,k)},其中,valid_start_idx和valid_end_idx分别表示VALID_INDEXCluster的起止序号,0≤valid_start_idx<valid_end_idx<Lcluster;invalid_slicej,k表示一个无效的序号区间,指示切除序号j和k之间的无效序号,valid_start_idx≤j,k≤valid_end_idx;
从结果料带REL_TAPEl={rel_start_idx,tel_end_idx,list(cut_slicej,k)}中提取有效序号信息是指赋值valid_start_idx=rel_start_idx,valid_end_idx=rel_end_idx,复制list(cut_slicej,k)中的j、k信息到list(invalid_slicej,k)中;
有效序号信息VALID_INDEXCluster上的有效序号是指位于valid_start_idx和valid_end_idx之间,但不位于list(invalid_slicej,k)的无效序号区间上的序号;其余为无效序号;
改进聚类计算时,只针对待聚类卷盘料带序列信息上被有效序号信息的有效序号标记的信息进行计算;
类簇表示为CLUSTER={clu_start_idx,clu_end_idx,clu__type0/1,clu_consisflag0/1},其中,clu_start_idx和clu_end_idx表示类簇区间,clu_start_idx表示类簇在待聚类卷盘料带上的起始序号,clu_end_idx表示类簇在待聚类卷盘料带上的结束序号,clu_end_idx和clu_start_idx的差值表示类簇长度;clu_type0/1表示类簇的类别,取值0或者1;clu_consisflag0/1表示类簇的一致性标记,即待聚类卷盘料带上类簇序号范围clu_start_idx到clu_end_idx之间的产品是否都是同样的类别,若是同样的类别,则clu_consisflag0/1取值为1,否则,clu_consisflag0/1取值为0;重置类簇表示赋值clu_start_idx=0,clu_end_idx=0,clu_type0/1=1,clu_consisflag0/1=1;
给定参数CLUSTER_PARAMM的值,CLUSTER_PARAMM表示聚类过程中,连续出现与类簇类别不同的产品个数上限;
步骤b:执行改进聚类算法,得到待聚类卷盘料带类簇列表,列表中存储残次品类簇和良品类簇;
步骤b.1:定义当前聚类区间的起始序号为Clusterstart,Clusterstart初始值为0,修正Clusterstart的值为VALID_INDEXCluster上第一个大于等于Clusterstart值的有效序号,当前聚类区间的结束序号为Clusterend;设置Clusterend初始值为Clusterstart值,定义当前结果类簇CLUSTERprocessing;分配一个临时卷盘料带信息TAPE_INFOCluster_Tmp,清空其信息数据;
步骤b.2:确定当前结果类簇CLUSTERprocessing的全部信息,并将CLUSTERprocessing存入待聚类卷盘料带类簇列表,通过以下步骤实现:
步骤b.2.1:将待聚类卷盘料带序列信息中Clusterstart序号处的信息数据值赋值给当前结果类簇CLUSTERprocessing的clu_type0/1;提取待聚类卷盘料带信息Clusterstart序号处的信息数据值存入TAPE_INFOCluster_Tmp末尾;
步骤b.2.2:递增Clusterend的值,即赋值Clusterend=Clusterend+1;判断更新后的Clusterend是否为VALID_INDEXCluster上的有效序号;
若为有效序号,提取待聚类卷盘料带信息Clusterend序号处的信息数据值存入TAPE_INFOCluster_Tmp末尾,执行步骤b.2.3;
若为无效序号,则再次更新Clusterend值为:Clusterend=Clusterend+1,并判断更新后Clusterend是否大于等于VALID_INDEXCluster的valid_end_idx值,若大于等于valid_end_idx值,则执行步骤b.2.3,否则,再次执行步骤b.2.2;
步骤b.2.3:判断Clusterend值是否大于等于VALID_INDEXCluster的valid_end_idx值;
若Clusterend值大于等于valid_end_idx值,表示已至有效序号信息末尾,则检查临时卷盘料带信息TAPE_INFOCluster_Tmp上的产品是否为同一类别产品,若为同一类别产品,赋值CLUSTERprocessing的clu_consisflag0/1为1,否则,赋值为0;赋值CLUSTERprocessing的clu_start_idx值为Clusterstart的值,赋值clu_end_idx的值为Clusterend的值,将CLUSTERprocessing存入待聚类卷盘料带类簇列表,然后转至步骤c;
若Clusterend值小于valid_end_idx值,则继续执行步骤b.2.3.1或步骤b.2.3.2;
步骤b.2.3.1:若临时卷盘料带信息TAPE_INFOCluster_Tmp上连续出现与CLUSTERprocessing的clu_type0/1不同的数据值的个数大于CLUSTER_PARAMM,则检查TAPE_INFOCluster_Tmp上的产品是否为同一类别产品,若为同一类别产品,赋值CLUSTERprocessing的clu_consisflag0/1为1,否则,赋值为0;赋值CLUSTERprocessing的clu_start_idx值为Clusterstart的值,赋值clu_end_idx的值为Clusterend_1,将CLUSTERprocessing存入待聚类卷盘料带类簇列表,转至步骤b.3继续计算;
步骤b.2.3.2:若待聚类卷盘料带上Clusterstart和Clusterend之间连续出现与CLUSTERpro的clu_type0/1不同的数据值的个数小于等于CLUSTER_PARAMM,则转至步骤b.2.2继续计算;
步骤b.3:更新Clusterstart的值为Clusterstart=Clusterend,然后,清空临时卷盘料带信息TAPE_INFOCluster_Tmp,重置CLUSTERprocessing,然后转至步骤b.1继续计算;
步骤c:完成,输出待聚类卷盘料带类簇列表。
8.根据权利要求1所述的一种卷盘料带裁切方法,其特征在于:所述步骤9中结果料带评分的计算方法如下:
Scoretotal=α*Scoreyield+(1-α)*ScorelengthScoreyield
=(Yieldresult-REL_PARAMmin_yield)/REL_PARAMmin_yieldScorelength
=(Lengthresult-REL_PARAMmin_length)/REL_PARAMmin_length
其中,Scoretotal表示待评分结果料带的评分,由良率得分Scoreyield和长度得分Scorelength组成,参数α表示评分权重;Yieldresult表示待评分结果料带的良率,REL_PARAMmin_yield表示良率下限;Lengthresult表示待评分结果料带的产品个数,REL_PARAMmin_length表示结果料带产品个数限制下限值。
9.根据权利要求1所述的一种卷盘料带裁切方法,其特征在于:所述步骤11的过程如下:
扩展方法为:更新输入料带上用于标记当前候选结果料带末尾产品序号的INDEXend
清空类簇信息列表,赋值CLUSTER_PARAMM=1,把输入料带作为待聚类卷盘料带,构造有效序号信息VALID_INDEXCluster其中valid_start_idx=INDEXend,valid_end_idx=LINPUT-1,list(invalid_slicej,k)为空,进行改进聚类计算,结果存入类簇信息列表;
若类簇信息列表不为空,将INDEXend的值更新为类簇信息列表第一个类簇的clu_end_idx值+1,重置CUT_SCHcurrent和REL_TAPEcurrent,更新REL_TAPEcurrent的rel_start_idx值为INDEXstart,rel_end_idx值为INDEXend值;更新CUT_SCHcurrent的cut_start_idx值为INDEXstart,cut_end_idx值为INDEXend值;赋值CLUSTER_PARAMM=0,继续执行步骤6;
若类簇信息列表为空,继续执行步骤11。
10.实现权利要求1所述的一种卷盘料带裁切方法的系统,其特征在于,包括:卷盘料带序列信息文件读取模块、参数设定模块、裁切方案计算模块和裁切方案输出模块;
所述的卷盘料带序列信息文件读取模块:用于打开并读取N个卷盘料带序列信息文件,N≥1,将读取的内容保存到料带序列信息为卷盘料带序列信息文件以数据序列格式保存了卷盘料带序列信息,数据序列是字符‘0’和字符‘1’组成的序列,或者是数字0和1组成的序列;
所述的参数设定模块:用于输入裁切规则参数、结果要求参数和改进聚类算法参数;
所述裁切方案计算模块:用于对卷盘料带序列信息文件读取模块读取的料带序列信息和参数设定模块设定的参数,使用所述的卷盘料带裁切优化方法,进行裁切方案计算;
所述的裁切方案输出模块:用于将裁切方案计算模块计算得到的裁切方案以图形化形式显示在计算机屏幕上,同时也输出保存至计算机磁盘文件。
CN202010909817.6A 2020-09-02 2020-09-02 一种卷盘料带裁切方法及系统 Active CN112016757B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010909817.6A CN112016757B (zh) 2020-09-02 2020-09-02 一种卷盘料带裁切方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010909817.6A CN112016757B (zh) 2020-09-02 2020-09-02 一种卷盘料带裁切方法及系统

Publications (2)

Publication Number Publication Date
CN112016757A CN112016757A (zh) 2020-12-01
CN112016757B true CN112016757B (zh) 2023-10-27

Family

ID=73516491

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010909817.6A Active CN112016757B (zh) 2020-09-02 2020-09-02 一种卷盘料带裁切方法及系统

Country Status (1)

Country Link
CN (1) CN112016757B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109968036A (zh) * 2019-02-22 2019-07-05 龙杰(苏州)精密工业有限公司 连续料带式金属件高效电镀裁切一体流水线
CN209954194U (zh) * 2019-02-22 2020-01-17 龙杰(苏州)精密工业有限公司 连续料带式金属件高效电镀裁切一体流水线

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107392402B (zh) * 2017-09-11 2018-08-31 合肥工业大学 基于改进禁忌搜索算法的生产运输协同调度方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109968036A (zh) * 2019-02-22 2019-07-05 龙杰(苏州)精密工业有限公司 连续料带式金属件高效电镀裁切一体流水线
CN209954194U (zh) * 2019-02-22 2020-01-17 龙杰(苏州)精密工业有限公司 连续料带式金属件高效电镀裁切一体流水线

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
数控铣床图形自动编程系统设计中DXF文件图元信息读取技术研究;李洪声;;科学技术与工程(第33期);全文 *
自动铺带技术在航空复合材料制造领域的应用;郑广强;吴文贵;;航空制造技术(第15期);全文 *

Also Published As

Publication number Publication date
CN112016757A (zh) 2020-12-01

Similar Documents

Publication Publication Date Title
JP7545498B2 (ja) 欠陥板のネスティングおよびシャー切断のための前処理、レイアウトおよび生産最適化方法
JP4757729B2 (ja) 製造負荷予測装置、製造負荷予測方法、コンピュータプログラム、及びコンピュータ読み取り可能な記憶媒体
CN112016757B (zh) 一种卷盘料带裁切方法及系统
CN108876129B (zh) 一种板坯的组板方法及装置
JP6115526B2 (ja) 製品採取計画作成方法および製品採取計画作成装置
CN108588323B (zh) 一种炼钢连铸工业过程优化控制方法
US20130050223A1 (en) Method of Fine-Tuning Chinese Characters according to Font Size and Chinese Character Fine-Tuning System thereof
CN102982624B (zh) 一种pos机交易中心基于tlv格式数据的打印方法
CN102495955B (zh) 用于热连轧纵切机组的钢卷数据跟踪方法
JP5370060B2 (ja) 生産計画作成方法、生産計画作成装置、及びコンピュータプログラム
WO2018079647A1 (ja) 工程管理装置、工程管理方法および記録媒体
JP3950237B2 (ja) 製造計画作成方法及び記録媒体
CN111242500B (zh) 一种存在新工件插入的模糊柔性作业车间调度方法
JP2019098350A (ja) 計画作成装置、計画作成方法、およびプログラム
JP2003140727A (ja) 条鋼製品の生産方法
JP2010224612A (ja) 画像処理装置、画像読取装置、画像形成装置及びプログラム
CN118410958A (zh) 一种降低浪费的柱状材料裁切方法
JP2023083089A (ja) 計画立案装置、計画立案方法及び制御プログラム
JP2847276B2 (ja) コイル状製品の納期管理システム
CN120279764A (zh) 一种基于网格的空管系统显示界面目标标牌区域编排方法
JP2748834B2 (ja) 薄板切断装置を制御するための制御装置
CN115509183A (zh) 钢企余坯智能改钢与多产线合同匹配装置与方法
CN118095818A (zh) 一种制程制定方法及存储介质
CN118917590A (zh) 一种用于聚酯切片产品的生产计划调度优化方法、系统
CN118988993A (zh) 一种热轧卷取导尺的压力控制方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant