一种一维套料方法、装置及计算机可读存储介质与流程

文档序号:15934253发布日期:2018-11-14 02:08阅读:325来源:国知局

本发明涉及管件加工领域,特别是涉及一种一维套料方法、装置及计算机存储介质。

背景技术

套料是机械加工行业、船舶制造等行业常用的方法,是指下料的时候,为了减少对原料的浪费,在原料上安排了较大或较长的下料后,再分配一些较小的下料,从而在有限的原料上尽可能分配多的下料进行生产,提高对原料的利用率,降低成本,节约资源。

目前在实际生产过程中,套料方案由工人自行计算得到。工人根据经验和简单的对比,尽量保证单根原料管材产生的废料最少。这相当于一种“贪心”策略,在多根原料下料时,分别保证每根原料都浪费最少来保证全部原料浪费最少,即以局部最优解逼近全局最优解。这种人工“贪心”的计算方法并不能保证整体的套料方案是最优的,即无法证明局部最优解能收敛到全局最优解。

因此,如何从整体角度考虑套料方法,保证在一套原料的分配方案中尽可能达到全局最优解,是本领域技术人员需要解决的技术问题。



技术实现要素:

本发明的目的是提供一种一维套料方法、装置及计算机存储介质,用于从整体角度考虑套料方法,保证在一套原料的分配方案中尽可能达到全局最优解。

为解决上述技术问题,本发明提供一种一维套料方法,包括:

以原料为个体,以下料为基因,在待选基因列表中不重复地选择基因以生成所述个体的基因编码直至将所有基因选择完毕,以所有获得所述基因编码的个体作为初始种群;

以所述初始种群作为父代种群,按预设规则对所述父代种群进行交叉运算,并删除基因个数为零的个体,直至获得满足预设条件的子代种群;

其中,所述原料为未经切割的管材;所述下料为需要切割产生的管材;所述待选基因列表为由未被选择的基因组成的列表;所述个体适应度为个体利用率;所述个体利用率为一个所述原料上分配的所有下料的长度之和占所述原料的长度的比值。

可选地,所述在待选基因列表中不重复地选择基因以生成所述个体的基因编码直至将所有基因选择完毕,具体包括:

计算个体的预设基因编码长度;所述预设基因编码长度为一个所述个体上能够携带的基因数量的最大值;

在所述待选基因列表中不重复地选择基因以生成基因编码,当所述基因编码的长度大于所述预设基因编码长度时,舍弃所述基因编码;当所述基因编码的长度小于所述预设基因编码长度时,在所述基因编码中随机插入空格以使所述基因编码的长度等于所述预设基因编码长度;

判断所述待选基因列表中是否存在未被选择的基因,如果是,则返回所述在所述待选基因列表中不重复地选择基因生成基因编码的步骤。

可选地,所述在待选基因列表中不重复地选择基因以生成所述个体的基因编码,具体包括:

对于一个待编码个体,先选择所述待选基因列表中代表的下料长度最大的基因进行编码,并按照代表的下料长度递减的顺序从所述待选基因列表中选择基因进行编码;

当选中的基因所代表的下料无法放置于所述待编码个体代表的原料时,再选择所述待选基因列表中代表的下料长度最小的基因继续进行编码,并按照代表的下料长度递增的顺序从所述待选基因列表中选择基因进行编码;

当选中的基因所代表的下料均无法放置于所述待编码个体代表的原料时,结束对所述待编码个体的编码。

可选地,所述在待选基因列表中不重复地选择基因以生成所述个体的基因编码,具体包括:

对于一个待编码个体,从所述待选基因列表中代表的下料长度最大的基因起进行编码,按照代表的下料长度递减的顺序从所述待选基因列表中选择基因进行编码;

当选中的基因所代表的下料无法放置于所述待编码个体代表的原料时,结束对所述待编码个体的编码。

可选地,所述以基因为单位对所述父代种群进行交叉运算以使进行交叉运算的基因向个体适应度更高的个体移动,具体包括:

将所述父代种群中的个体按所述个体适应度递减的方式进行排序,得到个体队列;

