CN112884370B - 考虑订单插单的高端装备研制过程多项目重调度方法及*** - Google Patents
考虑订单插单的高端装备研制过程多项目重调度方法及*** Download PDFInfo
- Publication number
- CN112884370B CN112884370B CN202110310620.5A CN202110310620A CN112884370B CN 112884370 B CN112884370 B CN 112884370B CN 202110310620 A CN202110310620 A CN 202110310620A CN 112884370 B CN112884370 B CN 112884370B
- Authority
- CN
- China
- Prior art keywords
- work
- task
- solution
- pos
- order
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 89
- 238000003780 insertion Methods 0.000 title claims abstract description 71
- 230000037431 insertion Effects 0.000 title claims abstract description 71
- 230000008569 process Effects 0.000 title claims abstract description 59
- 238000011161 development Methods 0.000 title claims abstract description 23
- 238000010845 search algorithm Methods 0.000 claims abstract description 21
- 230000007246 mechanism Effects 0.000 claims abstract description 14
- 238000004364 calculation method Methods 0.000 claims description 4
- 230000009191 jumping Effects 0.000 claims description 4
- 238000012163 sequencing technique Methods 0.000 claims description 4
- LFQSCWFLJHTTHZ-UHFFFAOYSA-N Ethanol Chemical compound CCO LFQSCWFLJHTTHZ-UHFFFAOYSA-N 0.000 claims description 3
- 238000002441 X-ray diffraction Methods 0.000 claims 1
- 108010085990 projectin Proteins 0.000 claims 1
- 238000004519 manufacturing process Methods 0.000 description 19
- 238000005457 optimization Methods 0.000 description 3
- 238000012827 research and development Methods 0.000 description 3
- 230000002068 genetic effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 235000019788 craving Nutrition 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0631—Resource planning, allocation, distributing or scheduling for enterprises or organisations
- G06Q10/06312—Adjustment or analysis of established resource schedule, e.g. resource or task levelling, or dynamic rescheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/04—Manufacturing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Human Resources & Organizations (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Marketing (AREA)
- Health & Medical Sciences (AREA)
- Tourism & Hospitality (AREA)
- Entrepreneurship & Innovation (AREA)
- General Business, Economics & Management (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Primary Health Care (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Development Economics (AREA)
- Educational Administration (AREA)
- Manufacturing & Machinery (AREA)
- Game Theory and Decision Science (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种考虑订单插单的高端装备研制过程多项目重调度方法及***,根据预设的规则库,通过改进的禁忌搜索算法,首先对工作进行编码,根据订单客户等级形成规则把资源分配到工作上,通过串行调度机制,得出相应的项目调度方案,并找到项目的关键路径以及各个工作的总时差,计算个体的适应度值即为项目的时间跨度以及插单订单工作的拖延时间。在产生邻域解集的过程中,根据插单客户等级和交货日期形成的规则库对个体进行处理,对其个体进行更新,提高解的质量,减少搜索解空间,提高搜索效率。然后根据选出最优个体,更新当前解、最优解以及禁忌表。重复上述步骤进行迭代,从而求得最优解。
Description
技术领域
本发明涉及任务调度技术领域,具体来说是一种基于考虑订单插单的高端装备研制过程多项目重调度方法及***。
背景技术
多项目重调度问题作为一类典型的组合优化问题,在近年来得到广泛的重视和研究。它广泛存在于现代化生产的各行各业,如:生产运输以及航空、船舶、军事等高端装备领域。与传统项目调度问题中的静态调度不同,多项目重调度问题是在不确定环境下进行研究的,包括项目的任务数量、任务类型、工期、资源等。在当今的物联网、大数据、云制造等新信息环境下,以高端装备研制企业为典型,任务数量巨大、工艺流程复杂繁冗、客户订单需求不一,为充分利用现有的生产资源高效高质的完成项目任务,从而为客户提供优质的服务。
现有的研究的关注点主要集中在静态调度或单项目调度上,而针对研制协同和多项目重调度问题的情形的研究相对较少。
如申请为CN201811282077.7公开的航空复杂装备结构件车间作业计划及重调度方法,以设备均衡率和准时交付率为目标函数构建航空复杂装备结构件作业车间计划制定模型,基于多层编码遗传算法设计了模型求解方法,并考虑能力富余和能力不足两种应用情景设计计划制定和重调度算法流程,重调度算法能够识别出正在生产的任务及未开工生产的任务,根据正在加工的工序的完工时刻判断机器允许的开工时刻、工件下一工序的允许开工时刻等,并对剩余工件在符合目标及约束的情况下进行重排,该采用双层编码遗传算法以设备均衡率和准时交付率为目标函数对航空复杂装备结构件车间作业计划重调度。航空企业的生产有很多型号是研发和制造阶段并行,该对比文件并未考虑到研发阶段,仅是对生产制造阶段进行计划重调度。且对比文件对插单订单工序的处理为尽可能优先安排,未考虑插单的交货日期和插单客户的等级,调度方案不合理。
发明内容
本发明所要解决的技术问题在于现有的高端装备研制过程多项目重调度方法未考虑插单任务的交货日期和插单客户的等级,导致现有的调度方法适应性差。
本发明通过以下技术手段实现解决上述技术问题的:
考虑订单插单的高端装备研制过程多项目重调度方法,包括以下步骤:
S1、获取多项目订单数据,所述多项目订单数据包括原计划订单数据和插单订单数据,所述插单订单数据至少包括:插单订单的交货日期、插单客户的等级;基于多项目订单数据初始化禁忌搜索算法的输入参数;设定禁忌搜索算法的执行参数;
S2、将所有工作按基础时间非递增进行排序,得到一个经过排序后的工作集合,根据工作集合,找出各个工作的紧前工作集合Prev(j)和紧后工作集合Next(j);其中j表示工作;
S3、基于所述输入参数和所述执行参数生成初始解,将初始解作为当前解Xs和当前全局最优解Xbest;
S4、基于所述紧前工作集合Prev(j)和所述紧后工作集合Next(j)对当前解Xs的进行解码,基于解码后的当前解Xs和预设的规则库产生邻域解集N(Xs),计算邻域解集内个体的适应度值,选出候选解集List(Xs),所述预设的规则库根据插单订单的交货日期设置;
S5、选出List(Xs)中适应度值最小的个体作为的最优个体Y;
S6、判断最优个体Y的适应度值是否小于全局最优解Xbest,若小于Xbest,则将Y赋值给Xbest,更新当前解Xs,将Y赋值给Xs,更新禁忌表TBList,否则执行步骤S7;
S7、判断步骤S5获得的最优个体Y是否在禁忌表TBList中,若是把List(Xs)中的个体Y移出该集合,更新候选解集List(Xs),并返回步骤S6;否则根据当前解Xs更新禁忌表TSList;
S8、更新当前解,则把Y赋值给Xs;
S9、将I+1赋值给I,判断I≤Imax是否成立,若成立则返回步骤S4;否则算法执行结束,输出最优解Xbest,根据最优解Xbest得到最优调度方案。
本发明针对订单插单情形下的多项目重调度问题,根据预设的规则库,通过改进的禁忌搜索算法,首先对工作进行编码,根据订单客户等级形成规则把资源分配到工作上,通过串行调度机制,得出相应的项目调度方案,并找到项目的关键路径以及各个工作的总时差,计算个体的适应度值即为项目的时间跨度以及插单订单工作的拖延时间。在产生邻域解集的过程中,根据插单客户等级和交货日期形成的规则库对个体进行处理,对其个体进行更新,提高解的质量,减少搜索解空间,提高搜索效率。然后根据选出最优个体,更新当前解、最优解以及禁忌表。重复上述步骤进行迭代,从而求得最优解,即最优的项目调度方案。本发明充分考虑插单订单的交货日期和插单客户的等级,得到的调度方案更加合理,能充分利用企业现有的生产资源,提高高端装备研制企业的效率,即本发明提供的方法适应性强。同时改进的禁忌搜索算法在收敛速度和解的质量方面上表现出良好的性能,通过该算法解决了订单插单情形下多项目重调度问题。
进一步的,所述步骤S1中的输入参数包括:
工作数量N+M、资源数量K、完成工作j需要的基本时间Tj,资源k完成工作j需要时间tjk、各个资源的能力值ck、原计划的交货日期的最早值dtE、最晚值dtL、插单订单的交货日期dtV、工作的位置序号Posj、分配给工作的资源序号Resj和插单客户的等级变量α。
进一步的,所述步骤S3具体为
S301、定义变量j=1;
S302、判断α与αH、αG、αL的关系,若α=αH,则执行S303;若α=αG,则执行S307;若α=αL,则执行S310;其中:α表示插单客户的等级,αH表示高水平客户、αG表示一般水平客户、αL表示低水平客户;
S303、找出工作j可用的资源集合R(Tj),R(Tj)={Rj1,…,Rjb,…,RjB},其中B为工作j可用的资源数量,判断j是否为插单订单工作,若是执行S304,否则执行S305;
S304、随机产生1个在[0,|B/3|]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj,其中|B/3|为大于|B/3|小于(|B/3|+1)的整数;
S305、随机产生1个在[0,B-1]范围内的随机数,记为rand,把Rrand赋值给Redj,把j赋值给Posj;
S306、xj={Resj,Posj},Resj表示工作j使用的资源,Posj表示工作j在工作集合中所处的位置,执行S314;
S307、找出工作j可用的资源集合R(Tj),R(Tj)={Rj1,…,Rjb,…,RjB},其中B为工作j可用的资源数量;
S308、随机产生1个在[0,B-1]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj;
S309、xj={Resj,Posj},Resj表示工作j使用的资源,Posj表示工作j在工作集合中所处的位置;执行S314;
S310、找出工作j可用的资源集合R(Tj),R(Tj)={Rj1,...,Rjb,...,RjB},其中B为工作j可用的资源数量;判断j是否为插单订单工作,若是执行S311,否则执行S312;
S311、随机产生1个在[|2*B/3|,B-1]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj,其中|2*B/3|为大于|2*B/3|小于(|2*B/3|+1)的整数;
S312、随机产生1个在[0,|2*B/3|]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj,其中|2*B/3|为大于|2*B/3|小于(|2*B/3|+1)的整数;
S313、xj={Resj,Posj},Resj表示工作j使用的资源,Posj表示工作j在工作集合中所处的位置;执行S314;
S314、把j+1赋值给j,判断j≤N+M是否成立,若不成立,则返回S302;否则,以X={x1,...,xj,...,xN+M}作为初始解,将初始解作为当前解Xs和当前全局最优解Xbest。
进一步的,所述步骤S4具体为
S401、根据串行调度机制对当前解Xs正向进行解码,解码的过程中得到各个工作的开始时间BTj和工作的结束时间ETj,并标记有资源冲突的工作;
S402、根据串行调度机制对当前解Xs反向进行解码,解码的过程中会得到各个工作的最迟开始时间rBTj和工作的最迟结束时间rETj;
S405、由初始解Xs根据预设的规则库和插单客户的等级获得由W个个体组成的产生邻域解集,记为N(Xs)={X1,...,Xj,...,XW},其中Xj表示邻域解中的第j个个体;
S406、在候选解集中考虑Q个个体,候选解集记为List(Xs),在N(Xs)中选出质量较好的Q个不同个体,并把选出的个体赋值给List(Xs)。
进一步的,所述步骤S405具体包括:
S405a、当α=αH时,若LF<Lmin,执行调度规则1,然后执行步骤S405d;若LF>Lmax,执行调度规则3,然后执行步骤S405d;若Lmin<LF<Lmax,执行调度规则2,然后执行步骤S405d;其中:LF表示插单订单的拖延时间;
S405b、当α=αG时,若LF<Lmin,执行调度规则2,然后执行步骤S405d;若LF>Lmax,执行调度规则4,然后执行步骤S405d;若Lmin<LF<Lmax,执行调度规则3,然后执行步骤S405d;
S405c、当α=αL时,若LF<Lmin,执行调度规则3,然后执行步骤S405d;若LF>Lmax,执行调度规则5,然后执行步骤S405d;若Lmin<LF<Lmax,执行调度规则4,然后执行步骤S405d;
S405d、把j+1赋值给j,判断j≤N+M是否成立,若成立则返回步骤S405a,否则执行步骤S405e;
S405f、当α=αH时,若jk1和jk2均为原工作或均为插单订单工作,将两个工作中大的Pos值赋给总时差小的工作,否则将两个工作Pos值大的赋给插单订单工作;当α=αL时,若jk1和jk2均为原工作或均为插单订单工作,将两个工作中大的Pos值赋给总时差小的工作,否则将两个工作Pos值大的赋给原工作;当α=αG时,将两个工作中大的Pos值赋给总时差小的工作;
S405g、把k+1赋值给k,判断k≤K是否成立,若成立则返回步骤S405e,否则执行步骤S405h;K是冲突资源的个数;
S405h、把l+1赋值给l,判断l≤W是否成立,若成立则返回步骤S405a;否则执行步骤S406。
进一步的,所述步骤S406具体包括:
S406a、定义变量p=1;
S406b、阶段p存在一个不完全计划集合Sp和一个满足紧前关系约束的可行工作集合Dp;
S406c、找出满足紧前关系约束的可行工作集合Dp;
S406d、选出Dp中pos值最大的一个工作j,找出工作j的紧前工作集合为Prey(j),紧后工作集合为Next(j);
S406e、工作j的开始时间为BTj,结束时间为ETj,其中BTj=max{max{Prev(ETj)},UTk},ETj=BTj+tjk,tjk=Tj/ck,max{Prev(ETj)}为该工作所有紧前工作的完成时间ETj的最大值,UTk为该工作资源可用时间的最早可行时间,Tj为完成该工作的基础时间,ck为资源k的能力值;
S406f、将该工作移除Dp,加入到Sp中;
S406g、把p+1赋值给p,若p≤N+M成立,执行步骤S406b;否则执行步骤S406h;
S406h、当p=N+M时,得到各个工作的完成时间集合ET,ET={ET1,...,ETN+M},选出其中最大的元素,并把该元素赋值给Tmax,即Tmax=max ET,得到各个插单订单工作的完成时间选出其中最大的元素,并把该元素赋值给T2max,即T2max=maxET2;
S406i、定义变量f,f=Tmax+max{0,T2max-T2},其中T2表示插单订单的交货时间,把f作为个体的适应度值。
进一步的,所述步骤S6具体包括
更新禁忌表TBList包括:
S601、将初始解Xs作为一个禁忌表元素,记为S={s1,...,sN+M};
S602、判断S中的元素si与禁忌表其他元素的si相同的个数是否都大于[(N+M)/2],若成立,则终止,反之跳到步骤S603;
S603、判断禁忌表内的元素数量是否小于禁忌表长度L,若成立,把禁忌表中最先***的元素移除,然后把S***到禁忌表中,否则,直接将S***到禁忌表中。
本发明还提供一种考虑订单插单的高端装备研制过程多项目重调度***,包括
初始化模块,获取多项目订单数据,所述多项目订单数据包括原计划订单数据和插单订单数据,所述插单订单数据包括:插单客户的等级;基于多项目订单数据初始化禁忌搜索算法的输入参数;设定禁忌搜索算法的执行参数;
工作排序模块,将所有工作按基础时间非递增进行排序,得到一个经过排序后的工作集合,根据工作集合,找出各个工作的紧前工作集合Prev(j)和紧后工作集合Next(j);其中j表示工作;
初始解计算模块,基于所述输入参数和所述执行参数生成初始解,将初始解作为当前解Xs和当前全局最优解Xbest;
解码模块,基于所述紧前工作集合Prev(j)和所述紧后工作集合Next(j)对当前解Xs的进行解码,基于解码后的当前解Xs和预设的规则库产生邻域解集N(Xs),计算邻域解集内个体的适应度值,选出候选解集List(Xs),所述预设的规则库根据插单订单的交货日期设置;
最优个体选择模块,选出List(Xs)中适应度值最小的个体作为的最优个体Y;
第一判断模块,判断最优个体Y的适应度值是否小于全局最优解Xbest,若小于Xbest,则将Y赋值给Xbest,更新当前解Xs,将Y赋值给Xs,更新禁忌表TBList,否则执行步骤S7;
第二判断模块,判断步骤S5获得的最优个体Y是否在禁忌表TBList中,若是把List(Xs)中的个体Y移出该集合,更新候选解集List(Xs),并返回步骤S6;否则根据当前解Xs更新禁忌表TSList;
更新模块,更新当前解,则把Y赋值给Xs;
结果输出模块,将I+1赋值给I,判断I≤Imax是否成立,若成立则返回步骤S4;否则算法执行结束,输出最优解Xbest,根据最优解Xbest得到最优调度方案。
进一步的,所述初始解计算模块具体执行过程为
S301、定义变量j=1;
S302、判断α与αH、αG、αL的关系,若α=αH,则执行S303;若α=αG,则执行S307;若α=αL,则执行S310;其中:α表示插单客户的等级,αH表示高水平客户、αG表示一般水平客户、αL表示低水平客户;
S303、找出工作j可用的资源集合R(Tj),R(Tj)={Rj1,...,Rjb,...,RjB},其中B为工作j可用的资源数量,判断j是否为插单订单工作,若是执行S304,否则执行S305;
S304、随机产生1个在[0,|B/3|]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj,其中|B/3|为大于|B/3|小于(|B/3|+1)的整数;
S305、随机产生1个在[0,B-1]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj;
S306、xj={Resj,Posj},Resj表示工作j使用的资源,Posj表示工作j在工作集合中所处的位置,执行S314;
S307、找出工作j可用的资源集合R(Tj),R(Tj)={Rj1,...,Rjb,...,RjB},其中B为工作j可用的资源数量;
S308、随机产生1个在[0,B-1]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj;
S309、xj={Resj,Posj},Resj表示工作j使用的资源,Posj表示工作j在工作集合中所处的位置;执行S314;
S310、找出工作j可用的资源集合R(Tj),R(Tj)={Rj1,...,Rjb,...,RjB},其中B为工作j可用的资源数量;判断j是否为插单订单工作,若是执行S311,否则执行S312;
S311、随机产生1个在[|2*B/3|,B-1]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj,其中|2*B/3|为大于|2*B/3|小于(|2*B/3|+1)的整数;
S312、随机产生1个在[0,|2*B/3|]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj,其中|2*B/3|为大于|2*B/3|小于(|2*B/3|+1)的整数;
S313、xj={Resj,Posj},Resj表示工作j使用的资源,Posj表示工作j在工作集合中所处的位置;执行S314;
S314、把j+1赋值给j,判断j≤N+M是否成立,若不成立,则返回S302;否则,以X={x1,...,xj,...,xN+M}作为初始解,将初始解作为当前解Xs和当前全局最优解Xbest。
进一步的,所述解码模块的具体执行过程为
S401、根据串行调度机制对当前解Xs正向进行解码,解码的过程中得到各个工作的开始时间BTj和工作的结束时间ETj,并标记有资源冲突的工作;
S402、根据串行调度机制对当前解Xs反向进行解码,解码的过程中会得到各个工作的最迟开始时间rBTj和工作的最迟结束时间rETj;
S405、由初始解Xs根据预设的规则库和插单客户的等级获得由W个个体组成的产生邻域解集,记为N(Xs)={X1,...,Xj,...,Xw},其中Xj表示邻域解中的第j个个体;
S406、在候选解集中考虑Q个个体,候选解集记为List(Xs),在N(Xs)中选出质量较好的Q个不同个体,并把选出的个体赋值给List(Xs)。
本发明的优点在于:
1、本发明针对订单插单情形下的多项目重调度问题,根据预设的规则库,通过改进的禁忌搜索算法,首先对工作进行编码,根据订单客户等级形成规则把资源分配到工作上,通过串行调度机制,得出相应的项目调度方案,并找到项目的关键路径以及各个工作的总时差,计算个体的适应度值即为项目的时间跨度以及插单订单工作的拖延时间。在产生邻域解集的过程中,根据插单客户等级和交货日期形成的规则库对个体进行处理,对其个体进行更新,提高解的质量,减少搜索解空间,提高搜索效率。然后根据选出最优个体,更新当前解、最优解以及禁忌表。重复上述步骤进行迭代,从而求得最优解,即最优的项目调度方案。本发明充分考虑插单订单的交货日期和插单客户的等级,得到的调度方案更加合理,能充分利用企业现有的生产资源,提高高端装备研制企业的效率,即本发明提供的方法适应性强。同时改进的禁忌搜索算法在收敛速度和解的质量方面上表现出良好的性能,通过该算法解决了订单插单情形下多项目重调度问题。
2、本发明实施例在产生邻域解过程中,首先根据初始解产生搜索种群,然后规则库和插单客户等级对该种群个体进行变异操作,根据工作特性,在给资源分配工作时,只考虑制造工作,减少资源再分配给原工作带来的影响,从而缩小搜索解空间,提高该种群个体的质量,而在禁忌表中禁忌的对象为工作分配的资源和位置两维编码,提高解的质量,这样有助与算法跳出局部最优解,从而保证了算法的收敛能力。
3、在根据插单客户等级和交货日期形成的规则库的变异操作过程中,变异的中间体由关键工作集合和工作的总时差集合共同确定,使得个体在变异搜索过程中既保证了优秀个体的传承同时还保证了变异的优化性,使得种群的搜索效率得以提高。
附图说明
图1为本发明实施例的一种考虑订单插单的高端装备研制过程多项目重调度方法的框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种考虑订单插单的高端装备研制过程多项目重调度方法,该方法由计算机执行,如图1所示,包括以下步骤:
S1、获取多项目订单数据,所述多项目订单数据包括原计划订单数据和插单订单数据,所述插单订单数据包括:插单客户的等级;基于多项目订单数据初始化算法的输入参数;设定禁忌搜索算法的执行参数。
在本发明实施例中,通过人工录入或其他方式将多项目订单数据输入到计算机中,多项目订单数据包括原计划订单数据和插单订单数据,这些数据内包括原计划订单的工作数量、插单订单的工作数量、资源数量、完成各个工作的时间、各个资源的能力值、原计划的交货日期的最早值、最晚值、插单订单的交货日期和各个工作的位置序号信息等。根据这些信息设定输入参数,输入参数包括:工作数量N+M、资源数量K、完成工作j需要的基本时间Tj资源k完成工作j需要时间tjk、各个资源的能力值Ck、原计划的交货日期的最早值dtE、最晚值dtL、插单订单的交货日期dtV、工作的位置序号pos、分配给工作的资源序号res和插单客户的等级变量α;执行参数包括:最大迭代次数Imax,当前迭代次数I。
禁忌搜索算法的基本步骤包括:(1)给出初始解;(2)产生邻域解集;(3)确定候选解集;(4)选出候选解集中满足渴望水平的最优解;(5)选出候选解集中不被禁忌的最优解;(6)更新当前解和禁忌表;(7)更新全局最优解。通过重复以上步骤在整个解空间搜索并获取最优解,即最优多项目重调度方案。
影响禁忌搜索算法性能的要素有:编码方法,候选解的确定,禁忌规则等。
本实施例中,禁忌搜索算法的改进点为对候选解的确定进行改进。本实施例的初始解由三个启发式规则确定,在后续迭代过程中的候选解由五个启发式规则确定。使得所有候选解均为可行解,减少搜索空间,提高搜索效率。
S2、将所有工作按基础时间非递增进行排序,得到一个经过排序后的工作集合,根据工作集合,找出各个工作j的紧前工作集合Prev(j)和紧后工作集合Next(j)。
具体实施过程如下:
S202、工作假设需要在研发完成后再进行制造,资源k完成工作j需要时间tjk。
S3、基于所述输入参数和所述执行参数生成初始解,将初始解作为当前解Xs和当前全局最优解Xbest。
具体实施过程如下:
S301、定义变量j=1;
S302、判断α与αH(高水平客户)、αG(一般水平客户)、αL(低水平客户)的关系,若α=αH,则执行S303;若α=αG,则执行S307;若α=αL,则执行S310;
S303、找出工作j可用的资源集合R(Tj),R(Tj)={Rj1,...,Rjb,...,RjB},其中B为工作j可用的资源数量,判断j是否为插单订单工作,若是执行S304,否则执行S305。
S304、随机产生1个在[0,|B/3|]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj,其中|B/3|为大于|B/3|小于(|B/3|+1)的整数;
S305、随机产生1个在[0,B-1]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj;
S306、xj={Resj,Posj},Resj表示工作j使用的资源,Posj表示工作j在工作集合中所处的位置,执行S314。
S307、找出工作j可用的资源集合R(Tj),R(Tj)={Rj1,...,Rjb,...,RjB},其中B为工作h可用的资源数量。
S308、随机产生1个在[0,B-1]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj。
S309、xj={Resj,Posj},Resj表示工作j使用的资源,Posj表示工作j在工作集合中所处的位置。执行S314。
S310、找出工作j可用的资源集合R(Tj),R(Tj)={Rj1,...,Rjb,...,RjB},其中B为工作j可用的资源数量。判断j是否为插单订单工作,若是执行S311,否则执行S312。
S311、随机产生1个在[|2*B/3|,B-1]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj,其中|2*B/3|为大于|2*B/3|小于(|2*B/3|+1)的整数;
S312、随机产生1个在[0,|2*B/3|]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj,其中|2*B/3|为大于|2*B/3|小于(|2*B/3|+1)的整数。
S313、xj={Resj,Posj},Resj表示工作j使用的资源,Posj表示工作j在工作集合中所处的位置。执行S314。
S314、把j+1赋值给j,判断j≤N+M是否成立,若不成立,则返回S302;否则,以x={x1,...,xj,...,xN+M}作为初始解,将初始解作为当前解Xs和当前全局最优解Xbest。
S4、基于紧前工作集合Prev(j)和紧后工作集合Next(j)对当前解Xs的进行解码,基于解码后的当前解Xs和预设的规则库产生邻域解集N(Xs),计算邻域解集内个体的适应度值,选出候选解集List(Xs),所述预设的规则库根据插单订单的交货日期设置。
具体实施过程如下:
S401、根据串行调度机制对当前解Xs正向进行解码,解码的过程中得到各个工作的开始时间BTj和工作的结束时间ETj,并标记有资源冲突的工作;
S402、根据串行调度机制对当前解Xs反向进行解码,解码的过程中会得到各个工作的最迟开始时间rBTj和工作的最迟结束时间rETj;
S405、由初始解Xs根据预设的规则库和插单客户的等级获得由W个个体组成的产生邻域解集,记为N(Xs)={X1,...,Xj,...,XW},其中Xj表示邻域解中的第j个个体。
具体包括:
其中,预设的规则库包括5个调度规则。具体为:
规则1:
第2步:插单订单任务的资源在范围随机生成,LMAX的项目的任务的资源在范围内随机生成(即找出原订单内拖延时间最大的项目,那个项目的资源在范围内随机生成),其他任务的资源在 范围内生成。其中,为工作j可使用的资源集合的数目。
规则2:
规则3:
第2步:插单订单任务的资源在范围随机生成,LMAX的项目的任务的资源在范围内随机生成(即找出原订单内拖延时间最大的项目,那个项目的资源在范围内随机生成),,其他任务的资源在范围内生成。其中,和对和向上取整。
规则4:
规则5:
由初始解Xs根据预设的规则库中的5个调度规则获得由W个个体组成的产生邻域解集的具体过程包括:
S405a、当α=αH时,若LF<Lmin,(LF:插单订单的拖延时间,插单订单的完工时间-插单订单的交货时间;LMIN:原订单的最小拖延时间,拖延时间=完工时间-交货时间)执行调度规则1,然后执行步骤S405d;若LF>Lmax,(LMAX:原订单的最大拖延时间)执行调度规则3,然后执行步骤S405d;若Lmin<LF<Lmax,执行调度规则2,然后执行步骤S405d;
S405b、当α=αG时,若LF<Lmin,执行调度规则2,然后执行步骤S405d;若LF>Lmax,执行调度规则4,然后执行步骤S405d;若Lmin<LF<Lmax,执行调度规则3,然后执行步骤S405d;
S405c、当α=αL时,若LF<Lmin,执行调度规则3,然后执行步骤S405d;若LF>Lmax,执行调度规则5,然后执行步骤S405d;若Lmin<LF<Lmax,执行调度规则4,然后执行步骤S405d;
S405d、把j+1赋值给j,判断j≤N+M是否成立,若成立则返回步骤S405a,否则执行步骤S405e。
S405e、随机产生2个在[0,H-1]范围内的随机数,分别记为i1和i2,i1和i2不相同,jk1和jk2分别为Rc(Rk)对应位置的工作,H为使用冲突资源Rk时产生的冲突工作数量。
S405g、当α=αH时,若jk1和jk2均为原工作或均为插单订单工作,将两个工作中大的Pos值赋给总时差小的工作,否则将两个工作Pos值大的赋给插单订单工作;当α=αL时,若jk1和jk2均为原工作或均为插单订单工作,将两个工作中大的Pos值赋给总时差小的工作,否则将两个工作Pos值大的赋给原工作;当α=αG时,将两个工作中大的Pos值赋给总时差小的工作;
S405h、把k+1赋值给k,判断k≤K是否成立,若成立则返回步骤S405e,否则执行步骤S405i;K是冲突资源的个数;
S405i、把l+1赋值给l,判断l≤W是否成立,若成立则返回步骤S405a;否则执行步骤S406。
S406、在候选解集中考虑Q个个体,候选解集记为List(Xs),在N(Xs)中选出质量较好的Q个不同个体,并把选出的个体赋值给List(Xs)。具体为:
S406a、定义变量p=1。
S406b、阶段p存在一个不完全计划集合Sp和一个满足紧前关系约束的可行工作集合Dp;
S406c、找出满足紧前关系约束的可行工作集合Dp;
S406d、选出Dp中pos值最大的一个工作j,找出工作j的紧前工作集合为Prey(j),紧后工作集合为Next(j)。
S406e、工作j的开始时间为BTj,结束时间为ETj,其中BTj=max{max{Prev(ETj)},UTk},ETj=BTj+tjk,tjk=Tj/ck,max{Prev(ETj)}为该工作所有紧前工作的完成时间ETj的最大值,UTk为该工作资源可用时间的最早可行时间,Tj为完成该工作的基础时间,ck为资源k的能力值。
S406f、将该工作移除Dp,加入到Sp中;
S406g、把p+1赋值给p,若p≤N+M成立,执行步骤S406b;否则执行步骤S406h;
S406h、当p=N+M时,得到各个工作的完成时间集合ET,ET={ET1,...,ETN+M},选出其中最大的元素,并把该元素赋值给Tmax,即Tmax=max ET,得到各个插单订单工作的完成时间选出其中最大的元素,并把该元素赋值给T2max,即T2max=maxET2。
S406i、定义变量f,f=Tmax+max{0,T2max-T2},其中T2表示插单订单的交货时间,把f作为个体的适应度值。
S5、选出List(Xs)中适应度值最小的个体作为的最优个体Y。
S6、判断最优个体Y的适应度值是否小于全局最优解Xbest,若小于Xbest,则将Y赋值给Xbest,更新当前解Xs,将Y赋值给Xs,更新禁忌表TBList,否则执行步骤S7。
具体实施过程如下:
更新禁忌表TBList包括:
S601、将初始解Xs作为一个禁忌表元素,记为S={s1,...,sN+M}。
S602、判断S中的元素si与禁忌表其他元素的si相同的个数是否都大于[(N+M)/2],若成立,则终止,反之跳到步骤S603。
S603、判断禁忌表内的元素数量是否小于禁忌表长度L,若成立,把禁忌表中最先***的元素移除,然后把S***到禁忌表中,否则,直接将S***到禁忌表中。
S7、判断步骤S5获得的最优个体Y是否在禁忌表TBList中,若是把List(Xs)中的个体Y移出该集合,更新候选解集List(Xs),并返回步骤S6;否则根据当前解Xs更新禁忌表TSList;
S8、更新当前解,则把Y赋值给Xs。
S9、将I+1赋值给I,判断I≤Imax是否成立,若成立则返回步骤S4;否则算法执行结束,输出最优解Xbest适应度值,各个工作的原计划开始时间和结束时间以及资源在各个工作上的分配方案。
具体实施过程如下:
将I+1赋值给I,判断I≤Imax是否成立,若成立则返回步骤S4;否则算法执行结束,输出最优解Xbest,最优解Xbest解是二维编码,第一维就是资源与任务的匹配,第二维是pos值,通过串行调度解码最优解Xbest得到每个任务的开始时间和结束时间,得到最优调度方案的调度时刻表。
本发明实施例充分考虑插单订单的交货日期和插单客户的等级,得到的调度方案更加合理,能充分利用企业现有的生产资源,提高高端装备研制企业的效率,即本发明实施例提供的方法适应性强。同时改进的禁忌搜索算法在收敛速度和解的质量方面上表现出良好的性能,通过该算法解决了订单插单情形下多项目重调度问题。
本发明针对订单插单情形下的多项目重调度问题,根据预设的规则库,通过改进的禁忌搜索算法,首先对工作进行编码,根据订单客户等级形成规则把资源分配到工作上,通过串行调度机制,得出相应的项目调度方案,并找到项目的关键路径以及各个工作的总时差,计算个体的适应度值即为项目的时间跨度以及插单订单工作的拖延时间。在产生邻域解集的过程中,根据插单客户等级和交货日期形成的规则库对个体进行处理,对其个体进行更新,提高解的质量,减少搜索解空间,提高搜索效率。然后根据选出最优个体,更新当前解、最优解以及禁忌表。重复上述步骤进行迭代,从而求得最优解,即最优的项目调度方案。本发明充分考虑插单订单的交货日期和插单客户的等级,得到的调度方案更加合理,能充分利用企业现有的生产资源,提高高端装备研制企业的效率,即本发明提供的方法适应性强。同时改进的禁忌搜索算法在收敛速度和解的质量方面上表现出良好的性能,通过该算法解决了订单插单情形下多项目重调度问题。
本发明实施例在产生邻域解过程中,首先根据初始解产生搜索种群,然后规则库和插单客户等级对该种群个体进行变异操作,根据工作特性,在给资源分配工作时,只考虑制造工作,减少资源再分配给原工作带来的影响,从而缩小搜索解空间,提高该种群个体的质量,而在禁忌表中禁忌的对象为工作分配的资源和位置两维编码,提高解的质量,这样有助与算法跳出局部最优解,从而保证了算法的收敛能力。
在根据插单客户等级和交货日期形成的规则库的变异操作过程中,变异的中间体由关键工作集合和工作的总时差集合共同确定,使得个体在变异搜索过程中既保证了优秀个体的传承同时还保证了变异的优化性,使得种群的搜索效率得以提高。
本发明还提供一种考虑订单插单的高端装备研制过程多项目重调度***,包括
初始化模块,获取多项目订单数据,所述多项目订单数据包括原计划订单数据和插单订单数据,所述插单订单数据包括:插单客户的等级;基于多项目订单数据初始化算法的输入参数;设定禁忌搜索算法的执行参数。
在本发明实施例中,通过人工录入或其他方式将多项目订单数据输入到计算机中,多项目订单数据包括原计划订单数据和插单订单数据,这些数据内包括原计划订单的工作数量、插单订单的工作数量、资源数量、完成各个工作的时间、各个资源的能力值、原计划的交货日期的最早值、最晚值、插单订单的交货日期和各个工作的位置序号信息等。根据这些信息设定输入参数,输入参数包括:工作数量N+M、资源数量K、完成工作j需要的基本时间Tj资源k完成工作j需要时间tjk、各个资源的能力值ck、原计划的交货日期的最早值dtE、最晚值dtL、插单订单的交货日期dtV、工作的位置序号pos、分配给工作的资源序号res和插单客户的等级变量α;执行参数包括:最大迭代次数Imax,当前迭代次数I。
工作排序模块,将所有工作按基础时间非递增进行排序,得到一个经过排序后的工作集合,根据工作集合,找出各个工作j的紧前工作集合Prev(j)和紧后工作集合Next(j)。
具体实施过程如下:
S202、工作需要在研发完成后再进行制造,资源k完成工作j需要时间tjk。
初始解计算模块,基于所述输入参数和所述执行参数生成初始解,将初始解作为当前解Xs和当前全局最优解Xbest。
具体实施过程如下:
S301、定义变量j=1;
S302、判断α与αH(高水平客户)、αG(一般水平客户)、αL(低水平客户)的关系,若α=αH,则执行S303;若α=αG,则执行S307;若α=αL,则执行S310;
S303、找出工作j可用的资源集合R(Tj),R(Tj)={Rj1,...,Rjb,...,RjB},其中B为工作j可用的资源数量,判断j是否为插单订单工作,若是执行S304,否则执行S305。
S304、随机产生1个在[0,|B/3|]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj,其中|B/3|为大于|B/3|小于(|B/3|+1)的整数;
S305、随机产生1个在[0,B-1]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj;
S306、xj={Resj,Posj},Resj表示工作j使用的资源,Posj表示工作j在工作集合中所处的位置,执行S314。
S307、找出工作j可用的资源集合R(Tj),R(Tj)={Rj1,...,Rjb,...,RjB},其中B为工作j可用的资源数量。
S308、随机产生1个在[0,B-1]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj。
S309、xj={Resj,Posj},Resj表示工作j使用的资源,Posj表示工作j在工作集合中所处的位置。执行S314。
S310、找出工作j可用的资源集合R(Tj),R(Tj)={Rj1,...,Rjb,...,RjB},其中B为工作j可用的资源数量。判断j是否为插单订单工作,若是执行S311,否则执行S312。
S311、随机产生1个在[|2*B/3|,B-1]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj,其中|2*B/3|为大于|2*B/3|小于(|2*B/3|+1)的整数;
S312、随机产生1个在[0,|2*B/3|]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj,其中|2*B/3|为大于|2*B/3|小于(|2*B/3|+1)的整数。
S313、xj={Resj,Posj},Resj表示工作j使用的资源,Posj表示工作j在工作集合中所处的位置。执行S314。
S314、把j+1赋值给j,判断j≤N+M是否成立,若不成立,则返回S302;否则,以X={x1,...,xj,...,xN+M}作为初始解,将初始解作为当前解Xs和当前全局最优解Xbest。
解码模块,基于紧前工作集合Prev(j)和紧后工作集合Next(j)对当前解Xs的进行解码,基于解码后的当前解Xs和预设的规则库产生邻域解集N(Xs),计算邻域解集内个体的适应度值,选出候选解集List(Xs),所述预设的规则库根据插单订单的交货日期设置。
具体实施过程如下:
S401、根据串行调度机制对当前解Xs正向进行解码,解码的过程中得到各个工作的开始时间BTj和工作的结束时间ETj,并标记有资源冲突的工作;
S402、根据串行调度机制对当前解Xs反向进行解码,解码的过程中会得到各个工作的最迟开始时间rBTj和工作的最迟结束时间rETj;
S405、由初始解Xs根据预设的规则库和插单客户的等级获得由W个个体组成的产生邻域解集,记为N(Xs)={X1,...,Xj,...,XW},其中Xj表示邻域解中的第j个个体。具体包括:
其中,预设的规则库包括5个调度规则。具体为:
规则1:
第2步:插单订单任务的资源在范围随机生成,LMAX的项目的任务的资源在范围内随机生成(即找出原订单内拖延时间最大的项目,那个项目的资源在范围内随机生成),其他任务的资源在 范围内生成。其中,为工作j可使用的资源集合的数目。
规则2:
规则3:
第2步:插单订单任务的资源在范围随机生成,LMAX的项目的任务的资源在范围内随机生成(即找出原订单内拖延时间最大的项目,那个项目的资源在范围内随机生成),,其他任务的资源在范围内生成。其中,和对和向上取整。
规则4:
规则5:
由初始解Xs根据预设的规则库中的5个调度规则获得由W个个体组成的产生邻域解集的具体过程包括:
S405a、当α=αH时,若LF<Lmin,(LF:插单订单的拖延时间,插单订单的完工时间-插单订单的交货时间;LMIN:原订单的最小拖延时间,拖延时间=完工时间-交货时间)执行调度规则1,然后执行步骤S405d;若LF>Lmax,(LMAX:原订单的最大拖延时间)执行调度规则3,然后执行步骤S405d;若Lmin<LF<Lmax,执行调度规则2,然后执行步骤S405d;
S405b、当α=αG时,若LF<Lmin,执行调度规则2,然后执行步骤S405d;若LF>Lmax,执行调度规则4,然后执行步骤S405d;若Lmin<LF<Lmax,执行调度规则3,然后执行步骤S405d;
S405c、当α=αL时,若LF<Lmin,执行调度规则3,然后执行步骤S405d;若LF>Lmax,执行调度规则5,然后执行R骤S405d;若Lmin<LF<Lmax,执行调度规则4,然后执行步骤S405d;
S405d、把j+1赋值给j,判断j≤N+M是否成立,若成立则返回步骤S405a,否则执行步骤S405e。
S405e、随机产生2个在[0,H-1]范围内的随机数,分别记为i1和i2,i1和i2不相同,jk1和jk2分别为Rc(Rk)对应位置的工作,H为使用冲突资源Rk时产生的冲突工作数量;
S405g、当α=αH时,若jk1和jk2均为原工作或均为插单订单工作,将两个工作中大的Pos值赋给总时差小的工作,否则将两个工作Pos值大的赋给插单订单工作;当α=αL时,若jk1和jk2均为原工作或均为插单订单工作,将两个工作中大的Pos值赋给总时差小的工作,否则将两个工作Pos值大的赋给原工作;当α=αG时,将两个工作中大的Pos值赋给总时差小的工作;
S405h、把k+1赋值给k,判断k≤K是否成立,若成立则返回步骤S405e,否则执行步骤S405i;K是冲突资源的个数;
S405i、把l+1赋值给l,判断l≤W是否成立,若成立则返回步骤S405a;否则执行步骤S406。
S406、在候选解集中考虑Q个个体,候选解集记为List(Xs),在N(Xs)中选出质量较好的Q个不同个体,并把选出的个体赋值给List(Xs)。具体为:
S406a、定义变量p=1。
S406b、阶段p存在一个不完全计划集合Sp和一个满足紧前关系约束的可行工作集合Dp;
S406c、找出满足紧前关系约束的可行工作集合Dp;
S406d、选出Dp中pos值最大的一个工作j,找出工作j的紧前工作集合为Prey(j),紧后工作集合为Next(j)。
S406e、工作j的开始时间为BTj,结束时间为ETj,其中BTj=max{max{Prev(ETj)},UTk},ETj=BTj+tjk,tjk=Tj/ck,max{Prev(ETj)}为该工作所有紧前工作的完成时间ETj的最大值,UTk为该工作资源可用时间的最早可行时间,Tj为完成该工作的基础时间,ck为资源k的能力值。
S406f、将该工作移除Dp,加入到Sp中;
S406g、把p+1赋值给p,若p≤N+M成立,执行步骤S406b;否则执行步骤S406h;
S406h、当p=N+M时,得到各个工作的完成时间集合ET,ET={ET1,...,ETN+M},选出其中最大的元素,并把该元素赋值给Tmax,即Tmax=max ET,得到各个插单订单工作的完成时间选出其中最大的元素,并把该元素赋值给T2max,即T2max=maxET2。
S406i、定义变量f,f=Tmax+max{0,T2max-T2},其中T2表示插单订单的交货时间,把f作为个体的适应度值。
最优个体选择模块,选出List(Xs)中适应度值最小的个体作为的最优个体Y。
第一判断模块,判断最优个体Y的适应度值是否小于全局最优解Xbest,若小于Xbest,则将Y赋值给Xbest,更新当前解Xs,将Y赋值给Xs,更新禁忌表TBList,否则执行步骤S7。
具体实施过程如下:
更新禁忌表TBList包括:
S601、将初始解Xs作为一个禁忌表元素,记为S={s1,...,sN+M}。
S602、判断S中的元素si与禁忌表其他元素的si相同的个数是否都大于[(N+M)/2],若成立,则终止,反之跳到步骤S603。
S603、判断禁忌表内的元素数量是否小于禁忌表长度L,若成立,把禁忌表中最先***的元素移除,然后把S***到禁忌表中,否则,直接将S***到禁忌表中。
第二判断模块,判断步骤S5获得的最优个体Y是否在禁忌表TBList中,若是把List(Xs)中的个体Y移出该集合,更新候选解集List(Xs),并返回步骤S6;否则根据当前解Xs更新禁忌表TSList;
更新模块,更新当前解,则把Y赋值给Xs。
结果输出模块,将I+1赋值给I,判断I≤Imax是否成立,若成立则返回步骤S4;否则算法执行结束,输出最优解Xbest适应度值,各个工作的原计划开始时间和结束时间以及资源在各个工作上的分配方案。
具体实施过程如下:
将I+1赋值给I,判断I≤Imax是否成立,若成立则返回步骤S4;否则算法执行结束,输出最优解Xbest,最优解Xbest解是二维编码,第一维就是资源与任务的匹配,第二维是pos值,通过串行调度解码最优解Xbest得到每个任务的开始时间和结束时间,得到最优调度方案的调度时刻表。
需要说明的是,通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (3)
1.考虑订单插单的高端装备研制过程多项目重调度方法,其特征在于:包括以下步骤:
S1、获取多项目订单数据,所述多项目订单数据包括原计划订单数据和插单订单数据,所述插单订单数据至少包括:插单订单的交货日期、插单客户的等级;基于多项目订单数据初始化禁忌搜索算法的输入参数;设定禁忌搜索算法的执行参数;
S2、将所有工作按基础时间非递增进行排序,得到一个经过排序后的工作集合,根据工作集合,找出各个工作的紧前工作集合Prev(j)和紧后工作集合Next(j);其中j表示工作;
S3、基于所述输入参数和所述执行参数生成初始解,将初始解作为当前解Xs和当前全局最优解Xbest;
S4、基于所述紧前工作集合Prev(j)和所述紧后工作集合Next(j)对当前解Xs的进行解码,基于解码后的当前解Xs和预设的规则库产生邻域解集N(Xs),计算邻域解集内个体的适应度值,选出候选解集List(Xs),所述预设的规则库根据插单订单的交货日期设置;
S5、选出List(Xs)中适应度值最小的个体作为的最优个体Y;
S6、判断最优个体Y的适应度值是否小于全局最优解Xbest,若小于Xbest,则将Y赋值给Xbest,更新当前解Xs,将Y赋值给Xs,更新禁忌表TBList,否则执行步骤S7;
S7、判断步骤S5获得的最优个体Y是否在禁忌表TBList中,若是把List(Xs)中的个体Y移出该集合,更新候选解集List(Xs),并返回步骤S6;否则根据当前解Xs更新禁忌表TSList;
S8、更新当前解,则把Y赋值给Xs;
S9、将I+1赋值给I,判断I≤Imax是否成立,若成立则返回步骤S4;否则算法执行结束,输出最优解Xbest,根据最优解Xbest得到最优调度方案;
所述步骤S1中的输入参数包括:
工作数量N+M、资源数量K、完成工作j需要的基本时间Tj、资源k完成工作j需要时间tjk、各个资源的能力值ck、原计划的交货日期的最早值dtE、最晚值dtL、插单订单的交货日期dtV、工作的位置序号Posj、分配给工作的资源序号Resj和插单客户的等级变量α;
所述步骤S3具体为:
S301、定义变量j=1;
S302、判断α与αH、αG、αL的关系,若α=αH,则执行S303;若α=αG,则执行S307;若α=αL,则执行S310;其中:α表示插单客户的等级,αH表示高水平客户、αG表示一般水平客户、αL表示低水平客户;
S303、找出工作j可用的资源集合R(Tj),R(Tj)={Rj1,...,Rjb,...,RjB},其中B为工作j可用的资源数量,判断j是否为插单订单工作,若是执行S304,否则执行S305;
S304、随机产生1个在[0,|B/3|]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj,其中|B/3|为大于|B/3|小于(|B/3|+1)的整数;
S305、随机产生1个在[0,B-1]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj;
S306、xj={Resj,Posj},Resj表示工作j使用的资源,Posj表示工作j在工作集合中所处的位置,执行S314;
S307、找出工作j可用的资源集合R(Tj),R(Tj)={Rj1,...,Rjb,...,RjB},其中B为工作j可用的资源数量;
S308、随机产生1个在[0,B-1]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj;
S309、xj={Resj,Posj},Resj表示工作j使用的资源,Posj表示工作j在工作集合中所处的位置;执行S314;
S310、找出工作j可用的资源集合R(Tj),R(Tj)={Rj1,...,Rjb,...,RjB},其中B为工作j可用的资源数量;判断j是否为插单订单工作,若是执行S311,否则执行S312;
S311、随机产生1个在[|2*B/3|,B-1]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj,其中|2*B/3|为大于|2*B/3|小于(|2*B/3|+1)的整数;
S312、随机产生1个在[0,|2*B/3|]范围内的随机数,记为rand,把Rrand赋值给Resj,把j赋值给Posj,其中|2*B/3|为大于|2*B/3|小于(|2*B/3|+1)的整数;
S313、xj={Resj,Posj},Resj表示工作j使用的资源,Posj表示工作j在工作集合中所处的位置;执行S314;
S314、把j+1赋值给j,判断j≤N+M是否成立,若不成立,则返回S302;否则,以X={x1,...,xj,...,xN+M}作为初始解,将初始解作为当前解Xs和当前全局最优解Xbest;
所述步骤S4具体为:
S401、根据串行调度机制对当前解Xs正向进行解码,解码的过程中得到各个工作的开始时间BTj和工作的结束时间ETj,并标记有资源冲突的工作;
S402、根据串行调度机制对当前解Xs反向进行解码,解码的过程中会得到各个工作的最迟开始时间rBTj和工作的最迟结束时间rETj;
S405、由初始解Xs根据预设的规则库和插单客户的等级获得由W个个体组成的产生邻域解集,记为N(Xs)={X1,...,Xj,...,XW},其中Xj表示邻域解中的第j个个体;
S406、在候选解集中考虑Q个个体,候选解集记为List(Xs),在N(Xs)中选出质量较好的Q个不同个体,并把选出的个体赋值给List(Xs);
所述步骤S405具体包括:
S405a、当α=αH时,若LF<Lmin,执行调度规则1,然后执行步骤S405d;若LF>Lmax,执行调度规则3,然后执行步骤S405d;若Lmin<LF<Lmax,执行调度规则2,然后执行步骤S405d;其中:LF表示插单订单的拖延时间;Lmin为原订单的最小拖延时间,拖延时间=完工时间-交货时间,Lmax为原订单的最大拖延时间;
S405b、当α=αG时,若LF<Lmin,执行调度规则2,然后执行步骤S405d;若LF>Lmax,执行调度规则4,然后执行步骤S405d:若Lmin<LF<Lmax,执行调度规则3,然后执行步骤S405d;
S405c、当α=αL时,若LF<Lmin,执行调度规则3,然后执行步骤S405d;若LF>Lmax,执行调度规则5,然后执行步骤S405d;若Lmin<LF<Lmax,执行调度规则4,然后执行步骤S405d;
S405d、把j+1赋值给j,判断j≤N+M是否成立,若成立则返回步骤S405a,否则执行步骤S405e;
S405e、随机产生2个在[0,H-1]范围内的随机数,分别记为i1和i2,i1和i2不相同,jk1和jk2分别为Rc(Rk)对应位置的工作,H为使用冲突资源Rk时产生的冲突工作数量;
S405f、当α=αH时,若jk1和jk2均为原工作或均为插单订单工作,将两个工作中大的Pos值赋给总时差小的工作,否则将两个工作Pos值大的赋给插单订单工作;当α=αL时,若jk1和jk2均为原工作或均为插单订单工作,将两个工作中大的Pos值赋给总时差小的工作,否则将两个工作Pos值大的赋给原工作;当α=αG时,将两个工作中大的Pos值赋给总时差小的工作;
S405g、把k+1赋值给k,判断k≤K是否成立,若成立则返回步骤S405e,否则执行步骤S405h;K为冲突源的个数;
S405h、把l+1赋值给l,判断l≤W是否成立,若成立则返回步骤S405a;否则执行步骤S406;
所述调度规则1为:
所述调度规则2为:
所述调度规则3为:
所述调度规则4为:
所述调度规则5为:
所述步骤S406具体包括:
S406a、定义变量p=1;
S406b、阶段p存在一个不完全计划集合Sp和一个满足紧前关系约束的可行工作集合Dp;
S406c、找出满足紧前关系约束的可行工作集合Dp;
S406d、选出Dp中pos值最大的一个工作j,找出工作j的紧前工作集合为Prev(j),紧后工作集合为Next(j);
S406e、工作j的开始时间为BTj,结束时间为ETj,其中BTj=max{max{Prev(ETj)},UTk},ETj=BTj+tjk,tjk=Tj/ck,max{Prev(ETj)}为该工作所有紧前工作的完成时间ETj的最大值,UTk为该工作资源可用时间的最早可行时间,Tj为完成该工作的基础时间,ck为资源k的能力值;
S406f、将该工作移除Dp,加入到Sp中;
S406g、把p+1赋值给p,若p≤N+M成立,执行步骤S406b;否则执行步骤S406h;
S406h、当p=N+M时,得到各个工作的完成时间集合ET,ET={ET1,...,ETN+M},选出其中最大的元素,并把该元素赋值给Tmax,即Tmax=max ET,得到各个插单订单工作的完成时间选出其中最大的元素,并把该元素赋值给T2max,即T2max=maxET2;
S406i、定义变量f,f=Tmax+max{0,T2max-T2},其中T2表示插单订单的交货时间,把f作为个体的适应度值。
2.根据权利要求1所述的考虑订单插单的高端装备研制过程多项目重调度方法,其特征在于:所述步骤S6具体包括
更新禁忌表TBList包括:
S601、将初始解Xs作为一个禁忌表元素,记为S={s1,...,sN+M};
S602、判断S中的元素si与禁忌表其他元素的si相同的个数是否都大于[(N+M)/2],若成立,则终止,反之跳到步骤S603;
S603、判断禁忌表内的元素数量是否小于禁忌表长度L,若成立,把禁忌表中最先***的元素移除,然后把S***到禁忌表中,否则,直接将S***到禁忌表中。
3.考虑订单插单的高端装备研制过程多项目重调度***,用于执行如权利要求1所述的考虑订单插单的高端装备研制过程多项目重调度方法,其特征在于:包括
初始化模块,获取多项目订单数据,所述多项目订单数据包括原计划订单数据和插单订单数据,所述插单订单数据包括:插单客户的等级;基于多项目订单数据初始化禁忌搜索算法的输入参数;设定禁忌搜索算法的执行参数;
工作排序模块,将所有工作按基础时间非递增进行排序,得到一个经过排序后的工作集合,根据工作集合,找出各个工作的紧前工作集合Prev(j)和紧后工作集合Next(j);其中j表示工作;
初始解计算模块,基于所述输入参数和所述执行参数生成初始解,将初始解作为当前解Xs和当前全局最优解Xbest;
解码模块,基于所述紧前工作集合Prev(j)和所述紧后工作集合Next(j)对当前解Xs的进行解码,基于解码后的当前解Xs和预设的规则库产生邻域解集N(Xs),计算邻域解集内个体的适应度值,选出候选解集List(Xs),所述预设的规则库根据插单订单的交货日期设置;
最优个体选择模块,选出List(Xs)中适应度值最小的个体作为的最优个体Y;
第一判断模块,判断最优个体Y的适应度值是否小于全局最优解Xbest,若小于Xbest,则将Y赋值给Xbest,更新当前解Xs,将Y赋值给Xs,更新禁忌表TBList,否则执行步骤S7;
第二判断模块,判断步骤S5获得的最优个体Y是否在禁忌表TBList中,若是把List(Xs)中的个体Y移出该集合,更新候选解集List(Xs),并返回步骤S6;否则根据当前解Xs更新禁忌表TSList;
更新模块,更新当前解,则把Y赋值给Xs;
结果输出模块,将I+1赋值给I,判断I≤Imax是否成立,若成立则返回步骤S4;否则算法执行结束,输出最优解Xbest,根据最优解Xbest得到最优调度方案。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110310620.5A CN112884370B (zh) | 2021-03-23 | 2021-03-23 | 考虑订单插单的高端装备研制过程多项目重调度方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110310620.5A CN112884370B (zh) | 2021-03-23 | 2021-03-23 | 考虑订单插单的高端装备研制过程多项目重调度方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112884370A CN112884370A (zh) | 2021-06-01 |
CN112884370B true CN112884370B (zh) | 2022-10-28 |
Family
ID=76041963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110310620.5A Active CN112884370B (zh) | 2021-03-23 | 2021-03-23 | 考虑订单插单的高端装备研制过程多项目重调度方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112884370B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115271130B (zh) * | 2022-09-30 | 2023-04-07 | 合肥工业大学 | 面向船舶主动力设备维修订单的动态调度方法及*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101271543A (zh) * | 2008-04-23 | 2008-09-24 | 永凯软件技术(上海)有限公司 | 一种应用了基于精英解池的遗传算法的生产排程***和方法 |
CN103955754A (zh) * | 2014-04-16 | 2014-07-30 | 江南大学 | 基于实时生产数据采集的模具车间调度方法 |
CN107392402A (zh) * | 2017-09-11 | 2017-11-24 | 合肥工业大学 | 基于改进禁忌搜索算法的生产运输协同调度方法及*** |
CN107831745A (zh) * | 2017-11-09 | 2018-03-23 | 西南交通大学 | 一种柔性作业车间插单动态调度优化方法 |
CN109359884A (zh) * | 2018-10-31 | 2019-02-19 | 南京航空航天大学 | 航空复杂装备结构件车间作业计划及重调度方法 |
CN110210700A (zh) * | 2019-04-19 | 2019-09-06 | 中国科学院遥感与数字地球研究所 | 面向应急响应的基于任务优先级的多星动态任务规划方法 |
-
2021
- 2021-03-23 CN CN202110310620.5A patent/CN112884370B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101271543A (zh) * | 2008-04-23 | 2008-09-24 | 永凯软件技术(上海)有限公司 | 一种应用了基于精英解池的遗传算法的生产排程***和方法 |
CN103955754A (zh) * | 2014-04-16 | 2014-07-30 | 江南大学 | 基于实时生产数据采集的模具车间调度方法 |
CN107392402A (zh) * | 2017-09-11 | 2017-11-24 | 合肥工业大学 | 基于改进禁忌搜索算法的生产运输协同调度方法及*** |
CN107831745A (zh) * | 2017-11-09 | 2018-03-23 | 西南交通大学 | 一种柔性作业车间插单动态调度优化方法 |
CN109359884A (zh) * | 2018-10-31 | 2019-02-19 | 南京航空航天大学 | 航空复杂装备结构件车间作业计划及重调度方法 |
CN110210700A (zh) * | 2019-04-19 | 2019-09-06 | 中国科学院遥感与数字地球研究所 | 面向应急响应的基于任务优先级的多星动态任务规划方法 |
Non-Patent Citations (3)
Title |
---|
"Testing multiple threads Tabu search by solving scheduling problems";Shuo-Cheng Sun 等;《2016 IEEE International Conference on Industrial Engineering and Engineering Management (IEEM)》;20161229;第912-916页 * |
基于混合禁忌搜索算法的供应链排序问题;蒋大奎等;《机械工程学报》;20111020(第20期);全文 * |
插单扰动下流水线生产与维护的重调度优化;裴海燕等;《工业工程与管理》;20170210(第01期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112884370A (zh) | 2021-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109165808B (zh) | 一种电力通信网现场运维工单派发方法 | |
CN109409773B (zh) | 一种基于合同网机制的对地观测资源动态规划方法 | |
CN112561194B (zh) | 一种混合流水车间生产与物流集成调度方法及*** | |
CN105488568A (zh) | 一种基于目标重要性分解的模因演化多目标优化调度方法 | |
CN113988396B (zh) | 一种基于nsga-iii算法的工序排序多目标优化方法 | |
CN111047272A (zh) | 一种用于多语言协同开发的项目调度方法及装置 | |
Da Silva et al. | A hybrid memetic approach for fully automated multi-objective web service composition | |
CN113128839B (zh) | 面向高端装备分布式制造与多模式运输的协同调度方法 | |
CN112884370B (zh) | 考虑订单插单的高端装备研制过程多项目重调度方法及*** | |
CN115271130B (zh) | 面向船舶主动力设备维修订单的动态调度方法及*** | |
CN110751292B (zh) | 一种基于遗传算法的云制造多视角协同调度优化方法 | |
CN111950761B (zh) | 面向高端装备复杂分层任务网络的研制资源集成调度方法 | |
CN117555305A (zh) | 一种基于nsgaii的多目标可变子批柔性车间作业调度方法 | |
CN111553610B (zh) | 一种基于学习-遗忘效应的调度方法及*** | |
Yusof et al. | Constraint-chromosome genetic algorithm for flexible manufacturing system machine-loading problem | |
CN116822217A (zh) | 一种考虑工时不确定性的人机双资源约束多目标生产调度方法 | |
Gollmer et al. | Primal and dual methods for unit commitment in a hydro-thermal power system | |
CN113220437B (zh) | 一种工作流多目标调度方法及装置 | |
CN115421885A (zh) | 一种分布式多目标云任务的调度方法、装置及云服务*** | |
CN115034557A (zh) | 一种敏捷卫星应急任务规划方法 | |
CN111008788B (zh) | 一种基于改进离散头脑风暴优化算法的引航员指派方法 | |
Quan et al. | Multi-objective evolutionary scheduling based on collaborative virtual workflow model and adaptive rules for flexible production process with operation reworking | |
CN117575209A (zh) | 考虑关键节点的高端装备研发多阶段协同调度方法及*** | |
Czogalla et al. | A hybrid particle swarm algorithm for resource-constrained project scheduling | |
CN109189817A (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 |