首页> 中国专利> 基于匈牙利算法的串并联系统指派问题优化方法

基于匈牙利算法的串并联系统指派问题优化方法

摘要

本发明公开了一种基于匈牙利算法的串并联系统任务指派的优化方法,属于任务调度技术领域。本发明的步骤为(1)将系统分为串联环节和并联环节;(2)用虚拟工作代替并联环节;(3)利用传统的匈牙利算法进行任务指派;(4)判断指派方案的虚拟工作是否可以实现,如果某虚拟工作不可实现则改变时间向量并返回步骤(3),如果所有虚拟工作都可以实现则停止搜索并得到最终的最优调度方案。本发明具有步骤简单、搜索速度快且能得到全局最优解等优点,而且能解决串并联复杂系统的任务指派问题,拓展了传统匈牙利算的应用范围。

著录项

  • 公开/公告号CN104850909A

    专利类型发明专利

  • 公开/公告日2015-08-19

    原文格式PDF

  • 申请/专利权人 中国人民解放军国防科学技术大学;

    申请/专利号CN201510271929.2

  • 申请日2015-05-26

  • 分类号G06Q10/04(20120101);G06Q10/06(20120101);

  • 代理机构11429 北京中济纬天专利代理有限公司;

  • 代理人胡伟华

  • 地址 410073 湖南省长沙市开福区德雅路109号

  • 入库时间 2023-12-18 10:31:17

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-06-12

    授权

    授权

  • 2015-09-16

    实质审查的生效 IPC(主分类):G06Q10/04 申请日:20150526

    实质审查的生效

  • 2015-08-19

    公开

    公开

说明书

技术领域

本发明任务调度领域范畴,具体的说是一种指派问题的优化方法,特别可以应用到具有 串并联环节的制造系统任务指派问题的研究中。

背景技术

指派问题是人员调度问题中的经典问题——m个人完成n项工作,且每个人完成每项工 作的效率不一样,确定任务指派方案使得完成任务总的效率最高。其一般模型如下:

minZP=Σi=1nΣj=1nTijpij

s.t.Σi=1npij=1,i=1,2,...,nΣj=1npij=1,i=1,2,...,n其中,

由于匈牙利算法具有步骤简单、能得到最优解且无需验证的特点,该算法被广泛用于指 派问题的求解当中,引起了国内外学者的广泛关注。

经典匈牙利算法是W.W.Kuhn利用匈牙利数学家D.Koning关于矩阵中独立零元素定理提 出的用于解决指派问题的优化方法。该方法的理论基础是:在效益矩阵(也称代价矩阵)的 任意行或列加上或者减去一个常数不会改变最优分配方案[11]。其基本思想是通过每行或每列 加减同一个常数来修改效益矩阵,直到效益矩阵不同行不同列至少具有一个零元素,且零元 素就对应了一个总效益最小的最优分配方案。经典匈牙利算法的基本步骤如下:

步骤1、建立资源分配问题的效益矩阵M0(m×n)。

步骤2、从效益矩阵M0每行减去该行最小的元素,使得每行都有一个零元素,得到M1

步骤3、从M1每列减去该列最小的元素,使得每列都有一个零元素,得到M2

步骤4、用最少的直线覆盖M2中的零元素得到M3,如果最少直线的数量等于m,转入 步骤6,否则转入步骤5。

步骤5矩阵M3中所有未被直线覆盖的元素减去未被覆盖元素中最小的元素,同时在直 线相交点加上该最小元素得到M4,令M2=M4,转步骤4。

步骤6从零元素最少的行或列开始指派,直到所有任务都指派完毕,得到最优指派方案 P。

虽然匈牙利算法已经在实际中得到了较大的应用,并取得了较好的效果。但是传统的匈 牙利算法只能针对“总代价为各个任务代价之和”一类问题进行求解,而在实际工程中,许 多情况并不满足这个条件。因此,需要对算法进行改进,以便其能更好的解决实际问题。

发明内容

针对现有技术中存在的缺陷,本发明提出一种基于匈牙利算法的串并联系统指派问题优 化方法。

为解决现有技术中存在的问题,本发明提出的技术方案是:

一种基于匈牙利算法的串并联系统指派问题优化方法,其特征在于包括以下步骤:

(1)将系统分为串联部分和并联部分;

S(m,n)=C(a)+B(b)

式中,S(m,n)代表整个系统即指派问题,m个人完成n项工作;C(a)代表所有串联部分的 工作,共有a个;B(b)代表并联部分的工作,共有b个并联环节(B1,B2,…,Bb);

(2)建立并联部分的虚拟工作并初始化;