在第一父代个体中选择第一基因,在第二父代个体中选择第二基因;所述第一父代个体和所述第二父代个体为所述个体队列中相邻的两个个体,且所述第一父代个体的个体适应度大于所述第二父代个体的个体适应度;

当所述第二基因所代表的下料的长度大于所述第一基因所代表的下料的长度且所述第二基因代表的下料的长度小于所述第一父代个体的余料的长度时,交换所述第一基因和所述第二基因的位置;其中,所述余料为个体所代表的原料的长度与所述个体上所有基因所代表的下料的长度的差。

可选地,所述满足预设条件的子代种群具体为个体适应度均值大于预设的阈值的子代种群;

其中,所述个体适应度均指为种群中所有个体的个体适应度之和与所述种群的个体数量的比值。

可选地,所述满足预设条件的子代种群具体为在进行预设次数的交叉计算后的得到的子代种群。

可选地,在所述在待选基因列表中不重复地选择基因以生成所述个体的基因编码直至将所有基因选择完毕之前,还包括:

按代表的下料的长度递增的顺序对各所述基因进行排序。

为解决上述技术问题,本发明还提供一种一维套料装置,包括:

存储器,用于存储指令,所述指令包括上述任意一项所述的一维套料方法的步骤;

处理器,用于执行所述指令。

为解决上述技术问题,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上述任意一项所述的一维套料方法的步骤。

本发明所提供的一维套料方法,以原料为个体,以下料为基因,在各所述基因中不重复地选择基因,生成所述个体的基因编码直至将所有基因选择完毕,以所有获得基因编码的个体作为初始种群,从而获得了将所有下料分配完毕的一个整体分配方案。再以初始种群作为父代种群,按预设规则对父代种群进行交叉运算,在运算过程中可以使进行交叉运算的基因向个体适应度更高的个体移动,在这个过程中就会出现基因个数为零的个体,删除基因个数为零的个体,相当于节省了整根原料,如此循环直至获得满足预设条件的子代种群。相比于现有技术中的人工“贪心”算法,从全局角度大幅度提高了对原料的利用率,而且通过不重复地选择基因进行编码,排除了产生基因重复的非法解,大大简化了运算。因此本发明提供的方案更能获得一维套料问题的全局最优解,且易于计算,更符合车间生产需要。本发明还提供一种一维套料装置及计算机可读存储介质,具有上述有益效果。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种一维套料方法的流程图;

图2为本发明实施例提供的第一种步骤s10中生成基因编码的具体实施方式的流程图;

图3为本发明实施例提供的第二种步骤s10中生成基因编码的具体实施方式的流程图;

图4为本发明实施例提供的第三种步骤s10中生成基因编码的具体实施方式的流程图;

图5为本发明实施例提供的一种步骤s11中对父代种群进行交叉运算的具体实施方式的流程图;

图6为本发明实施例提供的一种基于图5的交叉运算的示意图;

图7为本发明实施例提供的一种一维套料装置的结构示意图。

具体实施方式

本发明的核心是提供一种一维套料方法、装置及计算机存储介质,用于从整体角度考虑套料方法,保证在一套原料的分配方案中尽可能达到全局最优解。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例提供的一种一维套料方法的流程图。如图1所示,一维套料方法包括:

s10:以原料为个体,以下料为基因,在待选基因列表中不重复地选择基因以生成个体的基因编码直至将所有基因选择完毕,以所有获得基因编码的个体作为初始种群。

s11:以初始种群作为父代种群,按预设规则对父代种群进行交叉运算,并删除基因个数为零的个体,直至获得满足预设条件的子代种群。

其中,原料为未经切割的管材;下料为需要切割产生的管材;待选基因列表为由未被选择的基因组成的列表;个体适应度为个体利用率;个体利用率为一个原料上分配的所有下料的长度之和占该原料的长度的比值。

对于步骤s10来说,为了避免产生非法解,对于同一个基因不进行重复选择,相当于每当将一个基因选入基因编码中,便将其在待选基因列表中删除。

为了方便后续计算,在步骤s10之前,还可以按表示的下料的长度非递减的顺序对各基因进行排序。

