发明内容
为了克服上述现有技术的缺点,本发明的目的是提出一种基于Petri网的多横梁水切割最优走刀路径规划方法,能够实现多横梁水切割系统在加工任意曲线的情况下的各横梁路径规划,使各个横梁系统移动的距离之和最短,较大程度的降低加工成本,具有良好的应用前景。
为了达到上述目的,本发明采用如下技术方案:
1、一种基于Petri网的多横梁水切割最优走刀路径规划方法,其特征在于,包括以下步骤:
步骤一:对多横梁水切割系统的加工区域进行划分;
步骤二:对于给定的切割任务,根据所在区域将加工任务分配给相应的横梁系统;
步骤三:将每个横梁系统的待切割任务分割为子任务;
步骤四:对每个横梁系统的待切割子任务建立Petri网模型;
步骤五:基于步骤四的Petri网模型,将步骤三的问题转换为整数线性规划问题;
步骤六:在MATLAB中调用步骤五整数线性规划问题的相关程序;
步骤七:利用YALMIP优化工具箱求解步骤六的程序内容并进行结果分析;
步骤八:对各个任务的时间窗进行调整实现横梁之间冲突的避免。
所述的步骤一具体为:分别将第1横梁系统、第2横梁系统、...、第i横梁系统、...、第n横梁系统中各横梁的最大工作区域作为各自的可达区,即第1可达区、第2可达区、...、第i可达区、...、第n可达区,将相邻的第j可达区和j+1可达区之间的重叠部分作为第j重叠区,其中j∈[1,n-1],第j重叠区左右边界线称为左重叠线、右重叠线,将第j重叠区的两侧各增加横梁的宽度,形成第j干涉区,第j干涉区左右边界线称为左干涉线、右干涉线,将第j可达区除去属于第j-1个干涉区和第j个干涉区的区域,作为第j专属区,j∈[2,n-1],第1个专属区为第1可达区除去属于第1个干涉区的区域,第n个专属区为第n可达区除去属于第n-1个干涉区的区域。
所述的步骤二具体为:
如果待切割轮廓完全位于第j专属区内,j∈[1,n],则将待切割轮廓分配给第j横梁系统;
如果待切割轮廓完全位于第j重叠区内,j∈[1,n-1],则将待切割轮廓分配给第j横梁系统或第j+1横梁系统;
如果待切割轮廓完全位于第j可达区内但不完全属于该可达区所包含的重叠区(即第2类),其中,j∈[1,n],则将待切割轮廓分配给第j横梁系统;
如果待切割轮廓连续跨越第j重叠区、第j+1重叠区、...、第j+h-1重叠区,j∈[1,n-1],h∈[1,n-1],j+h∈[1,n],h代表跨越的重叠区个数,以待切割轮廓跨越的各重叠区的中心线为界,将待切割轮廓沿导轨方向分割成第1段、第2段、…、第h段、第h+1段,分割后的各待切割轮廓段分别分配给第j横梁系统、第j+1横梁系统、…、第j+h-1横梁系统、第j+h横梁系统。
所述的步骤三具体为:
如果待切割任务没有跨越干涉线,完全位于干涉区或专属区内,则不需要对待切割任务进行分割,子任务即待切割任务;
如果待切割i任务跨越干涉线,将其以干涉线为界将该待切割任务分割为第1子任务,第2子任务,...。
所述的步骤四的Petri网模型如下:
第c横梁系统上子任务为rc个,对子任务进行分类,分为四类:切入点和切出点相同且不属于重叠区的子任务集合记为Rc,1,个数记为rc,1;切入点和切出点相同且不属于重叠区的子任务集合记为Rc,2,个数记为rc,2,并对该子任务集合内的任务j的端点进行编号为j1、j2,其中j∈[rc,1+1,rc,1+rc,2];切入点和切出点相同且属于第c-1重叠区的子任务集合记为Rc,3,个数记为rc,3,若c=1则该集合为空集;切入点和切出点相同且属于第c重叠区的子任务集合记为Rc,4,个数记为rc,4,若c=n则该集合为空集;其中,rc,1+rc,2+rc,3+rc,4=rc;
建立第c横梁系统起点及各个子任务的库所模型,用集合P
c来表示,
起点建立库所p
c,0;集合R
c,1建立库所
集合R
c,2建立库所
集合R
c,3建立库所
集合R
c,4建立库所
建立第c横梁系统各个库所之间的变迁模型:
对于起点、集合Rc,1、集合Rc,3、集合Rc,4所建立的库所之间的变迁关系,库所pc,i和库所pc,j之间建立变迁tc,i,j和tc,j,i,i∈[0,rc,1]∪[rc,1+rc,2+1,rc,1+rc,2+rc,3+rc,4],j∈[0,rc,1]∪[rc,1+rc,2+1,rc,1+rc,2+rc,3+rc,4],i≠j,变迁tc,i,j表示第c横梁系统从第i个子任务的切出点运动到第j个子任务的切入点,wc,i,j表示第c横梁系统第i个子任务的切出点与第j个子任务的切入点间的距离wc,i,j=|xc,i-xc,j|+|yc,i-yc,j|,xc,i、yc,i、xc,j、yc,j分别代表第c横梁系统子任务i、j的横纵坐标,变迁tc,j,i表示第c横梁系统从第j个子任务的切出点运动到第i个子任务的切入点,wc,j,i表示第c横梁系统第j个子任务的切出点与第i个子任务的切入点间的距离,此类变迁总个数为rc,1+rc,3+rc,4+1)*(rc,1+rc,3+rc,4;
对于起点、集合R
c,1、集合R
c,3、集合R
c,4所建立的库所和集合R
c,2所建立的库所之间的变迁关系,库所p
c,i和库所p
c,i之间建立变迁
变迁
表示第c横梁系统从第i个子任务的切出点运动到第j个子任务的j
1切入点,
表示第c横梁系统第i个子任务的切出点与第j个子任务的j
1切入点间的距离,变迁
表示第c横梁系统从第j个子任务的j
1切出点运动到第i个子任务的切入点,
表示第c横梁系统第j个子任务的j
1切出点与第i个子任务的切入点间的距离。同样,用
表示各个运动及其距离,此类变迁总个数为(r
c,1+r
c,3+r
c,4+1)*r
c,2*4:
对于集合R
c,2所建立的库所之间的变迁关系,库所p
c,i和库所p
c,j之间建立变迁
变迁
表示第c横梁系统从第i个子任务的i
1切出点运动到第j个子任务的j
1切入点,
表示第c横梁系统第i个子任务的i
1切出点与第j个子任务的j
1切入点间的距离,变迁
表示第c横梁系统从第j个子任务的j
1切出点运动到第i个子任务的i
1切入点,
表示第c横梁系统第j个子任务的j
1切出点与第i个子任务的i1切入点间的距离;同样,用
表示各个运动切入点和切出点的距离,此类变迁总个数为r
c,2*(r
c,2-1)*4;
第c横梁系统的变迁总个数rc,t=(rc,1+rc,3+rc,4+1)*(rc,1+rc,3+rc,4)+(rc,1+rc,3+rc,4+1)*rc,2*4+rc,2*(rc,2-1)*4;
将第c横梁系统所有变迁所代表的运动距离组成一个1*r
c,t的行向量
其中:i,j=0,1,2,...,r
c,i<j;如果p
c,i、p
c,j代表出切入点和切出点不同的子任务,那么w
i,j中的i和j含下标1和2代表不同的两点;
基于每个子任务只能被一个横梁访问且只能访问一次的原因,用k={1,2,...,K}表示横梁移动的次数,且车辆每增加一步就意味着刀头可能访问一个点;
用标识M
c,k来表示每一个横梁系统在每一步的工作状态,使用
表示第c横梁系统在第k步时在各个子任务p
i处的位置标记,即第c横梁系统在第k步时所处的位置,其中c=1,2,...,n,k=1,2,...,K,i=0,1,...,r
c;第c横梁系统在第k步时所处的位置p
c,i,那么M
c,k(p
c,i)=1,否则M
c,k(p
c,i)=0;
和
分别表示第c横梁系统Petri网模型的前置关联矩阵和后置关联矩阵;若库所p的输出弧指向变迁t时,Pre
c(p,t)=1,否则Pre
c(p,t)=0;若变迁t的输出弧指向库所p时,Post
c(p,t)=1,否则Post
c(p,t)=0;
为了表示第c横梁系统在第k步的移动路径,在Petri网中采用r
c,t*1的列向量
表示第c横梁系统在第k步的变迁触发向量,其中:i,j=0,1,2,...,r
c,i<j;如果第c横梁系统在第k步的是从位置p
c,i到位置p
c,j,那么σ
c,k,i,j=1,即变迁t
c,i,j触发,否则σ
c,k,i,j=0;如果p
c,i、p
c,j代表第c横梁系统出切入点和切出点不同的子任务,那么σ
c,k,i,j中的i和j含下标1和2代表两点。
所述的步骤五的整数线性规划问题模型如下:
约束条件:
约束条件1:Mc,k=Mc,k-1+(Postc-Prec)×σc,k,c∈[1,n],k∈[1,K];该约束为状态方程,表达的是标识Mc,k、Mc,k-1与变迁触发向量σc,k之间的关系;
约束条件2:Mc,k-1-Prec×σc,k≥0,c∈[1,n],k∈[1,K];该约束约束了发生变迁后,变迁的前置库所内托肯数为非负数,即发射变迁前该变迁的前置库所中存在一定数量的托肯,约束了发生变迁的条件;
约束条件3:1T×σc,k≤1,c∈[1,n],k∈[1,K];该约束约束了列向量σc,k中最多仅能有一个元素为1,这表示每一个横梁每一步只能触发一个变迁;
约束条件4:
该约束约束了每一个横梁除了完全属于重叠区域的任务仅被该横梁访问一次;
约束条件5:
该约束约束了每个重叠区域的任务仅被一个横梁执行加工任务;
约束条件6和约束条件7约束了每个横梁系统中切入点和切出点不同的子任务,其只能从一点切入另一点切出;
其中,变量定义如下:
c是可供加工的的横梁的集合,c={1,2,...,n};
k是横梁的移动步数,K是横梁最多移动的步数,k={1,2,...,K};
i,j表示起点及子任务,i,j={0,1,2,...,rc},如果pc,i、pc,j代表第c横梁系统出切入点和切出点不同的子任务,那么σc,k,i,j中的i和j可以含下标1和2代表两点;
表示与第c横梁系统Petri网模型所有变迁所代表的运动对应的距离;
表示Petri网的变迁触发向量;如果第c横梁系统在第k步经点i出发去访问j点,则σc,k,i,j=1,否则σc,k,i,j=0;
是Petri网的位置标识,如果第c横梁系统在第k步时所处的位置是p
c,i,那么M
c,k(p
c,i)=1,否则M
c,k(p
c,i)=0;
表示第c横梁系统Petri网模型的后置关联矩阵,如果变迁t的输出弧指向库所p时,Post
c(p,t)=1,否则Post
c(p,t)=0;
表示第c横梁系统Petri网模型的前置关联矩阵,如果库所p的输出弧指向变迁t时,Pre
c(p,t)=1,否则Pre
c(p,t)=0。
所述的步骤八具体为:根据刀头空行程的运动速度为vk、加工速度为vj、加工子任务切割长度L,计算刀头空行程运动时间tk=max(Δx,Δy)/vk、刀头加工运动时间为tj=L/vk,从而得到各横梁系统刀头运动时间窗;
采用先进先加工的原则:如果第c横梁系统在第c-1或c+1重叠区内加工时,第c-1或c+1横梁系统将要进入第c-1或c重叠区进行加工,第c-1或c+1横梁系统需等待第c横梁系统在第c-1或c重叠区加工完成并移出第c-1或c重叠区0.5s后进入第c-1或c重叠区进行加工任务。
本发明的有益效果为:
对于给定的各个任务的切入点和切出点,轮廓之间的走刀顺序也存在很多种可能性,并且针对不封闭的切割任务,能从该任务的两点中任意一点切入,所以走刀路径存在多种可能,移动的总距离也可能存在很大的差异,因此从这些走刀路径中寻找到最优的路径是十分有必要的。本发明方法结合了Petri网模型,将多横梁水切割系统走刀路径问题的模型转换为整数线性规划问题,在MATLAB中利用YALMIP优化工具箱对该问题进行求解,最终找到满足加工要求的最优走刀路径;本发明方法不仅具有良好的通用性,而且能够快速找到多横梁水切割系统走刀路径的最优路线,较大程度的降低加工成本,具有良好的应用前景。
本发明所提供的一种基于Petri网的多横梁水切割最优走刀路径规划方法具有通用性,不仅能够规划多横梁水切割系统的走刀路径,也可以规划单横梁水切割系统的走刀路径,能使所有的待切割任务仅被一横梁加工一次且所有横梁的移动距离之和最短,达到降低切割成本和时耗的目的;本发明还与时间窗的调整结合起来,达到避免横梁碰撞的目的,提高运行的可靠性。
具体实施方式
以下结合实施例和附图对发明作进一步说明。
参照图1,一种基于Petri网的多横梁水切割最优走刀路径规划方法,包含以下步骤:
步骤一:对多横梁水切割系统的加工区域进行划分:
分别将第1横梁系统、第2横梁系统的最大工作区域作为各自的可达区,即第1可达区、第2可达区,将相邻的第1可达区和2可达区之间的重叠部分作为第1重叠区,第1重叠区左右边界线称为左重叠线、右重叠线,将第1重叠区的两侧各增加横梁的宽度,形成第1干涉区,第1干涉区左右边界线称为左干涉线、右干涉线,将第1可达区除去属于第1个干涉区的区域,作为第1专属区,将第2可达区除去属于第1个干涉区的区域,作为第2专属区,如图2所示;
步骤二:对于给定的切割任务,将加工任务分配给相应的横梁系统,如图3所示;
待切割轮廓A1完全位于第1专属区内,则将待切割轮廓A1分配给第1横梁系统;待切割轮廓B1完全位于第2专属区内,则将待切割轮廓B1分配给第2横梁系统;
待切割轮廓A4、B4完全位于第1重叠区内,则将待切割轮廓A4、B4配给第1横梁系统或第2横梁系统;
待切割轮廓A2完全位于第1可达区内但不完全属于第1重叠区,则将待切割轮廓A2分配给第1横梁系统;待切割轮廓B2完全位于第2可达区内但不完全属于第1重叠区,则将待切割轮廓分配给第2横梁系统;
待切割轮廓A3和B3连续跨越第1重叠区,以待切割轮廓跨越的第1重叠区的中心线为界,将待切割轮廓沿导轨方向分割成第1段(A3)、第2段(B3)分别分配给第1横梁系统、第2横梁系统;
步骤三:将每个横梁系统的待切割任务分割为子任务,如图4所示:
对于第1横梁系统:
待切割任务A1没有跨越干涉线,完全位于专属区,则不需要对待切割任务进行分割,子任务ZA1即待切割任务A1;
待切割任务A2跨越干涉线,以干涉线为界将该待切割任务分割为第1子任务(ZA2),第2子任务(ZA3);待切割任务A3跨越干涉线,将其以干涉线为界将该待切割任务分割为第1子任务(ZA4),第2子任务(ZA5),第3子任务(ZA6);
待切割任务A4没有跨越干涉线,完全位于重叠区,则不需要对待切割任务进行分割,子任务ZA7即待切割任务A4;
对于第2横梁系统:
待切割任务B1没有跨越干涉线,完全位于专属区,则不需要对待切割任务进行分割,子任务ZB1即待切割任务B1;
待切割任务B2跨越干涉线,将其以干涉线为界将该待切割任务分割为第1子任务(ZB2),第2子任务(ZB3);待切割任务B3跨越干涉线,以干涉线为界将该待切割任务分割为第1子任务(ZB4),第2子任务(ZB5),第3子任务(ZB6);
待切割任务B4没有跨越干涉线,完全位于重叠区,则不需要对待切割任务进行分割,子任务ZB7即待切割任务B4;
多横梁水切割系统的子任务分割如图4所示,读取各个横梁系统的子任务切入切出点坐标:如下表:
表1横梁系统的子任务切入切出点坐标
子任务(第1横梁系统) |
坐标 |
子任务(第2横梁系统) |
坐标 |
A0 |
(9.05,6.75) |
B0 |
(147.55,6.61) |
ZA1 |
(19.09,13.40) |
ZB1 |
(145.41,14.26) |
ZA2<sub>1</sub> |
(60.00,46.81) |
ZB2<sub>1</sub> |
(110.00,43.35) |
ZA2<sub>2</sub> |
(60.00,37.64) |
ZB2<sub>2</sub> |
(110.00,30.88) |
ZA3<sub>1</sub> |
(60.00,46.81) |
ZB3<sub>1</sub> |
(110.00,43.35) |
ZA3<sub>2</sub> |
(60.00,37.64) |
ZB3<sub>2</sub> |
(110.00,30.88) |
ZA4<sub>1</sub> |
(60.00,25.19) |
ZB4<sub>1</sub> |
(85.00,25.19) |
ZA4<sub>2</sub> |
(85.00,25.19) |
ZB4<sub>2</sub> |
(110.00,25.19) |
ZA5<sub>1</sub> |
(60.00,25.19) |
ZB5<sub>1</sub> |
(110.00,25.19) |
ZA5<sub>2</sub> |
(60.00,17.82) |
ZB5<sub>2</sub> |
(110.00,17.82) |
ZA6<sub>1</sub> |
(60.00,17.82) |
ZB6<sub>1</sub> |
(85.00,17.82) |
ZA6<sub>2</sub> |
(85.00,17.82) |
ZB6<sub>2</sub> |
(110.00,17.82) |
ZA7 |
(85.16,12.07) |
ZB7 |
(85.16,12.07) |
步骤四:对每个横梁系统的待切割子任务建立Petri网模型:
4.1)对于第1横梁系统:第1横梁系统上子任务为r1=7个,对子任务进行分类,分为四类:切入点和切出点相同且不属于重叠区的子任务集合记为R1,1(ZA1,个数r1,1=1);切入点和切出点不同的子任务集合记为R1,2(ZA2、ZA3、ZA4、ZA5、ZA6,个数r1,2=5),并对该子集合内的任务j的端点进行编号为j1、j2,其中j∈[2,6];此时,第c-1重叠区不存在,故集合R1,3为空集,r1,3=0;切入点和切出点相同且属于第1重叠区的子任务集合记为R1,4(ZA7,个数r1,4=1),其中,r1,1+r1,2+r1,3+r1,4=r1;
对于第2横梁系统:第2横梁系统上子任务为r2=7个,对子任务进行分类,分为四类:切入点和切出点相同且不属于重叠区的子任务集合记为R2,1(ZB1,个数r2,1=1);切入点和切出点不同的子任务集合记为R2,2(ZB2、ZB3、ZB4、ZB5、ZB6,个数r2,2=5),并对该子集合内的任务j的端点进行编号为j1、j2,其中j∈[2,6];切入点和切出点相同且属于第1重叠区的子任务集合记为R1,3(ZB7,个数r2,4=1);此时,第c+1重叠区不存在,故集合R2,4为空集,r2,4=0;其中,r2,1+r2,2+r2,3+r2,4=r2;
4.2)建立第1横梁系统起点及各个子任务的库所模型,用集合P1来表示,P1={p1,0,p1,1,...,p1,7}:起点建立库所p1,0;集合R1,1建立库所p1,1;集合R1,2建立库所p1,2、p1,3、...、p1,6;集合R1,3为空集;集合R1,4建立库所p1,7;
建立第2横梁系统起点及各个子任务的库所模型,用集合P2来表示,P2={p2,0,p2,1,...,p2,7}:起点建立库所p2,0;集合R2,1建立库所p2,1;集合R2,2建立库所p2,2、p2,3、...、p2,6;集合R2,3建立库所p2,7;集合R2,4为空集;
4.3)建立第1横梁系统各个库所之间的变迁模型:
对于起点、集合R1,1、集合R1,3、集合R1,4所建立的库所之间的变迁关系,库所p1,i和库所p1,j之间建立变迁t1,i,j和t1,j,i(i∈{0,1,7},j∈{0,1,7},i≠j),变迁t1,i,j表示第1横梁系统从第i个子任务的切出点运动到第j个子任务的切入点,w1,i,j表示第1横梁系统第i个子任务的切出点与第j个子任务的切入点间的距离(w1,i,j=|x1,i-x1,j|+|y1,i-y1,j|,x1,i、y1,i、x1,j、y1,j分别代表第1横梁系统子任务i、j的横纵坐标),变迁t1,j,i表示第1横梁系统从第j个子任务的切出点运动到第i个子任务的切入点,w1,j,i表示第1横梁系统第j个子任务的切出点与第i个子任务的切入点间的距离,此类变迁总个数为(r1,1+r1,3+r1,4+1)*(r1,1+r1,3+r1,4)=6;
对于起点、集合R
1,1、集合R
1,3、集合R
1,4所建立的库所和集合R
1,2所建立的库所之间的变迁关系,库所p
1,i和库所p
1,j之间建立变迁
变迁
表示第1横梁系统从第i个子任务的切出点运动到第j个子任务的j
1切入点,
表示第1横梁系统第i个子任务的切出点与第j个子任务的j
1切入点间的距离,变迁
表示第1横梁系统从第j个子任务的j
1切出点运动到第i个子任务的切入点,
表示第1横梁系统第j个子任务的j
1切出点与第i个子任务的切入点间的距离,变迁
表示第1横梁系统从第i个子任务的切出点运动到第j个子任务的j
2切入点,变迁
表示第1横梁系统从第j个子任务的j
2切出点运动到第i个子任务的切入点,同样,用
表示各个运动及其距离,此类变迁总个数为(r
1,1+r
1,3+r
1,4+1)*r
1,2*4=60;
对于集合R
1,2所建立的库所之间的变迁关系,库所p
1,i和库所p
1,j之间建立变迁
变迁
表示第1横梁系统从第i个子任务的i
1切出点运动到第j个子任务的j
1切入点,
表示第1横梁系统第i个子任务的i
1切出点与第j个子任务的j
1切入点间的距离,变迁
表示第1横梁系统从第j个子任务的j
1切出点运动到第i个子任务的i
1切入点,
表示第1横梁系统第j个子任务的j
1切出点与第i个子任务的i
1切入点间的距离。同样,用
表示各个运动切入点和切出点的距离,此类变迁总个数为r
1,2*(r
1,2-1)*4=80;
第1横梁系统的变迁总个数r1,t=(r1,1+r1,3+r1,4+1)*(r1,1+r1,3+r1,4)+(r1,1+r1,3+r1,4+1)*r1,2*4+r1,2*(r1,2-1)*4=146;
将第1横梁系统所有变迁所代表的运动距离组成一个1*146的行向量
,其中:i,j=0,1,2,...,r
c,i<j;如果p
1,i、p
1,j(即i,j∈[2,6])代表切入点和切出点不同的子任务,那么w
i,j中的i和j可以含下标1和2代表不同的两点;
基于每个子任务只能被一个横梁访问且只能访问一次的原因,用k={1,2,...,K}表示横梁移动的次数,且车辆每增加一步就意味着刀头可能访问一个点;
用标识M1,k来表示第1横梁系统在每一步的工作状态,使用M1,k=[M1,k(p1,0),M1,k(p1,1),...,M1,k(p1,7)]T表示第1横梁系统在第k步时在各个子任务pi处的位置标记,即第1横梁系统在第k步时所处的位置,其中k=1,2,...,K,i=0,1,...,7;第1横梁系统在第k步时所处的位置pc,i,那么M1,k(p1,i)=1,否则M1,k(p1,i)=0;
Pre1∈{0,1}8×146和Post1∈{0,1}8×146分别表示第1横梁系统Petri网模型的前置关联矩阵和后置关联矩阵;若库所p的输出弧指向变迁t时,Pre1(p,t)=1,否则Pre1(p,t)=0;若变迁t的输出弧指向库所p时,Post1(p,t)=1,否则Post1(p,t)=0;
为了表示第1横梁系统在第k步的移动路径,在Petri网中采用列向量
表示第1横梁系统在第k步的变迁触发向量,其中:i,j=0,1,2,...,r
c,i<j;如果第1横梁系统在第k步的是从位置p
c,i到位置p
c,j,那么σ
c,k,i,j=1,即变迁t
c,i,j触发,否则σ
c,k,i,j=0(如果p
c,i、p
c,j代表第1横梁系统切入点和切出点不同的子任务,那么σ
c,k,i,j中的i和j可以含下标1和2代表两点);
同理可得第2横梁系统待切割子任务的Petri网模型;
步骤五:基于步骤四的Petri网模型,将步骤三的问题转换为整数线性规划问题;
约束条件:
约束条件1:Mc,k=Mc,k-1+(Postc-Prec)×σc,k,c∈[1,n],k∈[1,K];
本实施例为:M1,k=M1,k-1+(Post1-Pre1)×σ1,k,k∈[1,K]
M2,k=M2,k-1+(Post2-Pre2)×σ2,k,k∈[1,K]
该约束为状态方程,表达的是标识M1,k、M1,k-1与变迁触发向量σ1,k之间以及标识M2,k、M2,k-1与变迁触发向量σ2,k之间的关系;
约束条件2:Mc,k-1-Prec×σc,k≥0,c∈[1,n],k∈[1,K];
本实施例为:M1,k-1-Pre1×σ1,k≥0,k∈[1,K]
M2,k-1-Pre2×σ2,k≥0,k∈[1,K]
该约束约束了发生变迁后,变迁的前置库所内托肯数为非负数,即发射变迁前该变迁的前置库所中存在一定数量的托肯,约束了发生变迁的条件;
约束条件3:1T×σc,k≤1,c∈[1,n],k∈[1,K];
本实施例为:1T×σ1,k≤1,k∈[1,K]
1T×σ2,k≤1,k∈[1,K]
该约束约束了列向量σc,k中最多仅能有一个元素为1,这表示每一个横梁每一步只能触发一个变迁;
该约束约束了每一个横梁除了完全属于重叠区域的任务仅被该横梁访问一次,即任务ZA1、ZA2、ZA3、ZA4、ZA5、ZA6仅被第1横梁系统访问一次,即任务ZB1、ZB2、ZB3、ZB4、ZB5、ZB6仅被第2横梁系统访问一次;
约束条件5:
该约束约束了每个重叠区域的任务仅被一个横梁执行加工任务,即任务ZA7/ZB7仅被第1横梁系统或第2横梁系统其中一个系统访问一次;
约束条件6和约束条件7约束了每个横梁系统中切入点和切出点不同的子任务,其只能从一点切入另一点切出;
其中,变量定义如下:
c是可供加工的的横梁的集合,c={1,2};
k是横梁的移动步数,K是横梁最多移动的步数,k={1,2,...,K};
i,j表示子任务,i,j={1,2,...,rc},如果pc,i、pc,j代表第c横梁系统出切入点和切出点不同的子任务,那么σc,k,i,j中的i和j可以含下标1和2代表两点;
表示与第1横梁系统Petri网模型所有变迁所代表的运动对应的距离;
表示与第2横梁系统Petri网模型所有变迁所代表的运动对应的距离;
表示Petri网的变迁触发向量,如果第1横梁系统在第k步经点i出发去访问j点,则σ1,k,i,j=1,否则σ1,k,i,j=0;
表示Petri网的变迁触发向量,如果第2横梁系统在第k步经点i出发去访问j点,则σ2,k,i,j=1,否则σ2,k,i,j=0;
M1,k=[M1,k(p1,0),M1,k(p1,1),...,M1,k(p1,7)]T是第1横梁系统Petri网的位置标识;
M2,k=[M2,k(p2,0),M2,k(p2,1),...,M2,k(p2,7)]T是第2横梁系统Petri网的位置标识;
Post1∈{0,1}8×146表示第1横梁系统库所与变迁的后置关联矩阵,Pre1∈{0,1}8×146表示第1横梁系统Petri网模型的前置关联矩阵;
Post2∈{0,1}8×146表示第2横梁系统库所与变迁的后置关联矩阵,Pre2∈{0,1}8×146表示第2横梁系统Petri网模型的前置关联矩阵;
步骤六:在MATLAB中调用步骤五整数线性规划问题的相关程序:
6.1)对每个横梁系统构建Petri网结构,包括前置关联矩阵、后置关联矩阵以及关联矩阵;
6.2)输入各个子任务坐标(见表1),计算每个横梁系统所构建的Petri网模型中每个变迁对应的距离wc,i,j;
6.3)输入每个横梁系统的初始位置和最终位置,确定每个横梁系统Petri网的初始标识和最终标识等变量;
6.4)将整数线性规划问题的目标函数和约束条件转化为程序;
6.5)调用YALMIP优化工具箱求解;
步骤七:利用YALMIP优化工具箱求解步骤六的程序内容并进行结果分析:
本实施例利用YALMIP优化工具箱求解步骤六的程序后产生的多横梁水切割系统走刀路径规划结果如图5所示(为了路径表达的完整性,直线LA1、LA8、LA10、LB5、LB10、LB12用曲线来绘制);
第1横梁系统的走刀路径为:p1,0(起点)→LA1→LA2(p1,6/子任务ZA6)→LA3→LA4(p1,4/子任务ZA4)→LA5→LA6(p1,3/子任务ZA3)→LA7(p1,2/子任务ZA2)→LA8→LA9(p1,5/子任务ZA5)→LA10→LA11(p1,1/子任务ZA1)→LA12→p1,0(终点);
第2横梁系统的走刀路径为:p2,0(起点)→LB1→LB2(p2,7/子任务ZB7)→LB3→LB4(p2,6/子任务ZB6)→LB5→LB6(p2,4/子任务ZB4)→LB7→LB8(p2,3/子任务ZB3)→LB9(p2,2/子任务ZB2)→LB10→LB11(p2,5/子任务ZB5)→LB12→LB13(p2,1/子任务ZB1)→LA14→p2,0(终点);
该结果满足加工要求,每个任务均仅被加工一次,且重叠区内的任务仅被一个横梁系统加工;本实例多横梁水切割系统各个横梁的移动距离之和为d=322.2449;
步骤八:对各个任务的时间窗进行调整实现避免横梁之间的冲突;
假设刀头空行程的运动速度为vk=10(mm/s),运动时间为tk=max(Δx,Δy)/vk,加工速度为vj=1(mm/s),加工时间为tj=L/vk,其中L为加工子任务切割长度,本实施例的各横梁系统子任务切割长度如表2所示;
表2各横梁系统子任务切割长度
子任务(第1横梁系统) |
切割长度L(mm) |
子任务(第2横梁系统) |
切割长度L(mm) |
ZA1 |
34.05 |
ZB1 |
52.37 |
ZA2 |
31.83 |
ZB2 |
52.37 |
ZA3 |
48.12 |
ZB3 |
42.23 |
ZA4 |
25.00 |
ZB4 |
25.00 |
ZA5 |
29.69 |
ZB5 |
27.06 |
ZA6 |
25.00 |
ZB6 |
25.00 |
ZA7 |
37.75 |
ZB7 |
37.75 |
则所求的各横梁系统刀头运动时间窗如表3所示(其中干涉区区域内的运动用加粗表示,干涉区边界也算干涉区内的运动):
表3各横梁系统刀头运动时间窗
刀头运动(第1横梁系统) |
时间窗 |
刀头运动(第2横梁系统) |
时间窗 |
LA1 |
[0,6.2] |
LB1 |
[0,6.8] |
LA2 |
[6.2,31.2] |
LB2 |
[6.8,44.5] |
LA3 |
[31.2,31.9] |
LB3 |
[44.5,47.6] |
LA4 |
[31.9,56.9] |
LB4 |
[47.6,72.6] |
LA5 |
[56.9,58.2] |
LB5 |
[72.6,73.3] |
LA6 |
[58.2,106.3] |
LB6 |
[73.3,98.3] |
LA7 |
[106.3,138.1] |
LB7 |
[98.3,98.9] |
LA8 |
[138.1,139.4] |
LB8 |
[98.9,141.1] |
LA9 |
[139.4,169.1] |
LB9 |
[141.1,193.5] |
LA10 |
[169.1,173.6] |
LB10 |
[193.5,194.1] |
LA11 |
[173.6,207.6] |
LB11 |
[194.1,221.1] |
LA12 |
[207.6,209.3] |
LB12 |
[221.1,225.0] |
|
|
LB13 |
[225.0,277.4] |
|
|
LB14 |
[277.4,278.4] |
采用先进先加工的原则:如果第1横梁系统在第1重叠区内加工时,第2横梁系统将要进入第1重叠区进行加工,则第2横梁系统需等待第1横梁系统在第1重叠区加工完成并移出第1重叠区0.5s后进入第1重叠区进行加工任务;同样的,如果第2横梁系统在第1重叠区内加工时,如果第1横梁系统将要进入第1重叠区进行加工,则第1横梁系统需等待第2横梁系统在第1重叠区加工完成并移出第1重叠区0.5s后进入第1重叠区进行加工任务;
经过调整后的各横梁系统刀头运动时间窗如表4所示:
表4各横梁系统刀头运动时间窗
刀头运动(第1横梁系统) |
时间窗 |
刀头运动(第2横梁系统) |
时间窗 |
LA1 |
[0,6.2] |
LB1 |
[106.8,113.6] |
LA2 |
[6.2,31.2] |
LB2 |
[113.6,151.3] |
LA3 |
[31.2,31.9] |
LB3 |
[151.3,154.4] |
LA4 |
[31.9,56.9] |
LB4 |
[154.4,179.4] |
LA5 |
[56.9,58.2] |
LB5 |
[179.4,180.1] |
LA6 |
[58.2,106.3] |
LB6 |
[180.1,205.1] |
LA7 |
[106.3,138.1] |
LB7 |
[205.1,205.7] |
LA8 |
[248.4,249.7] |
LB8 |
[205.7,247.9] |
LA9 |
[294.7,297.4] |
LB9 |
[247.9,300.3] |
LA10 |
[297.4,283.9] |
LB10 |
[300.3,300.9] |
LA11 |
[283.9,317.9] |
LB11 |
[300.9,327.9] |
LA12 |
[317.9,319.6] |
LB12 |
[327.9,331.8] |
|
|
LB13 |
[331.8,384.2] |
|
|
LB14 |
[384.2,385.2] |