CN109978365B - 一种基于动态工序偏序关系表的复杂产品综合调度方法 - Google Patents
一种基于动态工序偏序关系表的复杂产品综合调度方法 Download PDFInfo
- Publication number
- CN109978365B CN109978365B CN201910212478.3A CN201910212478A CN109978365B CN 109978365 B CN109978365 B CN 109978365B CN 201910212478 A CN201910212478 A CN 201910212478A CN 109978365 B CN109978365 B CN 109978365B
- Authority
- CN
- China
- Prior art keywords
- gene
- partial order
- chromosome
- genes
- relation table
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
-
- 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/06316—Sequencing of tasks or work
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Biology (AREA)
- Strategic Management (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Entrepreneurship & Innovation (AREA)
- Economics (AREA)
- General Physics & Mathematics (AREA)
- Marketing (AREA)
- Biomedical Technology (AREA)
- Tourism & Hospitality (AREA)
- Quality & Reliability (AREA)
- Operations Research (AREA)
- Game Theory and Decision Science (AREA)
- Educational Administration (AREA)
- Development Economics (AREA)
- Physiology (AREA)
- Genetics & Genomics (AREA)
- Artificial Intelligence (AREA)
- General Business, Economics & Management (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Factory Administration (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提出一种基于动态工序偏序关系表的复杂产品综合调度方法,所述方法设计了调度复杂产品的智能方法,主要分为四个部分。其中,编码部分设计了动态工序偏序关系表,便于后续遗传算子的设计;交叉部分设计了两点交叉法和多点交叉法;变异部分设计了基于动态工序偏序关系表的插入式变异法和混乱式变异法,并且都能保证所生成子代染色体的合法性;解码部分设计了基于插入的贪婪式解码方法。本发明所述方法可行性与优越性通过实验得以验证。
Description
技术领域
本发明属于综合调度技术领域,特别是涉及一种基于动态工序偏序关系表的复杂产品综合调度方法。
背景技术
复杂产品的生产调度问题是一类典型的NP问题,到目前为止没有有效的算法能够终生获得最优解。随着社会经济的发展,人们对个性化定制型产品的需求逐渐增多。传统的车间调度算法出现了不足,特别是在调度树状复杂结构产品时,现有的元启发式算法、粒子群优化算法、遗传算法、人工蜂群算法、蛙跳算法、水草算法等虽然解决了大批量生产的流水车间调度问题以及多品种小批量生产的车间调度问题,但是针对解决存在约束条件的产品调度问题时,不仅割裂了产品内在生产与装配间的并行关系,而且还存在以下问题:1.因生产调度规模的不断增大而导致的求解时间有效性易受限的问题;2.因编码方法和进化算子的易失效性,导致的算法在综合调度中应用受限的问题;3.因不可行染色体的检测与修复工作,导致的计算量增加、算法运行效率降低的问题;4.编码方式多存在缺陷,容易遗漏最优解的问题。
发明内容
本发明目的是为了解决现有的技术问题,提出了一种基于动态工序偏序关系表的复杂产品综合调度方法。
本发明是通过以下技术方案实现的,本发明提出一种基于动态工序偏序关系表的复杂产品综合调度方法,
S1:建立动态工序偏序关系表
根据工艺加工树生成描述产品工艺加工树中各工序节点之间优先顺序关系的工序偏序关系图,根据工序偏序关系图建立动态工序偏序关系表,所述动态工序偏序关系表行为加工工序,列为偏序关系;所述动态工序偏序关系表中第i行第j列的元素值mij取值为0、1或-1;其中,0表示在工序偏序关系图中工序和偏序关系不相关,1表示在工序偏序关系图中工序是偏序关系的终点,-1表示在工序偏序关系图中工序是偏序关系的起点;
S2:基于动态工序偏序关系表进行染色体编码
采用基于工序的编码方式,通过识别动态工序偏序关系表,获取当前时刻的待调度工序集,随机确定某一可调度工序进行加工,即编码后染色体中基因位上的数字表示复杂产品的工序编号;
S3:交叉操作
采用两点交叉法或多点交叉法进行交叉操作,使得子代个体工序间满足顺序约束关系,并且子代个体能继承父代优良性状;
S4:变异操作
采用基于动态工序偏序关系表的插入式变异法或基于动态工序偏序关系表的混乱式变异法进行变异操作;经变异后所产生的子代不包含不可行解;
S5:解码操作
基于插入的贪婪式解码规则进行解码操作。
进一步地,所述动态工序偏序关系表建立的规则为:
(1)工序偏序关系图中每一条边关联两个工序节点,动态工序偏序关系表中的每一行只有两个非0元素,即-1和1,分别指明边的起点工序和终点工序;
(2)每一列中元素值为1的个数为工序偏序关系图中该列对应工序节点的入度,元素值为-1的个数为该列对应工序节点的初度;每个工序节点的初度为0或1,动态工序偏序关系表中每列中元素值-1最多只能出现一次;
(3)若在调度过程中,某一列中元素值全为0,则该列对应的工序已调度加工,即该工序处于已调度工序集;
(4)针对同一件复杂产品,当产品所对应的工序偏序关系图中结点或边的编号不同时,其对应的动态工序偏序关系表仅有行序或列序的差别。
进一步地,所述基于动态工序偏序关系表进行染色体编码,具体步骤为:
步骤21:对产品动态工序偏序关系表进行识别,得到当前时刻待调度工序集S;
步骤22:任选待调度工序集中的可调度工序Oi作为此刻的调度工序,同时更新动态工序偏序关系表;
步骤23:重复步骤21,判断此刻所得的待调度工序集是否为空,若为空集,则染色体编码过程结束,产品调度加工完成,否则,跳转至步骤22。
进一步地,所述步骤21具体为:
根据动态工序偏序关系表的建立规则可知,若表中第j列的所有元素值m.j的非零元素仅为-1,则此刻没有边指向结点工序Oj,即当前时刻没有其他任何工序偏序于工序Oj,也就是说没有工序需要先于工序Oj加工,因此,工序Oj为当前时刻的可调度工序,遍历表中的每一列,找出所有m.j非零元素仅为-1的列元素所对应的工序,便可以得到当前时刻的待调度工序集。
进一步地,所述步骤22具体为:
若当前所选择的工序为Oi,则调度加工该工序,并将工序Oi从待调度工序集中删除,将其加入到已调度工序集;同时令动态工序偏序关系表中第i行的所有元素值mi.中非零元素所对应行的所有元素值置0,即解除工序Oi对其紧后工序的优先约束关系。
进一步地,所述两点交叉法具体为:
步骤31:在配对的父染色体V1和V2中,随机确定重组基因串的起止位置,两条父染色体中被选位置相同,并且保证重组基因串中基因数大于1且不等于整条染色体的长度;
步骤32:生成子染色体V1’,根据步骤31中重组基因串的起止位置确定子染色体的重组位置,该重组位置由父染色体V1所确定的重组基因串中的基因进行填充,其排列顺序由基因在父染色体V2中出现的顺序决定,剩余基因与父染色体V1中剩余基因完全相同;
步骤33:生成子染色体V2’,根据步骤31中重组基因串的起止位置确定子染色体的重组位置,该重组位置由父染色体V2所确定的重组基因串中的基因进行填充,其排列顺序由基因在父染色体V1中出现的顺序决定,剩余基因与父染色体V2中剩余基因完全相同。
进一步地,所述多点交叉法具体为:
步骤34:在配对的父染色体V1和V2中,随机确定若干个重组基因,位置可不连续,但两条父染色体中被选位置相同;
步骤35:生成子染色体V1’,根据步骤34确定的重组基因位置,获取父染色体V1中首个连续重组基因子串的起止位置,并由该起止位置确定子染色体的重组位置,该重组位置上的基因由上述连续重组基因子串中的基因进行填充,排列顺序由其在父染色体V2中出现的顺序决定,获取下一个连续重组基因子串,并按上述填充方式对子染色体相应的基因位置进行填充,直到父染色体V1中所有连续重组基因子串重组完毕,剩余基因与父染色体V1中剩余基因完全相同;
步骤36:生成子染色体V2’,根据步骤34确定的重组基因位置,获取父染色体V2中首个连续重组基因子串的起止位置,并由该起止位置确定子染色体的重组位置,该重组位置上的基因由上述连续重组基因子串中的基因进行填充,排列顺序由其在父染色体V1中出现的顺序决定,获取下一个连续重组基因子串,并按上述填充方式对子染色体相应的基因位置进行填充,直到父染色体V2中所有连续重组基因子串重组完毕,剩余基因与父染色体V2中剩余基因完全相同。
进一步地,所述基于动态工序偏序关系表的插入式变异法具体步骤为:
步骤41:随机确定变异父染色体中的某一变异基因;
步骤42:识别产品动态工序偏序关系表,获取该变异基因工序的紧前工序和紧后工序,并获取其在变异父染色体中的位置;
步骤43:将该变异基因插入至其紧后工序之前,且最靠近该变异基因工序的紧前工序之后的任意位置;若该变异基因工序无紧前工序,即该变异基因工序为叶节点工序,则随机将其插入至其紧后工序之前的任意位置;若该变异基因工序为根节点工序或该变异基因工序与其紧前工序和紧后工序紧密相连,则随机重新选择另一个变异基因。
进一步地,所述基于动态工序偏序关系表的混乱式变异法具体步骤为:
步骤44:在变异父染色体V中,随机确定变异基因串的起止位置,并且保证变异基因串中基因数大于1且不等于整条染色体的长度;
步骤45:将变异基因串中各基因加入基因栈,使得在同一基因栈内各工序均满足优先约束关系,而不同基因栈之间不存在约束关系;
即从后向前依次读取变异基因串中的一个基因作为当前待入栈基因,假设当前待入栈基因为Q1,识别动态工序偏序关系表,判断变异基因串中Q1之后的每个工序基因是否与工序基因Q1之间存在优先约束关系,若存在某一工序基因与工序基因Q1之间有约束关系,假设有关系的工序基因为Q2,则将当前待入栈工序基因Q1移入Q2所在的基因栈,即Q1作为该基因栈的栈顶元素;否则,重新开辟新的基因栈,并将当前待入栈基因入栈;重复以上步骤,直到所有变异基因入栈完毕;若执行以上操作后,只存在一个基因栈,则跳转至步骤44;否则,执行步骤46;
步骤46:随机将基因栈中各工序出栈,生成变异后基因子串;
即随机选择某一基因栈,判断该基因栈是否为空,若为空,则重新进行选择;否则,将其栈顶元素出栈作为当前位置的变异基因,重复以上过程,获取下一变异位置上的基因,直到所有基因栈为空;
步骤47:将生成的变异基因子串,放入变异位置,便可得到变异后的子染色体V′,可以看出该子染色体完全满足工序间优先顺序约束关系。
进一步地,所述基于插入的贪婪式解码规则进行解码操作具体步骤为:
步骤51:获取产品工序属性信息,并初始化工序Oi的预开始加工时间si为0,其中1≤i≤n;
步骤52:按从左至右的顺序依次读取染色体中的一个基因,设该基因所对应的工序为Oi,加工设备为Mk,加工时间为tik;
步骤53:计算工序Oi的实际开始加工时间及其完工时间,从前向后依次获取设备Mk上的空闲时间段[ts,te],并判断该空闲时间段是否足以加工该工序,即若max(si,ts)+tik≤te,则令工序Oi的实际开始加工时间Si=max(si,ts),否则,检查下一个设备空闲时间段;若该设备Mk上的所有空闲时间段都不足以加工该工序,则将工序Oi放置在设备Mk的最后进行加工,即令Si=max(si,ck),其中ck为设备Mk上最后一道工序的完工时间;工序Oi的实际完工时间Ci=Si+tik;
步骤54:更新工序Oi紧后工序的预开始加工时间,读取产品动态工序偏序关系表,获取工序Oi的紧后工序,假设当前所获取的工序Oi的紧后工序为Oj,则更新工序Oj的预开始加工时间sj=max{sj,Ci};
步骤55:判断染色体是否读取完毕,若读取完毕,则解码过程结束,产品加工完毕;否则,跳转至步骤52。
本发明与现有技术相比,具有如下优点:
本发明所述方法在产品加工工艺树的基础上,构建其对应的工序偏序关系图,并进一步根据工序偏序关系图得到该产品所对应的动态工序偏序关系表;所设计的基于动态工序偏序关系表的编码方式简单易操作,所生成的染色体完全合法,避免了对不可行解的检测和修复操作所导致的额外工作,同时也克服了以往存在算法所设计的编码方式存在遗漏最优解的风险;分别设计了两种不同的新的交叉变异算子,保证了种群进化过程中子代个体的可行性;给出了一种简单的基于插入的贪婪式解码方法。实验结果表明了所述方法的可行性与优越性。
附图说明
图1为产品A工艺加工树示意图;
图2为产品A工序偏序关系图;
图3为染色体编码示意图;
图4为两点交叉法示意图;
图5为多点交叉法示意图;
图6为基于工序偏序关系表的插入式变异法示意图;
图7为基于工序偏序关系表的混乱式变异法示意图;
图8为调度产品A的甘特图;
图9为调度产品A的另一甘特图;
图10为产品A最优解与平均完工时间变化曲线图。
具体实施方式
下面将结合本发明实施例中的附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
相关定义:
复杂产品:产品必须同时满足以下两个条件:一是产品由一组存在约束关系的工件按照树状工艺图装配而成,二是工件是由一串具有前后约束的工序组成,这样的产品定义为复杂产品。
工艺加工树:在工艺加工树中,每道工序用一个节点进行表示,每个节点由三部分组成,分别表示工序名称、设备名称和加工时间,边的箭头方向代表工序间的优先约束关系。
工序偏序关系图PRG:为了便于看清各工序节点之间的优先约束关系,将产品工艺加工树进行简化,仅描述产品工艺加工树中各工序节点之间的优先顺序关系,进而生成该产品对应的工序偏序关系图。偏序关系图本质上是一个有向无环图,边指明了工序间的偏序关系。
本发明提出一种基于动态工序偏序关系表的复杂产品综合调度方法,
S1:建立动态工序偏序关系表POT
根据工艺加工树生成描述产品工艺加工树中各工序节点之间优先顺序关系的工序偏序关系图,根据工序偏序关系图建立动态工序偏序关系表,所述动态工序偏序关系表行为加工工序,列为偏序关系;所述动态工序偏序关系表中第i行第i列的元素值mij取值为0、1或-1;其中,0表示在工序偏序关系图中工序和偏序关系不相关,1表示在工序偏序关系图中工序是偏序关系的终点,-1表示在工序偏序关系图中工序是偏序关系的起点;
所述动态工序偏序关系表建立的规则为:
(1)工序偏序关系图中每一条边关联两个工序节点,动态工序偏序关系表中的每一行只有两个非0元素,即-1和1,分别指明边的起点工序和终点工序;
(2)每一列中元素值为1的个数为工序偏序关系图中该列对应工序节点的入度,元素值为-1的个数为该列对应工序节点的初度;每个工序节点的初度为0或1,动态工序偏序关系表中每列中元素值-1最多只能出现一次;
(3)若在调度过程中,某一列中元素值全为0,则该列对应的工序已调度加工,即该工序处于已调度工序集;
(4)针对同一件复杂产品,当产品所对应的工序偏序关系图中结点或边的编号不同时,其对应的动态工序偏序关系表仅有行序或列序的差别。
在动态工序偏序关系表中,每列记录了工序节点信息,每行记录了两工序节点之间的优先加工顺序信息,这样工序偏序关系表POT不仅便于看清各工序节之间优先顺序的关系,更便于产品信息的录入。根据上述描述以及产品工序偏序关系图,建立的复杂产品A所对应的工序偏序关系表如表1所示。
表1产品A工序偏序关系图(PRG)对应的工序偏序关系表(POT)
S2:基于动态工序偏序关系表进行染色体编码
为使编码后的染色体中各工序基因能够满足复杂产品所规定的优先顺序约束关系,本发明采用基于工序的编码方式,通过识别动态工序偏序关系表,获取当前时刻的待调度工序集,随机确定某一可调度工序进行加工,即编码后染色体中基因位上的数字表示复杂产品的工序编号;
所述基于动态工序偏序关系表进行染色体编码,具体步骤为:
步骤21:对产品动态工序偏序关系表进行识别,得到当前时刻待调度工序集S;
所述步骤21具体为:
根据动态工序偏序关系表的建立规则可知,若表中第j列的所有元素值m.j的非零元素仅为-1,则此刻没有边指向结点工序Oj,即当前时刻没有其他任何工序偏序于工序Oj,也就是说没有工序需要先于工序Oj加工,因此,工序Oj为当前时刻的可调度工序,遍历表中的每一列,找出所有m.j非零元素仅为-1的列元素所对应的工序,便可以得到当前时刻的待调度工序集。
步骤22:任选待调度工序集中的可调度工序Oi作为此刻的调度工序,同时更新动态工序偏序关系表;
所述步骤22具体为:
若当前所选择的工序为Oi,则调度加工该工序,并将工序Oi从待调度工序集中删除,将其加入到已调度工序集;同时令动态工序偏序关系表中第i行的所有元素值mi.中非零元素所对应行的所有元素值置0,即解除工序Oi对其紧后工序的优先约束关系。
步骤23:重复步骤21,判断此刻所得的待调度工序集是否为空,若为空集,则染色体编码过程结束,产品调度加工完成,否则,跳转至步骤22。
通过上述所述的基于动态工序偏序关系表的编码方法,可以得到一条完全满足产品各工序优先顺序约束的染色体,图3为对复杂产品A应用上述编码方法所得到的染色体编码示意图。
编码之后本发明采用轮盘赌选择法同时辅以精英保留策略进行选择操作以使优良个体的性状以更大的概率遗传给子代。
S3:交叉操作
采用两点交叉法或多点交叉法进行交叉操作,使得子代个体工序间满足顺序约束关系,并且子代个体能继承父代优良性状;
所述两点交叉法具体为:
步骤31:在配对的父染色体V1和V2中,随机确定重组基因串的起止位置,两条父染色体中被选位置相同,并且保证重组基因串中基因数大于1且不等于整条染色体的长度;
步骤32:生成子染色体V1’,根据步骤31中重组基因串的起止位置确定子染色体的重组位置,该重组位置由父染色体V1所确定的重组基因串中的基因进行填充,其排列顺序由基因在父染色体V2中出现的顺序决定,剩余基因与父染色体V1中剩余基因完全相同;子染色体V1’的生成过程如图4中(a)所示;
步骤33:生成子染色体V2’,根据步骤31中重组基因串的起止位置确定子染色体的重组位置,该重组位置由父染色体V2所确定的重组基因串中的基因进行填充,其排列顺序由基因在父染色体V1中出现的顺序决定,剩余基因与父染色体V2中剩余基因完全相同。子染色体V2’的生成过程如图4中(b)所示。
所述多点交叉法具体为:
步骤34:在配对的父染色体V1和V2中,随机确定若干个重组基因,位置可不连续,但两条父染色体中被选位置相同;
步骤35:生成子染色体V1’,根据步骤34确定的重组基因位置,获取父染色体V1中首个连续重组基因子串的起止位置,并由该起止位置确定子染色体的重组位置,该重组位置上的基因由上述连续重组基因子串中的基因进行填充,排列顺序由其在父染色体V2中出现的顺序决定,获取下一个连续重组基因子串,并按上述填充方式对子染色体相应的基因位置进行填充,直到父染色体V1中所有连续重组基因子串重组完毕,剩余基因与父染色体V1中剩余基因完全相同;子染色体V1’的生成过程如图5中(a)所示。
步骤36:生成子染色体V2’,根据步骤34确定的重组基因位置,获取父染色体V2中首个连续重组基因子串的起止位置,并由该起止位置确定子染色体的重组位置,该重组位置上的基因由上述连续重组基因子串中的基因进行填充,排列顺序由其在父染色体V1中出现的顺序决定,获取下一个连续重组基因子串,并按上述填充方式对子染色体相应的基因位置进行填充,直到父染色体V2中所有连续重组基因子串重组完毕,剩余基因与父染色体V2中剩余基因完全相同。子染色体V2’的生成过程如图5中(b)所示。
上述两种交叉方式都是将被选中的基因以其在配对父染色体中出现的顺序来填充交叉位置的方式生成子染色体,由于所选基因串中基因在配对染色体中出现的顺序必然满足顺序约束条件,因此,所生成的子染色体中基因出现的顺序必然是合法的。证明如下:设O1和O2分别为某一合法配对染色体上两道相邻的工序,那么O1和O2之间的约束关系可能存在两种情况,一种情况是O1和O2之间不存在顺序约束,另一种情形则是O1和O2之间存在优先顺序约束限制。在第一种情形下,无论工序O1、O2在配对的另外一条合法染色体中出现的顺序如何,所产生的子染色体中O1和O2都是满足约束条件的;在第二种情形下,由于两条配对父染色体都为合法染色体,故工序O1和O2在两条父染色体中出现的顺序必然相同,因此,在所产生的子染色体中工序O1和O2必然满足原顺序约束条件。
当所选的交叉位置间的基因数大于2时,可以看成两个基因与一个基因不断累加的结果,同理亦可证明。其中,多点交叉法可以看成是两点交叉法的累加,也可证明所生产子染色体的合法性。因此,上述所述两种交叉方式都能够保证所产生的子染色体满足约束条件,即不会产生不可行解。
S4:变异操作
采用基于动态工序偏序关系表的插入式变异法或基于动态工序偏序关系表的混乱式变异法进行变异操作;经变异后所产生的子代不包含不可行解;
所述基于动态工序偏序关系表的插入式变异法具体步骤为:
步骤41:随机确定变异父染色体中的某一变异基因;
步骤42:识别产品动态工序偏序关系表,获取该变异基因工序的紧前工序和紧后工序,并获取其在变异父染色体中的位置;
步骤43:将该变异基因插入至其紧后工序之前,且最靠近该变异基因工序的紧前工序之后的任意位置;若该变异基因工序无紧前工序,即该变异基因工序为叶节点工序,则随机将其插入至其紧后工序之前的任意位置;若该变异基因工序为根节点工序或该变异基因工序与其紧前工序和紧后工序紧密相连,则随机重新选择另一个变异基因。
对复杂产品A的一条变异染色体执行上述变异操作的过程如图6所示。
所述基于动态工序偏序关系表的混乱式变异法具体步骤为:
步骤44:在变异父染色体V中,随机确定变异基因串的起止位置,并且保证变异基因串中基因数大于1且不等于整条染色体的长度;
步骤45:将变异基因串中各基因加入基因栈,使得在同一基因栈内各工序均满足优先约束关系,而不同基因栈之间不存在约束关系;
即从后向前依次读取变异基因串中的一个基因作为当前待入栈基因,假设当前待入栈基因为Q1,识别动态工序偏序关系表,判断变异基因串中Q1之后的每个工序基因是否与工序基因Q1之间存在优先约束关系,若存在某一工序基因与工序基因Q1之间有约束关系,假设有关系的工序基因为Q2,则将当前待入栈工序基因Q1移入Q2所在的基因栈,即Q1作为该基因栈的栈顶元素;否则,重新开辟新的基因栈,并将当前待入栈基因入栈;重复以上步骤,直到所有变异基因入栈完毕;若执行以上操作后,只存在一个基因栈,则跳转至步骤44;否则,执行步骤46;
步骤46:随机将基因栈中各工序出栈,生成变异后基因子串;
即随机选择某一基因栈,判断该基因栈是否为空,若为空,则重新进行选择;否则,将其栈顶元素出栈作为当前位置的变异基因,重复以上过程,获取下一变异位置上的基因,直到所有基因栈为空;
步骤47:将生成的变异基因子串,放入变异位置,便可得到变异后的子染色体V′,可以看出该子染色体完全满足工序间优先顺序约束关系。
对复杂产品A的一条变异父染色体执行上述变异操作的过程如图7所示。
S5:解码操作
基于插入的贪婪式解码规则进行解码操作。
所述基于插入的贪婪式解码规则进行解码操作具体步骤为:
步骤51:获取产品工序属性信息,并初始化工序Oi的预开始加工时间si为0,其中1≤i≤n;
步骤52:按从左至右的顺序依次读取染色体中的一个基因,设该基因所对应的工序为Oi,加工设备为Mk,加工时间为tik;
步骤53:计算工序Oi的实际开始加工时间及其完工时间,从前向后依次获取设备Mk上的空闲时间段[ts,te],并判断该空闲时间段是否足以加工该工序,即若max(si,ts)+tik≤te,则令工序Oi的实际开始加工时间Si=max(si,ts),否则,检查下一个设备空闲时间段;若该设备Mk上的所有空闲时间段都不足以加工该工序,则将工序Oi放置在设备Mk的最后进行加工,即令Si=max(si,ck),其中ck为设备Mk上最后一道工序的完工时间;工序Oi的实际完工时间Ci=Si+tik;
步骤54:更新工序Oi紧后工序的预开始加工时间,读取产品动态工序偏序关系表,获取工序Oi的紧后工序,假设当前所获取的工序Oi的紧后工序为Oj,则更新工序Oj的预开始加工时间sj=max{sj,Ci};
步骤55:判断染色体是否读取完毕,若读取完毕,则解码过程结束,产品加工完毕;否则,跳转至步骤52。
复杂产品综合调度方法设计的核心在于如何处理综合调度问题中各工序之间的优先顺序约束关系。本发明所设计的工序偏序关系表是基础,后续的编码、交叉变异等操作都是以工序偏序关系表为基础展开进行的。基于动态工序偏序关系表的编码方式保证了初始种群的多样性,所设计的交叉变异操作不但具有较好的进化搜索能力,而且也避免了产生不可行解。下面通过具体实验数据和结果来表明本发明的可行性、收敛性与优越性。
可行性
以图1所示的复杂产品A工艺加工树为例,实验中各参数设置为:初始种群规模为100,遗传代数为50,交叉概率为0.8,变异概率为0.05,利用MATLAB语言编程实现,并独立运行求解10次。在方法运行求解的10次过程中,求解结果完工时间的平均值为170,是复杂产品A调度问题的理论最优解。图8和图9分别为采用本发明所述方法求得的部分调度甘特图。图8所示调度顺序为A 11、A 14、A 18、A 17、A5、A 13、A 9、A 16、A 10、A 4、A 12、A 7、A 15、A 6、A8、A 3、A 2、A 1,总加工用时为170工时。图9所示调度顺序为:A 13、A 11、A 18、A 17、A 5、A 15、A 9、A 16、A 12、A 10、A 14、A 6、A 8、A 7、A 4、A 3、A 2、A 1,总加工用时为170工时。
收敛性
本发明所述方法执行过程中每代平均完工时间与最优解的取值情况的变化曲线如图10所示。由变化曲线可知针对复杂产品A的调度问题,所述方法在第20代左右开始趋近于最优解。因此,本发明所述方法设计的基于约束关系矩阵的复杂产品综合调度方法具有较快的收敛速度。
优越性
将本发明所述方法与复杂产品综合调度的三种代表性算法:拟关键路径法、层优先调度算法、动态关键路径法进行对比,所得的调度结果如表2所示。本本发明所述方法加工用时为170工时,达到了理论最优解。
表2四种调度算法加工用时对比
综上所述,基于动态工序偏序关系表的复杂产品综合调度方法为解决一般复杂产品的综合调度提供了一种新的方法,并为进一步深入研究综合调度拓展了思路,具有一定的理论和实际意义。
以上对本发明所提供的一种基于动态工序偏序关系表的复杂产品综合调度方法,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种基于动态工序偏序关系表的复杂产品综合调度方法,其特征在于:
S1:建立动态工序偏序关系表
根据工艺加工树生成描述产品工艺加工树中各工序节点之间优先顺序关系的工序偏序关系图,根据工序偏序关系图建立动态工序偏序关系表,所述动态工序偏序关系表行为加工工序,列为偏序关系;所述动态工序偏序关系表中第i行第j列的元素值mij取值为0、1或-1;其中,0表示在工序偏序关系图中工序和偏序关系不相关,1表示在工序偏序关系图中工序是偏序关系的终点,-1表示在工序偏序关系图中工序是偏序关系的起点;
S2:基于动态工序偏序关系表进行染色体编码
采用基于工序的编码方式,通过识别动态工序偏序关系表,获取当前时刻的待调度工序集,随机确定某一可调度工序进行加工,即编码后染色体中基因位上的数字表示复杂产品的工序编号;
S3:交叉操作
采用两点交叉法或多点交叉法进行交叉操作,使得子代个体工序间满足顺序约束关系,并且子代个体能继承父代优良性状;
S4:变异操作
采用基于动态工序偏序关系表的插入式变异法或基于动态工序偏序关系表的混乱式变异法进行变异操作;经变异后所产生的子代不包含不可行解;
S5:解码操作
基于插入的贪婪式解码规则进行解码操作;
所述基于动态工序偏序关系表进行染色体编码,具体步骤为:
步骤21:对动态工序偏序关系表进行识别,得到当前时刻待调度工序集S;
步骤22:任选待调度工序集中的可调度工序Oi作为此刻的调度工序,同时更新动态工序偏序关系表;
步骤23:重复步骤21,判断此刻所得的待调度工序集是否为空,若为空集,则染色体编码过程结束,产品调度加工完成,否则,跳转至步骤22;
所述步骤22具体为:
若当前所选择的工序为Oi,则调度加工该工序,并将工序Oi从待调度工序集中删除,将其加入到已调度工序集;同时令动态工序偏序关系表中第i行的所有元素值mi.中非零元素所对应行的所有元素值置0,即解除工序Oi对其紧后工序的优先约束关系,其中,i.表示第i行的所有元素。
2.根据权利要求1所述的方法,其特征在于:所述动态工序偏序关系表建立的规则为:
(1)工序偏序关系图中每一条边关联两个工序节点,动态工序偏序关系表中的每一行只有两个非0元素,即-1和1,分别指明边的起点工序和终点工序;
(2)每一列中元素值为1的个数为工序偏序关系图中该列对应工序节点的入度,元素值为-1的个数为该列对应工序节点的初度;每个工序节点的初度为0或1,动态工序偏序关系表中每列中元素值-1最多只能出现一次;
(3)若在调度过程中,某一列中元素值全为0,则该列对应的工序已调度加工,即该工序处于已调度工序集;
(4)针对同一件复杂产品,当产品所对应的工序偏序关系图中结点或边的编号不同时,其对应的动态工序偏序关系表仅有行序或列序的差别。
3.根据权利要求1所述的方法,其特征在于:所述步骤21具体为:
根据动态工序偏序关系表的建立规则可知,若表中第j列的所有元素值m.j的非零元素仅为-1,则此刻没有边指向结点工序Oj,即当前时刻没有其他任何工序偏序于工序Oj,也就是说没有工序需要先于工序Oj加工,因此,工序Oj为当前时刻的可调度工序,遍历表中的每一列,找出所有m.j非零元素仅为-1的列元素所对应的工序,便可以得到当前时刻的待调度工序集,其中,.j表示第j列的所有元素。
4.根据权利要求1-3中任一项所述的方法,其特征在于:所述两点交叉法具体为:
步骤31:在配对的父染色体V1和V2中,随机确定重组基因串的起止位置,两条父染色体中被选位置相同,并且保证重组基因串中基因数大于1且不等于整条染色体的长度;
步骤32:生成子染色体V1’,根据步骤31中重组基因串的起止位置确定子染色体的重组位置,该重组位置由父染色体V1所确定的重组基因串中的基因进行填充,其排列顺序由基因在父染色体V2中出现的顺序决定,剩余基因与父染色体V1中剩余基因完全相同;
步骤33:生成子染色体V2’,根据步骤31中重组基因串的起止位置确定子染色体的重组位置,该重组位置由父染色体V2所确定的重组基因串中的基因进行填充,其排列顺序由基因在父染色体V1中出现的顺序决定,剩余基因与父染色体V2中剩余基因完全相同。
5.根据权利要求1-3中任一项所述的方法,其特征在于:所述多点交叉法具体为:
步骤34:在配对的父染色体V1和V2中,随机确定若干个重组基因,位置可不连续,但两条父染色体中被选位置相同;
步骤35:生成子染色体V1’,根据步骤34确定的重组基因位置,获取父染色体V1中首个连续重组基因子串的起止位置,并由该起止位置确定子染色体的重组位置,该重组位置上的基因由上述连续重组基因子串中的基因进行填充,排列顺序由其在父染色体V2中出现的顺序决定,获取下一个连续重组基因子串,并按上述填充方式对子染色体相应的基因位置进行填充,直到父染色体V1中所有连续重组基因子串重组完毕,剩余基因与父染色体V1中剩余基因完全相同;
步骤36:生成子染色体V2’,根据步骤34确定的重组基因位置,获取父染色体V2中首个连续重组基因子串的起止位置,并由该起止位置确定子染色体的重组位置,该重组位置上的基因由上述连续重组基因子串中的基因进行填充,排列顺序由其在父染色体V1中出现的顺序决定,获取下一个连续重组基因子串,并按上述填充方式对子染色体相应的基因位置进行填充,直到父染色体V2中所有连续重组基因子串重组完毕,剩余基因与父染色体V2中剩余基因完全相同。
6.根据权利要求1所述的方法,其特征在于:所述基于动态工序偏序关系表的插入式变异法具体步骤为:
步骤41:随机确定变异父染色体中的某一变异基因;
步骤42:识别动态工序偏序关系表,获取变异基因工序的紧前工序和紧后工序,并获取其在变异父染色体中的位置;
步骤43:将该变异基因工序插入至其紧后工序之前,且最靠近该变异基因工序的紧前工序之后的任意位置;若该变异基因工序无紧前工序,即该变异基因工序为叶节点工序,则随机将其插入至其紧后工序之前的任意位置;若该变异基因工序为根节点工序或该变异基因工序与其紧前工序和紧后工序紧密相连,则随机重新选择另一个变异基因。
7.根据权利要求1所述的方法,其特征在于:所述基于动态工序偏序关系表的混乱式变异法具体步骤为:
步骤44:在变异父染色体V中,随机确定变异基因串的起止位置,并且保证变异基因串中基因数大于1且不等于整条染色体的长度;
步骤45:将变异基因串中各基因加入基因栈,使得在同一基因栈内各工序均满足优先约束关系,而不同基因栈之间不存在约束关系;
即从后向前依次读取变异基因串中的一个变异基因作为当前待入栈基因,假设当前待入栈基因为Q1,识别动态工序偏序关系表,判断变异基因串中Q1之后的每个变异基因是否与变异基因Q1之间存在优先约束关系,若存在某一变异基因与变异基因Q1之间有约束关系,假设有关系的变异基因为Q2,则将当前待入栈变异基因Q1移入Q2所在的基因栈,即Q1作为该基因栈的栈顶元素;否则,重新开辟新的基因栈,并将当前待入栈基因入栈;重复以上步骤,直到所有变异基因入栈完毕;若执行以上操作后,只存在一个基因栈,则跳转至步骤44;否则,执行步骤46;
步骤46:随机将基因栈中各变异基因出栈,生成变异后基因子串;
即随机选择某一基因栈,判断该基因栈是否为空,若为空,则重新进行选择;否则,将其栈顶元素出栈作为当前位置的变异基因,重复以上过程,获取下一变异位置上的基因,直到所有基因栈为空;
步骤47:将生成的变异基因子串,放入变异位置,便可得到变异后的子染色体V',可以看出该子染色体完全满足工序间优先顺序约束关系。
8.根据权利要求1所述的方法,其特征在于:所述基于插入的贪婪式解码规则进行解码操作具体步骤为:
步骤51:获取产品工序属性信息,并初始化工序Oi的预开始加工时间si为0,其中1≤i≤n;
步骤52:按从左至右的顺序依次读取染色体中的一个基因,设该基因所对应的工序为Oi,加工设备为Mk,加工时间为tik;其中,k表示设备序号;
步骤53:计算工序Oi的实际开始加工时间及其完工时间,从前向后依次获取设备Mk上的空闲时间段[ts,te],并判断该空闲时间段是否足以加工该工序,即若max(si,ts)+tik≤te,则令工序Oi的实际开始加工时间Si=max(si,ts),否则,检查下一个设备空闲时间段;若该设备Mk上的所有空闲时间段都不足以加工该工序,则将工序Oi放置在设备Mk的最后进行加工,即令Si=max(si,ck),其中ck为设备Mk上最后一道工序的完工时间;工序Oi的实际完工时间Ci=Si+tik;其中,ts为空闲时间段的起始时间,te为空闲时间段的结束时间;
步骤54:更新工序Oi紧后工序的预开始加工时间,读取动态工序偏序关系表,获取工序Oi的紧后工序,假设当前所获取的工序Oi的紧后工序为Oj,则更新工序Oj的预开始加工时间sj=max{sj,Ci};
步骤55:判断染色体是否读取完毕,若读取完毕,则解码过程结束,产品加工完毕;否则,跳转至步骤52。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910212478.3A CN109978365B (zh) | 2019-03-20 | 2019-03-20 | 一种基于动态工序偏序关系表的复杂产品综合调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910212478.3A CN109978365B (zh) | 2019-03-20 | 2019-03-20 | 一种基于动态工序偏序关系表的复杂产品综合调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109978365A CN109978365A (zh) | 2019-07-05 |
CN109978365B true CN109978365B (zh) | 2020-11-03 |
Family
ID=67079711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910212478.3A Expired - Fee Related CN109978365B (zh) | 2019-03-20 | 2019-03-20 | 一种基于动态工序偏序关系表的复杂产品综合调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109978365B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111369036B (zh) * | 2020-02-18 | 2020-11-24 | 吉林师范大学 | 一种基于Dijkstra算法的综合调度方法 |
CN113283819B (zh) * | 2021-07-21 | 2021-10-01 | 武汉科技大学 | 基于规则解码的Job Shop调度问题求解方法及系统 |
CN114611885B (zh) * | 2022-02-22 | 2022-10-14 | 吉林师范大学 | 一种基于特殊设备的综合调度方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009163511A (ja) * | 2008-01-07 | 2009-07-23 | Mazda Motor Corp | 部品搬送ダイヤの設定方法 |
CN104636813B (zh) * | 2013-11-12 | 2018-02-06 | 中国科学院沈阳计算技术研究所有限公司 | 一种求解车间作业调度问题的混合遗传模拟退火算法 |
-
2019
- 2019-03-20 CN CN201910212478.3A patent/CN109978365B/zh not_active Expired - Fee Related
Non-Patent Citations (3)
Title |
---|
《基于改进遗传算法的流水线第Ⅱ类平衡问题优化研究》;司徒洁芸等;《轻工机械》;20180228(第1期);第99-102页 * |
《多目标柔性Job-Shop调度问题及求解算法研究》;温明星;《中国优秀硕士论文全文数据库》;20130430;第13-14页 * |
《存在柔性加工设备的二车间综合调度算法研究》;高一龙;《中国优秀硕士论文全文数据库》;20180331;第19-23页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109978365A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109978365B (zh) | 一种基于动态工序偏序关系表的复杂产品综合调度方法 | |
CN109299142B (zh) | 一种基于进化算法的卷积神经网络结构搜索方法及系统 | |
Mattfeld | Evolutionary search and the job shop: investigations on genetic algorithms for production scheduling | |
US7668788B2 (en) | Resource assignment optimization using direct encoding and genetic algorithms | |
Wang et al. | Inventory based two-objective job shop scheduling model and its hybrid genetic algorithm | |
Huang et al. | An improved genetic algorithm for job-shop scheduling problem with process sequence flexibility | |
Kasemset et al. | A PSO-based procedure for a bi-level multi-objective TOC-based job-shop scheduling problem | |
US20200040329A1 (en) | Systems and methods for predicting repair outcomes in genetic engineering | |
JP7432087B2 (ja) | エネルギースケジュールを含むデータ構造、およびエネルギースケジュールを含むデータ構造を提供するための方法 | |
CN112884370B (zh) | 考虑订单插单的高端装备研制过程多项目重调度方法及系统 | |
Dawood et al. | Priority-based decision support system (PBDSS) by genetic algorithm as a tool for network problem | |
CN114707808A (zh) | 一种基于动态根节点工序集的逆序设备网络综合调度方法 | |
Sugino et al. | Theoretical modeling on CRISPR-coded cell lineages: efficient encoding and optimal reconstruction | |
CN113807646B (zh) | 无人机与车辆协同任务分配的智能优化方法和系统 | |
CN114550822A (zh) | 一种基于智能优化算法的繁殖指导方法及装置 | |
Yamamoto et al. | A refined case based genetic algorithm for intelligent route optimization | |
Sooriyakumar et al. | Design optimisation for permanent magnet synchronous motors using genetic algorithm | |
Maia et al. | Evolutionary algorithms for the bi-objective adjacent only quadratic spanning tree | |
Yao et al. | Fusing genetic algorithm and ant colony algorithm to optimize virtual enterprise partner selection problem | |
Ismail et al. | Diversity guided genetic algorithm to solve the resource constrained project scheduling problem | |
Botsalı | Comparison of simulated annealing and genetic algorithm approaches on integrated process routing and scheduling problem | |
CN111783988B (zh) | 求解环境经济调度问题的多目标灰色预测演化方法及系统 | |
CN112488387B (zh) | 一种基于多目标优化算法的软件产品线配置方法 | |
Fuji et al. | Research on repair operators in the whole space search genetic algorithm of assembly job shop scheduling problem | |
Lim et al. | Constraint handling in genotype to phenotype mapping and genetic operators for project staffing |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20201103 |