每个并联环节都需要有一个对应的虚拟工作因此虚拟工作的数量也为b,初始化虚 拟工作也就是确定虚拟工作的时间向量

TkV=[Tk_1V,Tk_2V,...,Tk_mV]T

其中,表示人员i完成虚拟工作的时间;

将虚拟工作的初始值设定为各个人员完成虚拟工作的理论最小时间指的是在人员j参与并联环节i的一项工作的前提下,并联工作可能完成的最小时间,即:

Tij_minV=min(Tij_1,Tij_2,...,Tij_mk)

式中,Tij_p(p=1,2,…,mk)表示人员j完成并联环节i中的工作p需要的时间。

那么,初始虚拟工作为

Tk_minV=[Tk1_minV,Tk2_minV,...,Tkm_minV]T

(3)利用原系统中的串联工作和虚拟工作构建新的纯串联系统SV

SV={J1,J2,...,Ja,J1V,J2V,...,JbV}

对应的时间矩阵

TSV=[T1,T2,...Ta,T1V,T2V,...,TbV]Ti=[Ti1,Ti2,...,Tim]T,i=1,2,...,aTjV=[Tk_1V,Tk_2V,...,Tk_mV]T,j=1,2,...,b

(4)利用经典匈牙利算法对步骤(3)的纯串联系统SV进行任务指派,得到分配方案

PSV={PcSV,PVSV}PcSV=[p1,p2,...,pa]PVSV=[pv1,pv2,...,pvb]

由于用虚拟工作代替了并联环节,指派方案必定有空闲人员Rfree:

Rfree=[Rf_1,Rf_2,...,Rf_Nf]

Nf为空闲人员数量,且有:

Nf=Σi=1bmi-b

(5)判断步骤(4)中所有虚拟工作是否均可实现即判断分配方案中所有虚拟工作 JV是否可实现,如果是则转步骤(7),否则转(6);

虚拟工作JV可实现是指由空闲人员Rfree以及分配方案中被指派到完成该虚拟工作的 人员组成的并联环节实现方案的时间满足:

TPvk=min(Time_PkV)

其中Tpvk是方案中人员pvk完成虚拟工作的时间。表示并联环节Bk的实 现方案的总时间。

(6)改变不可实现的虚拟工作的效率向量,返回步骤(3);

A.如果方案P中虚拟工作可实现最小时间小于虚拟工作k对应的时间即:

TPvk<min(Time_PkV)

其中表示并联环节k在人员pvk参与下的任意一种可实现方案的完成时间。

那么,增加一个单位,转步骤3。即:

TPvkV=TPvkV+1

B.如果方案P中虚拟工作可实现最小时间大于虚拟工作对应的时间

TPvk>min(Time_PkV)

则减少一个单位,然后转步骤3。即:

TPvkV=TPvkV-1

(7)用可实现的并联工作方案代替虚拟工作,得到最优分配方案,优化结束。

具体地,本发明中的虚拟工作是指具有普通工作的所有参数特征,但不是具体工作。

在步骤(2)中的虚拟工作数量与并联环节数量相等,即每个并联环节都对应一个虚拟工 作。

本发明的有益技术效果是:

本发明对传统匈牙利算法进行了改进,扩展了匈牙利算法的应用范围,使其能够解决串 并联系统的任务指派问题。本发明具有步骤简单、搜索速度快且能得到全局最优解等优点。

附图说明

图1是本发明的流程图

图2是某装备系统制造流程图

图3是用虚拟工序替换后的系统流程图

具体实施方式

优化对象模型

现有一个指派问题S,由a个串联工作(J1,J2,…,Ja)和b个并联环节组成(B1,B2,…,Bb), 各个并联环节的工作数量分别为mi(i=1,2,…,b),现有Num_R个人员(R1,R2,…,RNum_R),且:

Num_R=a+Σi=1bmi

某一指派方案P的总时间为:

Time_Popt=Σi=1aTiC+Σi=1bmax(Ti1B,Ti2B,...,TimiB)

其中TiC为串联部分工作i需要的时间,为并联环节i的工作j的时间。

已知每名人员完成各项工作的时间,要求每个人只能且必须完成一项任务,问题是需找 最优的指派方案P使得总的时间最小。

相关符号定义

为了方便说明,首先给出相关符号的定义。

S(m,n):优化对象(即指派问题S的抽象描述),m个人完成n项工作。

R(m):人员,共有m个人员。

R=[R1,R2,…,Rm]

其中Ri(i=1,2,…,m)表示人员i

J(n):工作,共有n项工作

J=[J1,J2,…,Jn]

其中Jj(j=1,2,…,n)表示工作j

