生产调度问题及其优化算法

  • 格式:docx
  • 大小:90.55 KB
  • 文档页数:14

生产调度问题及其优化算法

<采用遗传算法与 MATLAB编程)

信息014孙卓明

二零零三年八月十四日

生产调度问题及其优化算法

背景及摘要

这是一个典型的Job-

Shop动态排序问题。目前调度问题的理论研究成果主要集中在以 Job

Shop 冋题为代表的基于最小化完工时间的调度冋题上。一个复杂的制造系统不 仅可能涉及到成千上万道车间调度工序,而且工序的变更又可能导致相当大的 调度规模。解空间容量巨大,N个工件、M台机器的问题包含凹 种排列。因 为问题的连环嵌套性,使得用图解方法也变得不切实际。传统的运筹学方法, 即便在单目标优化的静态调度问题中也难以有效应用。

本文给出三个模型。首先通过贪婪法手工求得本问题最优解,既而通过编 解码程序随机模拟优化方案得出最优解。最后采用现代进化算法中有代表性发 展优势的遗传算法。文章有针对性地选取遗传算法关键环节的适宜方法,采用 MATLAB^件实现算法模拟,得出优化方案,并与计算机随机模拟结果加以比较 显示出遗传算法之优化效果。对车间调度系列冋题的有效解决具有一定参考和 借鉴价值。

一•问题重述

某重型机械厂产品都是单件性的,其中有一车间共有 A,B,C,D四种不同设 备,现接受6件产品的加工任务,每件产品接受的程序在指定的设备上加工,其 工序与加工周期如下表:<S-设备号、T-周期)

工序

产品 1 2 3 4 5 6 7 8

S T S T S T S T S T S T S T S T

1 C 8 A 2 B 4 C 1 24 r D 1 6

2 A 4 D 5 B 3 C 4

3 C 3 D 7 A 15 B 1 20 :A : 8

4 B 7 C 6 D 21 A 1 D 16 C 3

5 D 10 B 4 C 8 D 4 :A : 12 C : 6 D 1

6 A 1 B 4 A 7 C 3 D 5 A 2 C 5 A 8

(表一 >

条件:1、每件产品必须按规定的工序加工,不得颠倒;

2每台设备在同一时间只能担任一项任务。

<每件产品的每个工序为一个任务)问题:做出生产安排,希望在尽可能短的时间里,完成所接受的全部任务。 要求:给出每台设备承担任务的时间表。

注:在上面,机器 A B,C,D即为机器1,2,3,4,程序中以数字1,2,3,4表示, 说明时则用A,B, C, D

二•模型假设

1 •每一时刻,每台机器只能加工一个工件,且每个工件只能被一台机器所加 工,同时加工过程为不间断;

2•所有机器均同时开工,且工件从机器I到机器J的转移过程时间损耗不 计;

3 •各工件必须按工艺路线以指定的次序在机器上加工多次;

4 •操作允许等待,即前一操作未完成,则后面的操作需要等待,可用资源有 限。

三•符号说明及初始数据表达分析

第i个工件<i=1…6)

机器顺序阵 二一表示i工件的第j个操作的机器号

第j台机器<j=1…4)

工件排列阵 上| [表示i机器上第j次加工的工件号

加工时间阵—I为i工件的第j个操作的时间周期

-整个任务完成时间

整理数据后得到:

工=[C A B C D 0 0 0 ] ~[ A

D B C 0 0 0 0 ]

[C D A B A 0 0 0 ]

[B C D A D C 0 0 ]

[D B C D A C D 0 ]

[A B A C D A C A ] t = [ 8 2 4 24 6 0 0 0 ] [4 5 3 4

0 0 0 0 ]

[3 7 15 20 8 0 0 0 ]

[7 6 21 1 16 3 0 0]

[10 4 8 4 12 6 1 0]

[1 4 7 3 5 2 5 8 ]

上述二阵直接从题目得岀,而 丨则是我们要求的

关于工件的加工时间表:(表二>

产品/工件<i ): 1 2 3 4 5 6 总计

-总净加工时间 <周期) 44 16 53 54 45 35 247

凶加工工序总数 <个) 5 4 5 6 7 8

35