假设现有的原料为l1,l2……lz,需要的下料为l1,l2,……ln,在编码之前,待选基因列表为{l1,l2,……ln}。其中,li(i=1,2,……n)表示第i根原料的长度,lj(j=1,2,……n)表示第j根下料的长度,l1≤l2≤……ln且ln≤min(l1,l2,……,lz)。

为了方便,可以用基因的下标j组成基因编码,得到个体基因编码[a1,a2,……ax],其中1≤x≤n,若个体基因编码为[a,a2,a3]=[3,0,n-1],则解码得到[l4,l1,ln],从而节省了传统遗传算法过程中编码解码所需要的时间开销。

在l1,l2……lm中任选若干个体,为其进行编码,直至将待选基因列表中所有基因选择完毕,假设此时选中了s(s<z)个个体。

对于步骤s11来说,以初始种群为父代种群,对父代种群进行交叉运算,得到子代种群,再以子代种群为父代种群进行交叉计算,从而得到新的子代种群……为了减少计算次数以及判断次数,可以使被选中进行交叉计算的基因逐步向个体适应度更高的个体移动,从而使个体适应度高的个体的个体适应度越来越高,对于个体适应度低的个体,可能在进行多次交叉计算后其个体适应度降为0,此时可以删除这个个体,种群规模相应地从原来的s减为s-1。其中,个体适应度可以通过下式计算得到:

其中,为一个个体上的所有基因代表的下料的长度之和,li为这些基因所在的个体代表的原料的长度。

直到获得满足预设条件的子代种群时结束运算。满足预设条件的子代种群具体可以为个体适应度均值(种群中所有个体的个体适应度之和与所述种群的个体数量的比值)大于预设的阈值的子代种群;也可以为在进行预设次数的交叉计算后的得到的子代种群。当种群规模较大(个体数量较多)时,可以采用后者以节约计算时间。

本发明实施例提供的方案,既可以应用于在多规格原料的套料问题上,也可以应用于单规格原料的套料问题上,后者相对于前者计算更加简便。

对于多规格套料问题,可能在初始选择个体进行编码时,并不能保证从所有待选择的个体的基础上选中了能提高个体适应度均值的个体,为了解决这个问题,可以在后续运算时尝试用初始种群中未被选择的个体替换种群中的个体从而提高种群的个体适应度均值。

对于单规格套料问题,即每个个体所代表的原料长度统一,则不会出现上述问题,直接应用步骤s10-s11中的方案,可以简单快捷地获得满足预设条件的种群。

本发明实施例提供的一维套料方法,以原料为个体,以下料为基因,在各所述基因中不重复地选择基因,生成所述个体的基因编码直至将所有基因选择完毕,以所有获得基因编码的个体作为初始种群,从而获得了将所有下料分配完毕的一个整体分配方案。再以初始种群作为父代种群,按预设规则对父代种群进行交叉运算,在运算过程中可以使进行交叉运算的基因向个体适应度更高的个体移动,在这个过程中就会出现基因个数为零的个体,删除基因个数为零的个体,相当于节省了整根原料,如此循环直至获得满足预设条件的子代种群。相比于现有技术中的人工“贪心”算法,从全局角度大幅度提高了对原料的利用率,而且通过不重复地选择基因进行编码,排除了产生基因重复的非法解,大大简化了运算。因此本发明提供的方案更能获得一维套料问题的全局最优解,且易于计算,更符合车间生产需要。

图2为本发明实施例提供的第一种步骤s10中生成基因编码的具体实施方式的流程图。如图2所示,在上述实施例的基础上,在另一实施例中,步骤s10中,在各基因中不重复地选择基因以生成个体的基因编码直至将所有基因选择完毕,具体包括:

s20:计算个体的预设基因编码长度。其中,预设基因编码长度为一个个体上能够携带的基因数量的最大值。

s21:在待选基因列表中不重复地选择基因以生成基因编码,当基因编码的长度大于预设基因编码长度时,舍弃该基因编码;当基因编码的长度小于预设基因编码长度时,在基因编码中随机插入空格以使基因编码的长度等于预设基因编码长度。

s22:判断待选基因列表是否存在未被选择的基因,如果是,则返回步骤s21。