C(a):S(m,n)的串联部分,共有a项工作,且有:

a<=n

B(b):S(m,n)的并联部分,共有b个并联环节,每个并联环节有bi项工作。

B=[B1,B2,…,Bb]

其中Bk(k=1,2,…,b)表示系统中的并联部分k。

JBi(q):表示并联环节Bi的工作:

JBi(q)=[J1Bi,J2Bi,...,JqBi]

其中表示并联环节Bi的工作j。

TS:表示S的时间矩阵(即效益矩阵),由人员完成工作的时间组成的m×n矩阵,即:

TS=[T1,T2,...,Tn]Ti=[Ti1,Ti2,...,Tim]T,i=1,2,...,n

其中Tij(i=1,2,…,m;j=1,2,…,n)表示人员j完成工作i的时间。

PS:表示S的一种指派方案

PS=[p1,p2,…,pn]

具体是指人员pi完成工作i。

Time_P:表示系统S的指派方案PS的总时间:

Time_P=Σi=1nTpii

代表虚拟工作k

代表虚拟工作k对应的时间向量

TkV=[Tk1V,Tk2V,...,TkmV]T

其中表示人员i完成虚拟工作的时间。

SV(m,a+b):表示用虚拟工作代替并联环节得到的纯串联系统,m个人,a+b项工作,其 中有b项虚拟工作。即:

SV={J1,J2,...,Ja,J1V,J2V,...,JbV}

:表示SV的时间矩阵(效益矩阵)

TSV=[T1,T2,...Ta,T1V,T2V,...,TbV]Ti=[Ti1,Ti2,...,Tim]T,i=1,2,...,aTjV=[Tk_1V,Tk_2V,...,Tk_mV]T,j=1,2,...,b

式中,Ti(i=1,2,…,a)表示串联工作i的时间向量,表示虚拟工作j的时间向 量。

:表示SV的一种指派方案

PSV={PcSV,PVSV}PcSV=[p1,p2,...,pa]PVSV=[pv1,pv2,...,pvb]

具体表示人员pi,(i=1,2,…,a)完成串联部分的工作Ji;人员pvi,(i=1,2,…,b)完成虚拟工作

TP:表示指派方案对应的各个工作的时间

TP=[Tp1,Tp2,...,Tpa,Tpv1,Tpv2,...,Tpvb]

其中,Tpi表示人员pi,(i=1,2,…,a)完成串联部分的工作Ji的时间,Tpvi人员pvi,(i=1,2,…,b) 完成虚拟工作的时间。

表示虚拟工作k代表的并联环节Bk的一种实现方案。

PkV=[pk1,pk2,...,pkq]

具体表示人员pki(i=1,2,…,q)完成并联环节Bk中的工作

表示方案的总时间。

Time_pkV=max(Tpkij)

其中表示人员pki完成并联环节Bk中工作的时间。

:表示针对SV的方案的总时间。

Time_PSV=Σi=1aTpii+Σi=jbTpsij

其中表示人员pi完成工作Ji需要的时间,完成虚拟工作需要的时间。

针对串并联并存的任务指派问题,参照图1,是本发明的流程图,下面结合附图,对本 发明基于匈牙利算法的串并联系统指派问题优化方法进行详细描述。

算法的详细步骤如下:

步骤1将系统分为串联部分和并联部分:即:

S(m,n)=C(a)+B(b)

式中,S(m,n)代表整个系统(指派问题);C(a)代表所有串联的工作,共有a个;B(b)代表 并联环节,数量为b。

步骤2初始化并联部分B的虚拟工作JV

每个并联环节都需要有一个对应的虚拟工作因此虚拟工作的数量也为b。初始化虚 拟工作也就是确定虚拟工作的时间向量

理论上,虚拟工作的时间向量可以初始化为

Tk_zerosV=[0,0,...,0]T

即假设每个人完成虚拟工作的时间为0,但显然这样的初始点会导致大量的无用迭代(因 为并联环节的工作时间不可能是0)。

为了提高算法的搜索效率,本文将虚拟工作Jvi的初始值设定为各个人员完成虚拟工作i 的理论最小时间指的是在人员j参与并联环节i的某项工作的前提下,并联工 作可能完成的最小时间,即:

Tij_minV=min(Tij1,Tij2,...,Tijmk)

式中,Tijp(p=1,2,…,mk)表示人员j完成并联环节i中的工作p需要的时间。

那么,初始虚拟工作为

Tk_minV=[Tk1_minV,Tk2_minV,...,Tkm_minV]T

步骤3利用原系统中的串联工作和虚拟工作构建新的纯串联系统SV

