生产调度问题—遗传算法

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数学建模与计算》

生产调度问题—遗传算法

背景及摘要

这是一个典型的Job-Shop动态排序问题。目前调度问题的理论研究成果主要集中在以Job-Shop问题为代表的基于最小化完工时间的调度问题上。一个复杂的制造系统不仅可能涉及到成千上万道车间调度工序,而且工序的变更又可能导致相当大的调度规模。解空间容量巨大,N个工件、M台机器的问题包含M

(

N)!

种排列。由于问题的连环嵌套性,使得用图解方法也变得不切实际。传统的运筹学方法,即便在单目标优化的静态调度问题中也难以有效应用。

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

一.问题重述

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

( 表一 )

条件: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 J - 第i 个工件 (i=1…6)

M J - 机器顺序阵 )(j i J M

,表示i 工件的第 j 个操作的机器号

j M - 第j 台机器 (j=1…4)

J M - 工件排列阵 ),(j i M J 表示i 机器上第j 次加工的工件号

T - 加工时间阵 ),(j i T 为i 工件的第 j 个操作的时间周期

C - 整个任务完成时间

整理数据后得到:

J=[ C A B C D 0 0 0 ] T= [ 8 2 4 24 6 0 0 0 ] M

[ A D B C 0 0 0 0 ] [ 4 5 3 4 0 0 0 0 ] [ C D A B A 0 0 0 ] [ 3 7 15 20 8 0 0 0 ] [ B C D A D C 0 0 ] [ 7 6 21 1 16 3 0 0 ] [ D B C D A C D 0 ] [ 10 4 8 4 12 6 1 0 ] [ A B A C D A C A ] [ 1 4 7 3 5 2 5 8 ] 上述二阵直接从题目得出,而

M则是我们要求的。

J

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

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

分析:

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

希望最优化答案是75,这样达到最小值,如果答案是75,那么意味着机器D 不间断工作,直至全部加工任务完成。

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

遗传算法(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,那么将目前的最优解作为本算法的最

优解答案。

1.编码

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

1 6 3 5 4 5 3 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 的排列序列 22310 多种!

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

相关文档
最新文档