在步骤s20中,统一基因编码的长度可以方便后续的交叉运算。而为了获得个体数量尽量少的初始种群,以一个个体上能够携带的基因数量的最大值作为预设基因编码长度。预设基因编码长度具体可通过下式计算得到:

即将下料从最短的开始依次放在最长的一根原料上,最多可以放置的数量。

对于步骤s21来说,依次选择多组基因,对于每个基因都要进行分配并且只进行一次分配,不重复选取。每组基因形成的基因编码长度不一,当基因编码长度大于预设基因编码长度m时,舍弃这个基因编码。当基因编码长度小于预设基因编码长度m时,就在其中随机插入空格,每个空格占据一个基因的位置。最终得到的基因编码的形式都为[a1,a2,……am]。

对于步骤s22来说,为保证所有基因都被选中,判断待选基因列表中是否存在未被选择的基因(即待选基因列表是否为空),如果是,则返回步骤s21中选择的步骤,如果否,则对个体整体编码完毕。

本发明实施例提供的一维套料方法,统一每个个体的基因编码长度,方便后续的交叉运算,并且采用在一个个体上可以放置的基因数量的最大值作为预设基因编码长度,使得在初始种群中一个个体上放置的基因尽可能地多,从而使得个体数量尽可能少,相当于获得了一种较为节约原料的套料方案,在此基础上进行交叉运算,简化了计算。

图3为本发明实施例提供的第二种步骤s10中生成基因编码的具体实施方式的流程图。如图3所示,在上述实施例的基础上,在另一实施例中,步骤s10中,在待选基因列表中不重复地选择基因以生成个体的基因编码,具体包括:

s30:对于一个待编码个体,先选择待选基因列表中代表的下料长度最大的基因进行编码,并按照代表的下料长度递减的顺序从待选基因列表中选择基因进行编码。

s31:当选中的基因所代表的下料无法放置于待编码个体代表的原料时,再选择待选基因列表中代表的下料长度最小的基因继续进行编码,并按照代表的下料长度递增的顺序从待选基因列表中选择基因进行编码。

s32:当选中的基因所代表的下料均无法放置于待编码个体代表的原料时,结束对待编码个体的编码。

在具体实施中,如果在步骤s10中已经按照代表的下料的长度非递减的顺序对基因进行排序,得到待选基因列表{l1,l2,……ln},那么对于第一个个体l1,先将ln放置于第一个基因块的位置,然后判断ln-1是否能继续放置到l1上,如果能,则继续放置,如此直到不能放置为止。如果不能放置了,就判断l1是否能放置到l1上,如果能,则再尝试放置l2,直到不能放置为止。假如对第一个个体l1生成的基因编码为{l1,l2,ln-1,ln},则对第二个个体l2进行编码时,就先将ln-2放置于第一个基因块的位置,再判断ln-3是否能继续放置到l2上,……直至将待选基因列表中的所有基因均选择完毕。

本发明实施例提供的生成基因编码的具体实施方式,还可以结合本发明第二个实施例中生成基因编码的方式,即可以先统一基因编码的长度,再选用本发明实施例中的从两头选取基因进行编码的方式进行编码,这样依次编码后的个体所排成的个体队列中,相邻个体的个体适应度相差较小,并且大体呈递减顺序,从而在进行交叉运算时,相邻个体之间交叉的成功率较高,从而简化了计算。

图4为本发明实施例提供的第三种步骤s10中生成基因编码的具体实施方式的流程图。如图4所示,在上述实施例的基础上,在另一实施例中,步骤s10中,在待选基因列表中不重复地选择基因以生成个体的基因编码,具体包括:

s40:对于各待编码个体,从待选基因列表代表的下料长度最大的基因起进行编码,按照代表的下料长度递减的顺序从待选基因列表中选择基因进行编码。

s41:当选中的基因所代表的下料无法放置于待编码个体代表的原料时,结束对待编码个体的编码。