SV={J1,J2,...,Ja,J1V,J2V,...,JbV}

对应的时间矩阵

TSV=[T1,T2,...Ta,T1V,T2V,...,TbV]Ti=[Ti1,Ti2,...,Tim]T,i=1,2,...,aTjV=[Tk_1V,Tk_2V,...,Tk_mV]T,j=1,2,...,b

步骤4利用传统的匈牙利算法对SV进行任务指派,得到分配方案

PSV={PcSV,PVSV}PcSV=[p1,p2,...,pa]PVSV=[pv1,pv2,...,pvb]

虽然原指派问题的人数和任务数是相同,但由于用虚拟工作代替了并联环节,指派方案 必定有空闲人员Rfree:

Rfree=[Rf_1,Rf_2,...,Rf_Nf]

Nf为空闲人员数量,且有:

Nf=Σi=1bmi-b

步骤5判断分配方案中所有虚拟工作JV是否实现,如果是则转步骤7,否则转步骤 6。

虚拟工作JV可实现是指由空闲人员Rfree以及分配方案中的完成虚拟工作的人员虚 拟工作的人员,组成的并联环节实现方案的时间满足:

TPvk=min(Time_PkV)

其中Tpvk是方案中人员pvk完成虚拟工作的时间。表示并联环节Bk的实 现方案的总时间。

步骤6改变不可实现的虚拟工作的效率向量,返回步骤(3);

a.如果方案P中虚拟工作可实现最小时间小于虚拟工作k对应的时间即:

TPvkV<min(Time_PkV)

其中表示并联环节k在人员pvk参与下的任意一种可实现方案的完成时间。

那么,增加一个单位,转步骤3。即:

TPvkV=TPvkV+1

b.如果方案P中虚拟工作可实现最小时间大于虚拟工作对应的时间

TPvkV>min(Time_PkV)

则减少一个单位,然后转步骤3。即:

TPvkV=TPvkV-1

本文将虚拟工作对应时间减少称之为过优回退原则,设置过优回退原则的目的是为了避 免遗漏最优解,后面的理论推导会给出详细说明。

步骤7用可实现的并联工作方案代替分配方案P中的虚拟工作,得到最终的最优分配方 案P*,优化结束。

为了更详细的介绍本文提出的改进匈牙利算法的步骤,并验证算法的有效性,本文给出 了某装备制造系统任务调度的实例。

实例

1、问题描述

某装备制造系统制造流程如图2所示,共有11项工作,其中有3个并联环节,分别记 P1(J2、J3),P2(J5、J6、J7)和P3(J9,J10)。该系统总的加工时间为Tall

Tall=TJ1+max(TJ2,TJ3)+TJ4+max(TJ5,TJ6,TJ7)+TJ8+max(TJ9,TJ10)+TJ11

其中TJi(i=1,2,…,11)代表工作Ji需要的时间。

现有11名工人,并已知每名工人完成各个工作需要的时间,如表1。

表1工人完成各项工作需要的时间

  J1J2J3J4J5J6J7J8J9J10J11R140 39 52 10 65 32 58 21 49 52 8 R241 33 49 15 68 30 60 26 48 56 12 R339 35 47 14 55 38 54 24 42 52 15 R437 32 50 16 58 37 59 25 48 54 16 R545 30 52 12 62 35 50 28 43 50 14 R636 34 48 18 57 34 52 24 45 48 18 R738 34 49 13 60 36 53 26 45 46 16 R842 33 50 15 62 35 57 23 46 49 15 R946 39 48 16 58 34 55 27 48 52 16 R1038 38 52 14 56 38 59 24 47 54 13 R1139 36 50 19 64 34 54 29 46 48 17

表中,Ri(i=1,2,…,11)分别代表11名工人,Ji(i=1,2…,11)分别代表11项工作,时间单位 为分钟。要求每名工人有且完成一项工作,寻找最优的任务分配方案。

2、基于本发明方法的任务分配

(1)、确定并联环节,同时计算并联环节虚拟工作的各个人员最小完成时间。

分析图2可知,该系统共3个并联环节,分别是P1(J2、J3),P2(J5、J6、J7)和P3(J9,J10)。 利用虚拟工作1(Jv1),虚拟工作2(Jv2)以及虚拟工作3(Jv3)代替并联环节,得到新的纯串联系统, 如图3。

其中,

