当前位置:
文档之家› 基于遗传算法求解作业车间调度问题
基于遗传算法求解作业车间调度问题
西安交通大学管理学院
3 用遗传算法对具体问题的解决
遗传算法在解决作业车间调度问题上比经典的启发式算法好, 同时遗传算法比传统 的搜索技术有更强的优越性,因为它不仅能解决某一特定问题,而且可以适应不同的问 题形式。 3.1 参数编码 遗传编码技术是实施遗传算法的核心。 遗传算法的工作基础是选择适当的方法表示 个体和问题的解,对于同一问题可以有不同的编码表示方法。由于遗传算法不能直接处 理空间解的数据, 在解决此车间调度问题上把它们转换成遗传空间的基因按一定结构组 成的染色体或个体,也就是通过编码将它们表示成遗传空间的基因型串结构数据。 我们采用了基于操作的编码来解此车间调度问题, 其基本思想是将所有工件的操作 进行编码,不同的工件用不同的编码表示,而同一工件的所有操作在染色体中则用相同 的编码表示, 其解码原则是将染色体上的基因按照从左到右的顺序解释为相应工件的操 作顺序,具有相同编码的基因按照其在整个染色体中的位置解释为工件相应顺序的操 作。
西安交通大学管理学院
基于遗传算法求解作业车间调度问题
1 绪论
1.1 作业车间调度问题表述
作业车间是指利用车间资源完成的某项任务,在实际生产中,这项任务可能是装配 一种产品,也可能是完成一批工件的加工,为了研究方便,我们将这项任务限定为加工 一批工件。在此基础上,可对作业车间调度问题进行一般性的描述:假定有 N 个工件, 要经过 M 台机器加工,一个工件在一台机器上的加工程序称为一道“工序” ,相应的加工 时间称为该工序的“加工时间”,用事先给定的“加工路线”表示工件加工时技术上的 约束,即工件的加工工艺过程,用“加工顺序”表示各台机器上各个工件加工的先后顺 序。 在车间作业调度问题中,每个工件都有独特的加工路线,我们要解决的问题就是如 何分配 N 个零件在 M 个机器上的加工顺序以使得总的加工时间最短。
f (M n 即M j )} 。 j 使得目标函数 f ( M j ) 取值最小(或最大),
且与 J M 相容,则称 M j 为车间作业调度问题在此目标函数下的最优解。
2 基本遗传算法
遗传算法是一种基于自然群体遗传演化机制的高效探索算法,由美国学者 Holland 于 1975 年首先提出来的,通过模拟达尔文的遗传选择和自然淘汰的生物进化过程来求 解。它将问题域中的可能解看作是群体的一个个体或染色体,并将每一个体编码成符号 串形式,对群体反复进行基于遗传学的操作(遗传,交叉和变异) ,根据预定的目标适 应度函数对每个个体进行评价,依据适者生存,优胜劣汰的进化规则,不断得到更优的 群体, 同时以全局并行搜索方式来搜索优化群体中的最优个体, 求得满足要求的最优解。 2.1 遗传算法的基本思路 1.首先确定问题的求解空间; 2.将求解空间中的每一个点进行编码,并从求解空间中任选 N 个点组成初始群体; 3.计算当前群体中每个个体的适应度函数值,然后运用选择、交叉、变异算子产生
M22 …
西安交通大学管理学院
: Mn1
: Mn2
: …
: MnM
(3.2)
其中第 J 行表示第 J 个工件的机器顺序.机器号为零表示工件加工结束。 相应的每个加工操作有时间矩阵: T11 T21 T(J,M)= : TN1 T12 T22 : TN2 … … : … T1M T2M : TNM (3.3)
00 0 0 0 Pi P 1 1
Pi P 1
(1.3)
M j :工件排列阵,此为 max{P 1, P 2,
Pn } n 矩阵。 M j (i, j ) 表示在 i 机器上排在第 j
位加工的工件号, M j (i, •) 表示 i 机器上依次加工的各工件的排列。同上,如果某工件的 工序数不足 max{P 1, P 2, 度的一种表示形式。 由此,我们可以给出一般性的车间作业调度数学模型的定义:
西安交通大学管理学院
6. 不考虑工件加工的优先权,即工件之间没有优先约束关系限制的; 7. 工序允许等待,即前一个工序未完成,则后面工序需要等待; 8. 工件的加工时间事先给定,且在整个加工过程中保持不变。 1.2.2 车间作业调度问题的数学模型 建立车间作业调度问题的数学模型,是我们研究该问题的出发点,同时也为其后的 研究奠定了基础。 假设有 n 个工件,要在 m 台机器上加工,每个工件有 Pi 道工序,每台机器上总共 要加工 Lj 道工序。我们定义以下基本数学符号 J:所有工件的集合, J {J1 , J 2 ,
西安交通大学管理学院
新一代群体; 4.对新一代群体中的每个个体进行评价,若找到满足问题的最优解则结束;否则, 转步骤 3。 2.2 基本遗传算法参数说明 对遗传算法性能有影响的参数主要有:种群数目 N、交换概率 Pc、变异概率 Pm、代 沟 G、尺度窗口 W、和选择策略 S 等。 1.种群数目 种群数目 N 的多少直接影响到遗传算法的优化性能和效率。种群选择太小时,不能 提供足够多的个体,致使算法性能较差,易产生早熟收敛,甚至不能得到可行解 ;种群 选择过大时,虽然能避免早熟收敛,但是增加了计算量。 2.交换概率 交换概率 Pc 用于控制交换操作的频率。交换概率太大的时,易产生更新过快,从而 破坏掉高适应度个体的现象;交换概率太小的时候又容易产生搜索停滞不前的现象。 3.变异概率 变异概率 Pm 对于增加种群多样性具有重要意义。如果变异概率太大的时,遗传算 法易变成随机搜索,如果变异概率太小,则不能产生新个体,不利于种群的多样性。 4.代沟 代沟 G 用于控制每一代群体被替换的比例,每代有 N×(1-G)个父代个体选中进入 下一代种群中,该参数和交换、变异概率以及选择策略有很大关系,它并不是一个初始 参数,而是评价遗传算法的一个参数。 5.尺度窗口 该参数用于作出由目标值到适应度函数值的调整。 6.选择策略 一般来说有两种选择策略,一种为纯选择,种群中每个个体根据其适应度值进行比 例选择,即个体被选择的概率与其适应度值成正比。另一种为保优策略,首先进行纯选 择,把目前最优个体直接加入下一代种群中,该策略是为了防止最优解的丢失,但在实 际应用中往往采取这两种选择策略结合的方法,并做适当的变型。
(1.2)
T:加工时间阵,此为 n max{P 1, P 2,
Pn } 矩阵。T(i, j)表示工件 i 的第 j 道工序在 J M Pn } ,那么其空
(i,j)上的加工时间。同样地,如果某工件的工序数不足 max{P 1, P 2,
西安交通大学管理学院
余的位置用 0 填满。
P 1 TP TP TPj P j11 j1 2 11 T TPjn 1 TPjn 2 TPjn p1 TPjn ( Pi 1) Pi 1
Pi P 1
(1.1)
J M :机器顺序阵,此为 n max{P 1, P 2,
Pn } 矩阵。 J M (i,j)表示 i 工件的第 j 道工
序的机器号, J M (i, •) 表示 i 工件的所有工序按优先顺序加工的各机器号的排列。注意: 如果某工件的工序数不足 max{P 1, P 2,
J n} ;
[6]
:
M:所有机器的集合, M {M1 , M 2 ,
M m} ;
Pji pi } ;
Pji :工件 Ji 的工序集合, Pji {Pji 1 , Байду номын сангаасji 2 ,
P:所有工序的集合,此为 n max{P 1, P 2,
Pn } 矩阵。P(i,j)表示 i 工件的第 j 道工 Pn } ,那
Pn } ,那么其空余的位置用 0 填满。
00 0 0 0 Pi P 1 1
Pi P 1
P 1 MP MP M Pj P j11 j1 2 11 JM M Pjn 1 M Pjn 2 M Pjn p1 M Pjn ( Pi 1) Pi 1
西安交通大学管理学院
3.4
遗传算子的设计
1.选择算子 选择操作是对自然界“适者生存”的模拟。评价值(目标函数)较小的个体有较高的 概率生存,即在下一代群体中再次出现。我们采用一种常用的选择方法:按比例选择,即 若个体 i 适应值(目标函数)是 fi,则个体在群体中复制(再生)的子代个数在群体中的比 例将为: f i / f i 。 其中,∑fi 表示指所有个体适应值之和。 对群体中各个体的适应值做比较,将适应值小的个体复制,将适应值大的淘汰掉,这 是因为在作业调度算法中的适应度函数为在 M 台机器上加工完 N 个工件所需的时间, 时间越短,更能达到优化的目的。 2.交叉算子 在用遗传算法解决作业车间调度问题中,在对工序编码的排序问题中 ,交叉算子不 能简单交换两个个体的相应位置的基因段,因为这样得到的后代个体可能不能满足每个 工件号重复 M 次的要求。为了满足我们的工序编码的要求,本文采用下面的交叉算子: 随机将工件集合{1,2,…N}分成两个互补子集,相应的将个体的基因分成两个部分, 然后把父母个体中的 part2 部分用 h 代替形成两个新串, 用第二个父母个体的 part2 部分 按照原来的相对顺序逐个替换第一个父母个体的 part2 产生的新串中的 h ,同样用第一 个父母个体的 part2 按照原来的相对顺序逐个替换第二个父母个体的 prat1 产生的新串 中的 h,得到两个后代个体。 例如:对于一个 4 个工件 4 个机器问题,假如父母个体为: Parent1:1 3 4 2 4 2 3 3 1 4 3 2 1 4 2 1 Parent2:3 2 4 1 1 2 3 4 4 2 3 1 2 4 1 3 假设随机选择工件 1,2,则从 parent1 得到的新串为: New1:1 h h 2 h 2 h h 1 h h 2 1 h 2 1 Part1:1 2 2 1 2 1 2 1 Part2:3 4 4 3 3 4 3 4 同样从 Parent2 得到的新串为 New2:h 2 h 1 1 2 h h h 2 h 1 2 h 1 h Part1: 2 1 1 2 2 1 2 1