在具体实施中,如果在步骤s10中已经按照代表的下料的长度非递减的顺序对基因进行排序,得到待选基因列表{l1,l2,……ln},那么对第一个个体l1编码时,先将ln放置于第一个基因块的位置,然后判断ln-1是否能继续放置到l1上,如果能,则继续放置,如此直到不能放置为止。假如对第一个个体l1生成的基因编码为{ln},则对第二个个体l2进行编码时,就先将ln-1放置于第一个基因块的位置,再判断ln-2是否能继续放置到l2上,……直至将待选基因列表中的所有基因均选择完毕。

本发明实施例提供的生成基因编码的具体实施方式,在编码的过程中节省了计算、判断的次数,还可以结合本发明第二个实施例中生成基因编码的方式,即可以先统一基因编码的长度,再选用本发明实施例中的按下料长度递减地选取基因进行编码的方式进行编码。

图5为本发明实施例提供的一种步骤s11中对父代种群进行交叉运算的具体实施方式的流程图。图6为本发明实施例提供的一种基于图5的交叉运算的示意图。

如图5所示,在上述实施例的基础上,在另一实施例中,在步骤s11中,以基因为单位对父代种群进行交叉运算以使进行交叉运算的基因向个体适应度更高的个体移动,具体包括:

s50:将父代种群中的个体按个体适应度递减的方式进行排序,得到个体队列。

s51:在第一父代个体中选择第一基因,在第二父代个体中选择第二基因。

其中,第一父代个体和第二父代个体为个体队列中相邻的两个个体,且第一父代个体的个体适应度大于第二父代个体的个体适应度。

s52:当第二基因所代表的下料的长度大于第一基因所代表的下料的长度且第二基因代表的下料的长度小于第一父代个体的余料的长度时,交换第一基因和第二基因的位置。

其中,余料为个体所代表的原料的长度减去个体上所有基因所代表的下料的长度之和得到的差。

将父代种群中的个体按个体适应度递减的方式排序,使相邻个体的个体适应度差异较小,便于后续进行交叉运算时使基因向个体适应度高的个体移动。对于个体适应度递减的相邻个体第一父代个体和第二父代个体,应使基因向第一父代个体移动。在第二父代个体中选取的第二基因应是一个非空基因块,即代表的下料长度不为0,而在第一父代个体中选取的基因可以是非空基因块,也可以是空基因块(即在本发明第二个实施例中提到的在编码过程中插入的空格)。为了避免产生非法解、增加冗余计算,当第二基因所代表的下料的长度大于第一基因所代表的下料的长度时,还需判断第二基因代表的下料的长度是否超出第一父代个体代表的原料的余料的长度,如果超出,则不能将第一基因和第二基因交换位置。

如图6所示,一个基因块表示一个基因,null表示空格。交叉运算的方式可以是①、②两种,可以是①中的交换单个基因,也可以是②中的同时交换一个以上的基因。在交换之后,可以再根据个体适应度的大小调换个体的位置,使个体队列保持个体按个体适应度递减的方式排列。经过若干次交叉运算后,在个体队列的队尾可能会出现空置的个体,即其上的基因块全为null,此时就可以在种群中将该个体淘汰,种群规模由s减为s-1。

为了节约计算时间,当种群规模较大(个体数量较多)时,可以在进行预设次数的交叉计算后结束运算。而对于一个个体,假设其基因编码长度为m时,可以在其上基因的交换次数大于m/2时结束交换。

图7为本发明实施例提供的一种一维套料装置的结构示意图。如图7所示,该一维套料装置可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)710(例如,一个或一个以上处理器)和存储器720,一个或一个以上存储应用程序733或数据732的存储介质730(例如一个或一个以上海量存储设备)。其中,存储器720和存储介质730可以是短暂存储或持久存储。存储在存储介质730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对计算装置中的一系列指令操作。更进一步地,处理器710可以设置为与存储介质730通信,在一维套料装置700上执行存储介质730中的一系列指令操作。

一维套料装置700还可以包括一个或一个以上电源740,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口770,和/或,一个或一个以上操作系统731,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

上述图1至图5所描述的一维套料方法中的步骤由一维套料装置基于该图7所示的结构实现。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的一维套料装置及计算机可读存储介质的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的方法、装置及计算机可读存储介质,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,功能调用装置,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上对本发明所提供的一种一维套料方法、装置及计算机存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

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