Jv1=[TV1_1,Tv1_2,Tv1_3,Tv1_4,Tv1_5,Tv1_6,Tv1_7,Tv1_8,Tv1_9,Tv1_10,Tb1_11]TJv2=[Tv2_1,Tv2_2,Tv2_3,Tv2_4,Tv2_5,Tv2_6,Tv2_7,Tv2_8,Tv2_9,Tv2_10,Tv2_11]TJv3=[Tv3_1,Tv3_2,Tv3_3,Tv3_4,Tv3_5,Tv3_6,Tv3_7,Tv3_8,Tv3_9,Tv3_10,Tv3_11]T

其中Tvi_j(i=1,2,3;j=1,2…,11)表示工人j完成虚拟工作i需要的时间。

为了提升算法速度,首先计算出虚拟工作各个工人完成的最小虚拟时间。

Tvi_j_min=min(Tik),k∈Pk

从而得到最小时间虚拟工作Jv1_min,Jv2_min和Jv3_min

Jv1_min=[39,33,35,32,30,34,34,33,39,38,36]TJv2_min=[32,30,38,37,35,34,36,35,34,38,34]TJv3_min=[49,48,42,48,43,45,45,46,48,47,46]T

(2)利用最小时间虚拟工作(Jv1_min,Jv2_min,Jv3_min)以及串联部分的工作(J1,J4,J8,J11,) 构建时间矩阵M0:

M0=403910322149841331530264812393514382442153732163725481645301235284314363418342445183834133626451642331535234615463916342748163838143824471339361934294617

(3)按照传统的匈牙利算法得到M0的最优分配方案。

由于M0并不是一个方阵,按照文献[2]“加零补边”法的步骤,可以得到M0对应的最优 分配方案。

最优方案如表2所示,方案对应的时间为182分钟。

表2M0对应的最优分配方案

(4)判断M0对应的最优分配方案中,并联环节能否实现。

从表2中可以看到,M0对应的最优方案要求R5与R4,R9,R10和R11中的1个在30分钟 完成并联环节P1的工作(J2、J3);要求R2与R4,R9,R10和R11中的2个在30分钟完成并联 环节P2的工作(J5、J6、J7);同时要求R3与R4,R9,R10和R11中的1个在42分钟完成并联 环节P3的工作(J9,J10)。

简单分析就可以发现,按上面的要求,并联环节P1最小花费时间为48分钟,并联环节 P2最小花费时间为58分钟,并联环节P3最小花费时间为48分钟。因此M0对应的最优方案 中的3个虚拟工作(Jv1,Jv2,Jv3)都不能转化为可实现的并联环节,也就是说此时的最优方 案不可实现。

根据改进的匈牙利算法的步骤6,需要将两个虚拟工作对应的时间(M0的最优方案中虚 拟工作Jv1,Jv2,Jv3对应的时间,即Tv1_5,Tv2_2,Tv3_3)提高一个单位,即Tv1_5:32→33,Tv2_2: 12→13,Tv3_3:12→13得到新的虚拟工作。

Jv1=[39,33,35,32,31,34,34,33,39,38,36]TJv2=[32,31,38,37,35,34,36,35,34,38,34]TJv3=[49,48,43,48,43,45,45,46,48,47,46]T

利用Jv1,Jv2,Jv3以及J1,J4,J8,J11构建效益矩阵M1,返回(3)继续搜索直到得到 可行最优解。

3优化结果及分析

利用MATLAB 2008a在主频为3.4GHz的windowXp平台上编程实现,经过226次迭代, 耗时0.6s,最终得到了最优调配方案如表3,总时间为228分钟,且此时迭代的虚拟工作为:

Jv1=[45,49,47,48,47,47,48,48,48,49,49]TJv2=[52,56,55,56,55,55,56,55,56,56,56]TJv3=[48,49,48,48,47,47,48,47,48,48,46]T

表3最终的最优配置方案

利用可实现并联环节替代表3中的虚拟工作,得到完整最优分配方案如表4。

表4完整最优分配方案

J1J2J3J4J5J6J7J8J9J10J11R6R4R3R5R10R2R9R8R11R7R1

为了验证本算法得到的最优解是否为全局最优,本文在相同的平台上通过MATLAB编 程遍历了所有可能的方案(共39916800个),耗时59.7s,找到最优的分配方案如表5,最优 时间为228分钟。

表5遍历结果中的最优方案

J1J2J3J4J5J6J7J8J9J10J11R6R4R3R5R10R2R9R8R11R7R1R6R2R3R5R10R4R9R8R11R7R1

对比表4和表5,可以发现,本发明改进的算法的确得到了全局最优解。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡 属于本发明思路下的技术方案均属于本发明的保护范围。应该提出,对于本技术领域的普通 技术人员来说,在不脱离本发明原理前提下的改进和润饰,这些改进和润饰也应视为本发明 的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号