关于机器的加工时间表:(表三>

机器/设备(j>: A B C D 总计

因总净加工时间 60 42 70 75 247

M加工操作次数 10 6 10 9 35

分析:

因为各产品总净加工时间和各机器总净加工时间之中最大值为 75,而总计为247,

那么总时间C介于[75,247]。同时各工件加工繁杂程度不一,各机器的任务量也有 轻重之别。合理的调度排序是对于节省时间和资源是必要的。

希望最优化答案是75,这样达到最小值,如果答案是 75,那么意味着机器 D不间断

工作,直至全部加工任务完成。 凶-

-

S-

IrJ-

匡- 四•贪婪法快速求解

如果按照一定规则排序,当多个工件出现“抢占”同一机器的局面的时候 我们可以制定如下的工序安排规则:

1. 优先选择总剩余时间或总剩余操作较多的工件。 <如果出现总剩余加工时间

多者总剩余操作数反而较少的情况时,按照程度具体情况具体分析)。

2. 机器方面来说,尽量避免等待空闲时间,优先考虑剩余净加工时间或者剩余

加工总次数较多的机器,尤其是机器D,即倘若能够使机器□不间断工作且其 他机器完工时间均不多余75时,那么就可以得到最优解。

首先按照最优化时间为75的设想避免D出现等待,排序后得到升以下具体 排列顺序。

各机器承担任务表为(其中粗体字为对应工件产品号,括号内为对应时间周期 段>:

操作1 操作2 操作3 操作4 操作5 操作6 操作7 操作8 操作9 操作10

A 6 2 1 6 3 4 5 6 3 6 丁

(1> (2-5> (12-13> (14-20> (21-35> (36> (43-54> (55-56> (57-64> (66-73>

B 4 6 5 1 3 2 「

(1-7> (8-11> (12-15> (16-19> (36-55> (56-58> J

C 3 1 4 5 6 1 : 5 6 : 2 : 4 :

(1-3> (4-11> (12-17> (18-25> (26-28> (29-52> (55-60> (61-65> (66-69> (70-72>

D 5 3 4 5 6 2 4 1 5

(1-10> (11-17> (18-38> (39-42> (43-47> (48-52> (53-68> (69-74> (75>

(表四>

(图一 >

上图为加工周期图 <甘特图),标注数字为相应操作的周期,完工时间为第 75周期

五•计算机随机模拟 < 编程)

1 .编码:

随机产生生产的工序操作优先顺序,进行编码,如: K=[ 4 35 6 6 2 3

1 4

1 6 3 5 4 53 6 6 4 1 5 5 1 3 2 6 2 2 4 4 1 5 6 6 5]<注:同时作为下文的染色体之用)意思为:工件 4优先被考虑进行第一 次操作,然后3进行其第一步操作,然后5操作,6操作,再6操作其第二步 工序,依次进行。如果前后互相不冲突,则可同时在不同机器上操作。

通过排列组合得出,总共有类似K的排列序列2厂I多种!

当然,这其中只对应解[75,247],意味着有大量排列序列对应同一加工 方案,而大量加工方案又对应同一时间解。

2. 解码:

即对编码进行翻译,产生具体可操作工序安排方案,这里采用 活动化解码

算法。例如工件2第i步操作<记为而<2,i),且在机器A上进行)被安排 在工件3第j步操作 <记为JM<3,j))后面进行,那么如果安排好 回 <3,j)后,只要回<2, i)在工件2已经排序好的操作之后进行,那么操 作因<2, i)可插入到机器A处最前可安置的时间段进行。

在这里,一个编码序列对应一个加工方案,而一个加工方案可对应一 个或多个编码序列,这就是二者之关系。

3. 编程:

通过一组随机编码产生一生产加工优先序列,通过解码过程产生相应加工 方案及其总耗费时间C .

N次模拟后即可得出解C的概率密度分布情况以及相对最优解<N个C的最 小值,如80,77等,甚至出现75)。

4. 计算机模拟所得数据分析

a. 进行100次模拟得出最优解情况:(共运行10次>

82,83,82,84,78,80,81,83,87,82 平均值 82.2,每回耗时约 3秒

b. 进行1000次模拟得出最优解情况:(共运行10次 >

80,79,78,78,79,79,76,80,77,78 平均值 78.4 ,每回耗时 25秒

c. 进行10000次模拟得出最优解情况:(共运行10次>

76,77,77,75,76,76,77,76,76,77 平均值 76.3,每回耗时 4分钟

d. 模拟1000000次得到的解C的概率密度分布情况为: <如图二所示)

(图二> <注:75处为 17次 <概率为 17/1000000=1/58823 ), 76处为 40次,77 处 167次)

结论:如果想将24 中排序序列以平均出现一次的可能性进行模拟,

即运行2匕I次,计算机需运行将近150万亿年!当然,我们没有这个 必要,因为我们只需要运行数万次,就很可能得到最优解 75, <在随机

模拟1000000次后出现仃次75,那么意味着概率大约17/1000000=1/58823 ,另外76处为40次,77处167次)。

六•遗传算法模型建立和步骤解法

遗传算法<Genetic

Algorithm )作为一种优化算法特别适合于对象模型难于建立、搜索空间非常庞 大的复杂问题的优化求解。它和模糊控制技术一样,虽然在理论上还没有完善 ,但是在实践中已经得到了广泛的应用。遗传算法的基本思想是:模仿生物系 统适者生成"的原理,通过选择、复制、交叉、变异等简单操作的多次重复来 达到去劣存优的目的,从而获得问题的优化结果。遗传算法的实现由两个部分 组成,一是编码与解码,二是遗传操作。其中遗传操作又包括选择、复制、交 叉、变异等步骤。

本文根据实际情况采取了 1-6整数编码。数字1, 2, 3, 4, 5, 6分别代表 6件待加工产品。

本文遗传算法基本流程:

通过编码,解码程序随机产生 N个 <有一定数量,如50或100)个体构成初始种群

a) 从初始中群中选取2个具有最优染色体 <最有排序方案)的个体作为临时个体 <父

代);

b) 如果此2个体中有一个个体通过解码操作能够实现最优排序 <即使总时间为75周

期),那么结束此算法,得到最优解;

c) 对2个临时个体以一定方式(循环交叉 >执行染色体交叉变换和变异选择 <小概率,互换

操作),产生2个新的个体;

d) 对父代和子代共4个个体进行选择,从中选出最佳的 2个个体,做为下一代的父代;

e) 重复执行第二步(b>操作;

f) 如果执行完M步后仍然未得出答案 75,那么将目前的最优解作为本算法的最优解答 案。